[PATCH v5 5/9] rtc: abx80x: add irq to struct abx80x_priv

From: Antoni Pokusinski

Date: Tue Aug 11 2026 - 15:43:57 EST


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 <apokusinski01@xxxxxxxxx>
---
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 485d1ea08030..12a4dbfec639 100644
--- a/drivers/rtc/rtc-abx80x.c
+++ b/drivers/rtc/rtc-abx80x.c
@@ -135,6 +135,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)
@@ -305,11 +306,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,
@@ -341,7 +343,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;
@@ -947,6 +949,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;
@@ -994,19 +997,19 @@ static int abx80x_probe(struct i2c_client *client)
return -EIO;
}

- 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