From: Rosen Penev <rosenp@gmail.com>
To: linux-crypto@vger.kernel.org
Cc: Herbert Xu <herbert@gondor.apana.org.au>,
"David S. Miller" <davem@davemloft.net>,
linux-kernel@vger.kernel.org (open list)
Subject: [PATCHv2] crypto: talitos: Use platform_get_irq() to retrieve interrupt
Date: Tue, 28 Jul 2026 20:02:31 -0700 [thread overview]
Message-ID: <20260729030231.642651-1-rosenp@gmail.com> (raw)
Remove the need to call irq_dispose_mapping as needed by
irq_of_parse_and_map().
Simplify the function as a result. No need for gotos anymore.
Add a missing free_irq.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
v2: change irq checks as a result
drivers/crypto/talitos.c | 30 +++++++++++++-----------------
1 file changed, 13 insertions(+), 17 deletions(-)
diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
index 3a3fd21d2c4d..fa96b6bf17e3 100644
--- a/drivers/crypto/talitos.c
+++ b/drivers/crypto/talitos.c
@@ -191,7 +191,7 @@ static int reset_device(struct device *dev)
&& --timeout)
cpu_relax();
- if (priv->irq[1]) {
+ if (priv->irq[1] > 0) {
mcr = TALITOS_MCR_RCA1 | TALITOS_MCR_RCA3;
setbits32(priv->reg + TALITOS_MCR, mcr);
}
@@ -3241,13 +3241,11 @@ static void talitos_remove(struct platform_device *ofdev)
talitos_unregister_rng(dev);
for (i = 0; i < 2; i++)
- if (priv->irq[i]) {
+ if (priv->irq[i] > 0)
free_irq(priv->irq[i], dev);
- irq_dispose_mapping(priv->irq[i]);
- }
tasklet_kill(&priv->done_task[0]);
- if (priv->irq[1])
+ if (priv->irq[1] > 0)
tasklet_kill(&priv->done_task[1]);
}
@@ -3353,26 +3351,26 @@ static struct talitos_crypto_alg *talitos_alg_alloc(struct device *dev,
static int talitos_probe_irq(struct platform_device *ofdev)
{
struct device *dev = &ofdev->dev;
- struct device_node *np = ofdev->dev.of_node;
struct talitos_private *priv = dev_get_drvdata(dev);
int err;
bool is_sec1 = has_ftr_sec1(priv);
- priv->irq[0] = irq_of_parse_and_map(np, 0);
- if (!priv->irq[0]) {
- dev_err(dev, "failed to map irq\n");
- return -EINVAL;
- }
+ priv->irq[0] = platform_get_irq(ofdev, 0);
+ if (priv->irq[0] < 0)
+ return priv->irq[0];
+
if (is_sec1) {
err = request_irq(priv->irq[0], talitos1_interrupt_4ch, 0,
dev_driver_string(dev), dev);
goto primary_out;
}
- priv->irq[1] = irq_of_parse_and_map(np, 1);
+ priv->irq[1] = platform_get_irq_optional(ofdev, 1);
+ if (priv->irq[1] == -EPROBE_DEFER)
+ return priv->irq[1];
/* get the primary irq line */
- if (!priv->irq[1]) {
+ if (priv->irq[1] < 0) {
err = request_irq(priv->irq[0], talitos2_interrupt_4ch, 0,
dev_driver_string(dev), dev);
goto primary_out;
@@ -3388,7 +3386,6 @@ static int talitos_probe_irq(struct platform_device *ofdev)
dev_driver_string(dev), dev);
if (err) {
dev_err(dev, "failed to request secondary irq\n");
- irq_dispose_mapping(priv->irq[1]);
priv->irq[1] = 0;
}
@@ -3397,7 +3394,6 @@ static int talitos_probe_irq(struct platform_device *ofdev)
primary_out:
if (err) {
dev_err(dev, "failed to request primary irq\n");
- irq_dispose_mapping(priv->irq[0]);
priv->irq[0] = 0;
}
@@ -3498,7 +3494,7 @@ static int talitos_probe(struct platform_device *ofdev)
tasklet_init(&priv->done_task[0], talitos1_done_4ch,
(unsigned long)dev);
} else {
- if (priv->irq[1]) {
+ if (priv->irq[1] > 0) {
tasklet_init(&priv->done_task[0], talitos2_done_ch0_2,
(unsigned long)dev);
tasklet_init(&priv->done_task[1], talitos2_done_ch1_3,
@@ -3516,7 +3512,7 @@ static int talitos_probe(struct platform_device *ofdev)
for (i = 0; i < priv->num_channels; i++) {
priv->chan[i].reg = priv->reg + stride * (i + 1);
- if (!priv->irq[1] || !(i & 1))
+ if (priv->irq[1] < 0 || !(i & 1))
priv->chan[i].reg += TALITOS_CH_BASE_OFFSET;
spin_lock_init(&priv->chan[i].head_lock);
--
2.55.0
reply other threads:[~2026-07-29 3:02 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260729030231.642651-1-rosenp@gmail.com \
--to=rosenp@gmail.com \
--cc=davem@davemloft.net \
--cc=herbert@gondor.apana.org.au \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.