[PATCH] crypto: amcc: get irq and ioremap resource first

From: Rosen Penev

Date: Thu Jul 30 2026 - 16:51:16 EST


These functions can return -EPROBE_DEFER and require no special setup
other than the platform_device which is already provided.

Avoids doing extra work when not needed.

Signed-off-by: Rosen Penev <rosenp@xxxxxxxxx>
---
drivers/crypto/amcc/crypto4xx_core.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/drivers/crypto/amcc/crypto4xx_core.c b/drivers/crypto/amcc/crypto4xx_core.c
index 0271b5e4d923..ec18aa90a86f 100644
--- a/drivers/crypto/amcc/crypto4xx_core.c
+++ b/drivers/crypto/amcc/crypto4xx_core.c
@@ -1206,9 +1206,19 @@ static int crypto4xx_probe(struct platform_device *ofdev)
struct device *dev = &ofdev->dev;
struct crypto4xx_core_device *core_dev;
struct device_node *np;
+ void __iomem *ce_base;
+ int irq;
u32 pvr;
bool is_revb = true;

+ irq = platform_get_irq(ofdev, 0);
+ if (irq < 0)
+ return irq;
+
+ ce_base = devm_platform_ioremap_resource(ofdev, 0);
+ if (IS_ERR(ce_base))
+ return PTR_ERR(ce_base);
+
np = of_find_compatible_node(NULL, NULL, "amcc,ppc460ex-crypto");
if (np) {
mtdcri(SDR0, PPC460EX_SDR0_SRST,
@@ -1251,9 +1261,7 @@ static int crypto4xx_probe(struct platform_device *ofdev)
if (!core_dev->dev)
return -ENOMEM;

- core_dev->dev->ce_base = devm_platform_ioremap_resource(ofdev, 0);
- if (IS_ERR(core_dev->dev->ce_base))
- return PTR_ERR(core_dev->dev->ce_base);
+ core_dev->dev->ce_base = ce_base;

/*
* Older version of 460EX/GT have a hardware bug.
@@ -1291,7 +1299,7 @@ static int crypto4xx_probe(struct platform_device *ofdev)
(unsigned long) dev);

/* Register for Crypto isr, Crypto Engine IRQ */
- core_dev->irq = platform_get_irq(ofdev, 0);
+ core_dev->irq = irq;
if (core_dev->irq < 0) {
rc = core_dev->irq;
goto err_iomap;
--
2.55.0