diff options
| author | Harsh Jain <h.jain@amd.com> | 2025-12-20 21:28:54 +0530 |
|---|---|---|
| committer | Herbert Xu <herbert@gondor.apana.org.au> | 2026-01-23 13:48:43 +0800 |
| commit | 465d7831261965248a7a1484bd186066d29427f0 (patch) | |
| tree | cba67ca45292b0d5608801df1c91d6e9e447f289 /drivers/firmware | |
| parent | c7a768f57de0ebd7a9149d1dab1dadb9c5409d5f (diff) | |
| download | linux-465d7831261965248a7a1484bd186066d29427f0.tar.gz linux-465d7831261965248a7a1484bd186066d29427f0.zip | |
firmware: zynqmp: Add helper API to self discovery the device
Add API to get SoC version and family info.
Signed-off-by: Harsh Jain <h.jain@amd.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/firmware')
| -rw-r--r-- | drivers/firmware/xilinx/zynqmp-crypto.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/drivers/firmware/xilinx/zynqmp-crypto.c b/drivers/firmware/xilinx/zynqmp-crypto.c index ea9cac6a1052d..6d17cb8b27b35 100644 --- a/drivers/firmware/xilinx/zynqmp-crypto.c +++ b/drivers/firmware/xilinx/zynqmp-crypto.c @@ -57,3 +57,34 @@ int zynqmp_pm_sha_hash(const u64 address, const u32 size, const u32 flags) return zynqmp_pm_invoke_fn(PM_SECURE_SHA, NULL, 4, upper_addr, lower_addr, size, flags); } EXPORT_SYMBOL_GPL(zynqmp_pm_sha_hash); + +/** + * xlnx_get_crypto_dev_data() - Get crypto dev data of platform + * @feature_map: List of available feature map of all platform + * + * Return: Returns crypto dev data, either address crypto dev or ERR PTR + */ +void *xlnx_get_crypto_dev_data(struct xlnx_feature *feature_map) +{ + struct xlnx_feature *feature; + u32 pm_family_code; + int ret; + + /* Get the Family code and sub family code of platform */ + ret = zynqmp_pm_get_family_info(&pm_family_code); + if (ret < 0) + return ERR_PTR(ret); + + feature = feature_map; + for (; feature->family; feature++) { + if (feature->family == pm_family_code) { + ret = zynqmp_pm_feature(feature->feature_id); + if (ret < 0) + return ERR_PTR(ret); + + return feature->data; + } + } + return ERR_PTR(-ENODEV); +} +EXPORT_SYMBOL_GPL(xlnx_get_crypto_dev_data); |
