From c6887eca58ac0aeb2aa54b58d881d1bbf5543d96 Mon Sep 17 00:00:00 2001 From: Gagandeep Singh Date: Mon, 19 Oct 2020 17:48:01 +0800 Subject: [PATCH] crypto/caam_jr: fix device tree parsing for SEC_ERA Previously, SEC_ERA was hardcoded and it was removed in [1]. Now when that hardcoded was removed, it is supposed to be read from the device tree but it is not done correctly. This patch calls a necessary API of_init() before using any of_* APIs to retrieve information from the device tree and if reading integer value that must be converted to cpu endianness before using it. [1] eef9e0412a84 ("drivers/crypto: fix build with -fno-common") Fixes: 1d678de329ab ("crypto/caam_jr: add basic job ring routines") Cc: stable@dpdk.org Signed-off-by: Gagandeep Singh Acked-by: Akhil Goyal --- drivers/crypto/caam_jr/caam_jr.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/crypto/caam_jr/caam_jr.c b/drivers/crypto/caam_jr/caam_jr.c index c004ec4077..3fb3fe0f8a 100644 --- a/drivers/crypto/caam_jr/caam_jr.c +++ b/drivers/crypto/caam_jr/caam_jr.c @@ -2388,6 +2388,8 @@ init_error: static int cryptodev_caam_jr_probe(struct rte_vdev_device *vdev) { + int ret; + struct rte_cryptodev_pmd_init_params init_params = { "", sizeof(struct sec_job_ring_t), @@ -2404,6 +2406,12 @@ cryptodev_caam_jr_probe(struct rte_vdev_device *vdev) input_args = rte_vdev_device_args(vdev); rte_cryptodev_pmd_parse_input_args(&init_params, input_args); + ret = of_init(); + if (ret) { + RTE_LOG(ERR, PMD, + "of_init failed\n"); + return -EINVAL; + } /* if sec device version is not configured */ if (!rta_get_sec_era()) { const struct device_node *caam_node; @@ -2414,7 +2422,7 @@ cryptodev_caam_jr_probe(struct rte_vdev_device *vdev) NULL); if (prop) { rta_set_sec_era( - INTL_SEC_ERA(cpu_to_caam32(*prop))); + INTL_SEC_ERA(rte_be_to_cpu_32(*prop))); break; } } -- 2.20.1