Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

crypto: caam - fix ERA retrieval function

SEC ERA has to be retrieved by reading the "fsl,sec-era" property
from the device tree. This property is updated/filled in by
u-boot.

Signed-off-by: Alex Porosanu <alexandru.porosanu@freescale.com>
Reviewed-by: Horia Geanta <horia.geanta@freescale.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

authored by

Alex Porosanu and committed by
Herbert Xu
883619a9 d167b6e1

+11 -27
+10 -26
drivers/crypto/caam/ctrl.c
··· 14 14 #include "jr.h" 15 15 #include "desc_constr.h" 16 16 #include "error.h" 17 - #include "ctrl.h" 18 17 19 18 /* 20 19 * Descriptor to instantiate RNG State Handle 0 in normal mode and ··· 351 352 352 353 /** 353 354 * caam_get_era() - Return the ERA of the SEC on SoC, based 354 - * on the SEC_VID register. 355 - * Returns the ERA number (1..4) or -ENOTSUPP if the ERA is unknown. 356 - * @caam_id - the value of the SEC_VID register 355 + * on "sec-era" propery in the DTS. This property is updated by u-boot. 357 356 **/ 358 - int caam_get_era(u64 caam_id) 357 + int caam_get_era(void) 359 358 { 360 - struct sec_vid *sec_vid = (struct sec_vid *)&caam_id; 361 - static const struct { 362 - u16 ip_id; 363 - u8 maj_rev; 364 - u8 era; 365 - } caam_eras[] = { 366 - {0x0A10, 1, 1}, 367 - {0x0A10, 2, 2}, 368 - {0x0A12, 1, 3}, 369 - {0x0A14, 1, 3}, 370 - {0x0A14, 2, 4}, 371 - {0x0A16, 1, 4}, 372 - {0x0A11, 1, 4} 373 - }; 374 - int i; 375 - 376 - for (i = 0; i < ARRAY_SIZE(caam_eras); i++) 377 - if (caam_eras[i].ip_id == sec_vid->ip_id && 378 - caam_eras[i].maj_rev == sec_vid->maj_rev) 379 - return caam_eras[i].era; 359 + struct device_node *caam_node; 360 + for_each_compatible_node(caam_node, NULL, "fsl,sec-v4.0") { 361 + const uint32_t *prop = (uint32_t *)of_get_property(caam_node, 362 + "fsl,sec-era", 363 + NULL); 364 + return prop ? *prop : -ENOTSUPP; 365 + } 380 366 381 367 return -ENOTSUPP; 382 368 } ··· 535 551 536 552 /* Report "alive" for developer to see */ 537 553 dev_info(dev, "device ID = 0x%016llx (Era %d)\n", caam_id, 538 - caam_get_era(caam_id)); 554 + caam_get_era()); 539 555 dev_info(dev, "job rings = %d, qi = %d\n", 540 556 ctrlpriv->total_jobrs, ctrlpriv->qi_present); 541 557
+1 -1
drivers/crypto/caam/ctrl.h
··· 8 8 #define CTRL_H 9 9 10 10 /* Prototypes for backend-level services exposed to APIs */ 11 - int caam_get_era(u64 caam_id); 11 + int caam_get_era(void); 12 12 13 13 #endif /* CTRL_H */