[PATCH v3 4/8] rtc: abx80x: add irq to struct abx80x_priv
Antoni Pokusinski <[email protected]> Fri, 31 Jul 2026 20:48:27 +0200
| Newsgroups | org.kernel.vger.linux-rtc,org.kernel.vger.linux-devicetree |
|---|---|
| Message-ID | <[email protected]> |
This way the irq number is not tied to the i2c_client and can be easily accessed also in the case of ABX81X SPI clocks. Signed-off-by: Antoni Pokusinski <[email protected]> --- drivers/rtc/rtc-abx80x.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/rtc/rtc-abx80x.c b/drivers/rtc/rtc-abx80x.c index b84fce0ef294..4ac3ace687a1 100644 --- a/drivers/rtc/rtc-abx80x.c +++ b/drivers/rtc/rtc-abx80x.c @@ -129,6 +129,7 @@ struct abx80x_priv { struct i2c_client *client; struct watchdog_device wdog; struct mutex lock; + int irq; }; static int abx80x_write_config_key(struct i2c_client *client, u8 key) @@ -299,11 +300,12 @@ static irqreturn_t abx80x_handle_irq(int irq, void *dev_id) static int abx80x_read_alarm(struct device *dev, struct rtc_wkalrm *t) { struct i2c_client *client = to_i2c_client(dev); + struct abx80x_priv *priv = i2c_get_clientdata(client); unsigned char buf[7]; int irq_mask, err; - if (client->irq <= 0) + if (priv->irq <= 0) return -EINVAL; err = i2c_smbus_read_i2c_block_data(client, ABX8XX_REG_ASC, @@ -335,7 +337,7 @@ static int abx80x_set_alarm(struct device *dev, struct rtc_wkalrm *t) u8 alarm[6]; int err; - if (client->irq <= 0) + if (priv->irq <= 0) return -EINVAL; alarm[0] = 0x0; @@ -941,6 +943,7 @@ static int abx80x_probe(struct i2c_client *client) priv->rtc->ops = &abx80x_rtc_ops; priv->client = client; + priv->irq = client->irq; err = devm_mutex_init(&client->dev, &priv->lock); if (err) return err; @@ -957,19 +960,19 @@ static int abx80x_probe(struct i2c_client *client) if (err) return err; - if (client->irq > 0) { - dev_info(&client->dev, "IRQ %d supplied\n", client->irq); - err = devm_request_threaded_irq(&client->dev, client->irq, NULL, + if (priv->irq > 0) { + dev_info(&client->dev, "IRQ %d supplied\n", priv->irq); + err = devm_request_threaded_irq(&client->dev, priv->irq, NULL, abx80x_handle_irq, IRQF_SHARED | IRQF_ONESHOT, "abx8xx", client); if (err) { dev_err(&client->dev, "unable to request IRQ, alarms disabled\n"); - client->irq = 0; + priv->irq = 0; } } - if (client->irq <= 0) + if (priv->irq <= 0) clear_bit(RTC_FEATURE_ALARM, priv->rtc->features); err = rtc_add_group(priv->rtc, &rtc_calib_attr_group); -- 2.55.0