Skip to content

Commit b31583a

Browse files
andredlag-linaro
authored andcommitted
mfd: sec: Drop now unused struct sec_pmic_dev::irq_data
This was used only to allow the s5m RTC driver to deal with the alarm IRQ. That driver now uses a different approach to acquire that IRQ, and ::irq_data doesn't need to be kept around anymore. Signed-off-by: André Draszik <andre.draszik@linaro.org> Link: https://patch.msgid.link/20260113-s5m-alarm-v3-3-855a19db1277@linaro.org Signed-off-by: Lee Jones <lee@kernel.org>
1 parent c70aee3 commit b31583a

4 files changed

Lines changed: 35 additions & 41 deletions

File tree

drivers/mfd/sec-common.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ sec_pmic_parse_dt_pdata(struct device *dev)
163163
int sec_pmic_probe(struct device *dev, int device_type, unsigned int irq,
164164
struct regmap *regmap, struct i2c_client *client)
165165
{
166+
struct regmap_irq_chip_data *irq_data;
166167
struct sec_platform_data *pdata;
167168
const struct mfd_cell *sec_devs;
168169
struct sec_pmic_dev *sec_pmic;
@@ -187,9 +188,9 @@ int sec_pmic_probe(struct device *dev, int device_type, unsigned int irq,
187188

188189
sec_pmic->pdata = pdata;
189190

190-
ret = sec_irq_init(sec_pmic);
191-
if (ret)
192-
return ret;
191+
irq_data = sec_irq_init(sec_pmic);
192+
if (IS_ERR(irq_data))
193+
return PTR_ERR(irq_data);
193194

194195
pm_runtime_set_active(sec_pmic->dev);
195196

@@ -240,7 +241,7 @@ int sec_pmic_probe(struct device *dev, int device_type, unsigned int irq,
240241
sec_pmic->device_type);
241242
}
242243
ret = devm_mfd_add_devices(sec_pmic->dev, -1, sec_devs, num_sec_devs,
243-
NULL, 0, regmap_irq_get_domain(sec_pmic->irq_data));
244+
NULL, 0, regmap_irq_get_domain(irq_data));
244245
if (ret)
245246
return ret;
246247

drivers/mfd/sec-core.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@ int sec_pmic_probe(struct device *dev, int device_type, unsigned int irq,
1818
struct regmap *regmap, struct i2c_client *client);
1919
void sec_pmic_shutdown(struct device *dev);
2020

21-
int sec_irq_init(struct sec_pmic_dev *sec_pmic);
21+
struct regmap_irq_chip_data *sec_irq_init(struct sec_pmic_dev *sec_pmic);
2222

2323
#endif /* __SEC_CORE_INT_H */

drivers/mfd/sec-irq.c

Lines changed: 29 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -268,26 +268,28 @@ static const struct regmap_irq_chip s5m8767_irq_chip = {
268268
.ack_base = S5M8767_REG_INT1,
269269
};
270270

271-
static int s2mpg1x_add_chained_irq_chip(struct device *dev, struct regmap *regmap, int pirq,
272-
struct regmap_irq_chip_data *parent,
273-
const struct regmap_irq_chip *chip,
274-
struct regmap_irq_chip_data **data)
271+
static struct regmap_irq_chip_data *
272+
s2mpg1x_add_chained_pmic(struct sec_pmic_dev *sec_pmic, int pirq,
273+
struct regmap_irq_chip_data *parent, const struct regmap_irq_chip *chip)
275274
{
275+
struct device *dev = sec_pmic->dev;
276+
struct regmap_irq_chip_data *data;
276277
int irq, ret;
277278

278279
irq = regmap_irq_get_virq(parent, pirq);
279280
if (irq < 0)
280-
return dev_err_probe(dev, irq, "Failed to get parent vIRQ(%d) for chip %s\n", pirq,
281-
chip->name);
281+
return dev_err_ptr_probe(dev, irq, "Failed to get parent vIRQ(%d) for chip %s\n",
282+
pirq, chip->name);
282283

283-
ret = devm_regmap_add_irq_chip(dev, regmap, irq, IRQF_ONESHOT | IRQF_SHARED, 0, chip, data);
284+
ret = devm_regmap_add_irq_chip(dev, sec_pmic->regmap_pmic, irq,
285+
IRQF_ONESHOT | IRQF_SHARED, 0, chip, &data);
284286
if (ret)
285-
return dev_err_probe(dev, ret, "Failed to add %s IRQ chip\n", chip->name);
287+
return dev_err_ptr_probe(dev, ret, "Failed to add %s IRQ chip\n", chip->name);
286288

287-
return 0;
289+
return data;
288290
}
289291

290-
static int sec_irq_init_s2mpg1x(struct sec_pmic_dev *sec_pmic)
292+
static struct regmap_irq_chip_data *sec_irq_init_s2mpg1x(struct sec_pmic_dev *sec_pmic)
291293
{
292294
const struct regmap_irq_chip *irq_chip, *chained_irq_chip;
293295
struct regmap_irq_chip_data *irq_data;
@@ -302,27 +304,27 @@ static int sec_irq_init_s2mpg1x(struct sec_pmic_dev *sec_pmic)
302304
chained_pirq = S2MPG10_COMMON_IRQ_PMIC;
303305
break;
304306
default:
305-
return dev_err_probe(sec_pmic->dev, -EINVAL, "Unsupported device type %d\n",
306-
sec_pmic->device_type);
307+
return dev_err_ptr_probe(sec_pmic->dev, -EINVAL, "Unsupported device type %d\n",
308+
sec_pmic->device_type);
307309
}
308310

309311
regmap_common = dev_get_regmap(sec_pmic->dev, "common");
310312
if (!regmap_common)
311-
return dev_err_probe(sec_pmic->dev, -EINVAL, "No 'common' regmap %d\n",
312-
sec_pmic->device_type);
313+
return dev_err_ptr_probe(sec_pmic->dev, -EINVAL, "No 'common' regmap %d\n",
314+
sec_pmic->device_type);
313315

314316
ret = devm_regmap_add_irq_chip(sec_pmic->dev, regmap_common, sec_pmic->irq, IRQF_ONESHOT, 0,
315317
irq_chip, &irq_data);
316318
if (ret)
317-
return dev_err_probe(sec_pmic->dev, ret, "Failed to add %s IRQ chip\n",
318-
irq_chip->name);
319+
return dev_err_ptr_probe(sec_pmic->dev, ret, "Failed to add %s IRQ chip\n",
320+
irq_chip->name);
319321

320-
return s2mpg1x_add_chained_irq_chip(sec_pmic->dev, sec_pmic->regmap_pmic, chained_pirq,
321-
irq_data, chained_irq_chip, &sec_pmic->irq_data);
322+
return s2mpg1x_add_chained_pmic(sec_pmic, chained_pirq, irq_data, chained_irq_chip);
322323
}
323324

324-
int sec_irq_init(struct sec_pmic_dev *sec_pmic)
325+
struct regmap_irq_chip_data *sec_irq_init(struct sec_pmic_dev *sec_pmic)
325326
{
327+
struct regmap_irq_chip_data *sec_irq_chip_data;
326328
const struct regmap_irq_chip *sec_irq_chip;
327329
int ret;
328330

@@ -331,7 +333,7 @@ int sec_irq_init(struct sec_pmic_dev *sec_pmic)
331333
sec_irq_chip = &s5m8767_irq_chip;
332334
break;
333335
case S2DOS05:
334-
return 0;
336+
return NULL;
335337
case S2MPA01:
336338
sec_irq_chip = &s2mps14_irq_chip;
337339
break;
@@ -356,30 +358,22 @@ int sec_irq_init(struct sec_pmic_dev *sec_pmic)
356358
sec_irq_chip = &s2mpu05_irq_chip;
357359
break;
358360
default:
359-
return dev_err_probe(sec_pmic->dev, -EINVAL,
360-
"Unsupported device type %d\n",
361-
sec_pmic->device_type);
361+
return dev_err_ptr_probe(sec_pmic->dev, -EINVAL, "Unsupported device type %d\n",
362+
sec_pmic->device_type);
362363
}
363364

364365
if (!sec_pmic->irq) {
365366
dev_warn(sec_pmic->dev,
366367
"No interrupt specified, no interrupts\n");
367-
return 0;
368+
return NULL;
368369
}
369370

370371
ret = devm_regmap_add_irq_chip(sec_pmic->dev, sec_pmic->regmap_pmic,
371372
sec_pmic->irq, IRQF_ONESHOT,
372-
0, sec_irq_chip, &sec_pmic->irq_data);
373+
0, sec_irq_chip, &sec_irq_chip_data);
373374
if (ret)
374-
return dev_err_probe(sec_pmic->dev, ret,
375-
"Failed to add %s IRQ chip\n",
376-
sec_irq_chip->name);
375+
return dev_err_ptr_probe(sec_pmic->dev, ret, "Failed to add %s IRQ chip\n",
376+
sec_irq_chip->name);
377377

378-
/*
379-
* The rtc-s5m driver requests S2MPS14_IRQ_RTCA0 also for S2MPS11
380-
* so the interrupt number must be consistent.
381-
*/
382-
BUILD_BUG_ON(((enum s2mps14_irq)S2MPS11_IRQ_RTCA0) != S2MPS14_IRQ_RTCA0);
383-
384-
return 0;
378+
return sec_irq_chip_data;
385379
}

include/linux/mfd/samsung/core.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ struct sec_pmic_dev {
6969

7070
int device_type;
7171
int irq;
72-
struct regmap_irq_chip_data *irq_data;
7372
};
7473

7574
struct sec_platform_data {

0 commit comments

Comments
 (0)