mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 03:24:45 +01:00
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>
This commit is contained in:
parent
c70aee3dd8
commit
b31583a1a9
4 changed files with 35 additions and 41 deletions
|
|
@ -163,6 +163,7 @@ sec_pmic_parse_dt_pdata(struct device *dev)
|
|||
int sec_pmic_probe(struct device *dev, int device_type, unsigned int irq,
|
||||
struct regmap *regmap, struct i2c_client *client)
|
||||
{
|
||||
struct regmap_irq_chip_data *irq_data;
|
||||
struct sec_platform_data *pdata;
|
||||
const struct mfd_cell *sec_devs;
|
||||
struct sec_pmic_dev *sec_pmic;
|
||||
|
|
@ -187,9 +188,9 @@ int sec_pmic_probe(struct device *dev, int device_type, unsigned int irq,
|
|||
|
||||
sec_pmic->pdata = pdata;
|
||||
|
||||
ret = sec_irq_init(sec_pmic);
|
||||
if (ret)
|
||||
return ret;
|
||||
irq_data = sec_irq_init(sec_pmic);
|
||||
if (IS_ERR(irq_data))
|
||||
return PTR_ERR(irq_data);
|
||||
|
||||
pm_runtime_set_active(sec_pmic->dev);
|
||||
|
||||
|
|
@ -240,7 +241,7 @@ int sec_pmic_probe(struct device *dev, int device_type, unsigned int irq,
|
|||
sec_pmic->device_type);
|
||||
}
|
||||
ret = devm_mfd_add_devices(sec_pmic->dev, -1, sec_devs, num_sec_devs,
|
||||
NULL, 0, regmap_irq_get_domain(sec_pmic->irq_data));
|
||||
NULL, 0, regmap_irq_get_domain(irq_data));
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,6 @@ int sec_pmic_probe(struct device *dev, int device_type, unsigned int irq,
|
|||
struct regmap *regmap, struct i2c_client *client);
|
||||
void sec_pmic_shutdown(struct device *dev);
|
||||
|
||||
int sec_irq_init(struct sec_pmic_dev *sec_pmic);
|
||||
struct regmap_irq_chip_data *sec_irq_init(struct sec_pmic_dev *sec_pmic);
|
||||
|
||||
#endif /* __SEC_CORE_INT_H */
|
||||
|
|
|
|||
|
|
@ -268,26 +268,28 @@ static const struct regmap_irq_chip s5m8767_irq_chip = {
|
|||
.ack_base = S5M8767_REG_INT1,
|
||||
};
|
||||
|
||||
static int s2mpg1x_add_chained_irq_chip(struct device *dev, struct regmap *regmap, int pirq,
|
||||
struct regmap_irq_chip_data *parent,
|
||||
const struct regmap_irq_chip *chip,
|
||||
struct regmap_irq_chip_data **data)
|
||||
static struct regmap_irq_chip_data *
|
||||
s2mpg1x_add_chained_pmic(struct sec_pmic_dev *sec_pmic, int pirq,
|
||||
struct regmap_irq_chip_data *parent, const struct regmap_irq_chip *chip)
|
||||
{
|
||||
struct device *dev = sec_pmic->dev;
|
||||
struct regmap_irq_chip_data *data;
|
||||
int irq, ret;
|
||||
|
||||
irq = regmap_irq_get_virq(parent, pirq);
|
||||
if (irq < 0)
|
||||
return dev_err_probe(dev, irq, "Failed to get parent vIRQ(%d) for chip %s\n", pirq,
|
||||
chip->name);
|
||||
return dev_err_ptr_probe(dev, irq, "Failed to get parent vIRQ(%d) for chip %s\n",
|
||||
pirq, chip->name);
|
||||
|
||||
ret = devm_regmap_add_irq_chip(dev, regmap, irq, IRQF_ONESHOT | IRQF_SHARED, 0, chip, data);
|
||||
ret = devm_regmap_add_irq_chip(dev, sec_pmic->regmap_pmic, irq,
|
||||
IRQF_ONESHOT | IRQF_SHARED, 0, chip, &data);
|
||||
if (ret)
|
||||
return dev_err_probe(dev, ret, "Failed to add %s IRQ chip\n", chip->name);
|
||||
return dev_err_ptr_probe(dev, ret, "Failed to add %s IRQ chip\n", chip->name);
|
||||
|
||||
return 0;
|
||||
return data;
|
||||
}
|
||||
|
||||
static int sec_irq_init_s2mpg1x(struct sec_pmic_dev *sec_pmic)
|
||||
static struct regmap_irq_chip_data *sec_irq_init_s2mpg1x(struct sec_pmic_dev *sec_pmic)
|
||||
{
|
||||
const struct regmap_irq_chip *irq_chip, *chained_irq_chip;
|
||||
struct regmap_irq_chip_data *irq_data;
|
||||
|
|
@ -302,27 +304,27 @@ static int sec_irq_init_s2mpg1x(struct sec_pmic_dev *sec_pmic)
|
|||
chained_pirq = S2MPG10_COMMON_IRQ_PMIC;
|
||||
break;
|
||||
default:
|
||||
return dev_err_probe(sec_pmic->dev, -EINVAL, "Unsupported device type %d\n",
|
||||
sec_pmic->device_type);
|
||||
return dev_err_ptr_probe(sec_pmic->dev, -EINVAL, "Unsupported device type %d\n",
|
||||
sec_pmic->device_type);
|
||||
}
|
||||
|
||||
regmap_common = dev_get_regmap(sec_pmic->dev, "common");
|
||||
if (!regmap_common)
|
||||
return dev_err_probe(sec_pmic->dev, -EINVAL, "No 'common' regmap %d\n",
|
||||
sec_pmic->device_type);
|
||||
return dev_err_ptr_probe(sec_pmic->dev, -EINVAL, "No 'common' regmap %d\n",
|
||||
sec_pmic->device_type);
|
||||
|
||||
ret = devm_regmap_add_irq_chip(sec_pmic->dev, regmap_common, sec_pmic->irq, IRQF_ONESHOT, 0,
|
||||
irq_chip, &irq_data);
|
||||
if (ret)
|
||||
return dev_err_probe(sec_pmic->dev, ret, "Failed to add %s IRQ chip\n",
|
||||
irq_chip->name);
|
||||
return dev_err_ptr_probe(sec_pmic->dev, ret, "Failed to add %s IRQ chip\n",
|
||||
irq_chip->name);
|
||||
|
||||
return s2mpg1x_add_chained_irq_chip(sec_pmic->dev, sec_pmic->regmap_pmic, chained_pirq,
|
||||
irq_data, chained_irq_chip, &sec_pmic->irq_data);
|
||||
return s2mpg1x_add_chained_pmic(sec_pmic, chained_pirq, irq_data, chained_irq_chip);
|
||||
}
|
||||
|
||||
int sec_irq_init(struct sec_pmic_dev *sec_pmic)
|
||||
struct regmap_irq_chip_data *sec_irq_init(struct sec_pmic_dev *sec_pmic)
|
||||
{
|
||||
struct regmap_irq_chip_data *sec_irq_chip_data;
|
||||
const struct regmap_irq_chip *sec_irq_chip;
|
||||
int ret;
|
||||
|
||||
|
|
@ -331,7 +333,7 @@ int sec_irq_init(struct sec_pmic_dev *sec_pmic)
|
|||
sec_irq_chip = &s5m8767_irq_chip;
|
||||
break;
|
||||
case S2DOS05:
|
||||
return 0;
|
||||
return NULL;
|
||||
case S2MPA01:
|
||||
sec_irq_chip = &s2mps14_irq_chip;
|
||||
break;
|
||||
|
|
@ -356,30 +358,22 @@ int sec_irq_init(struct sec_pmic_dev *sec_pmic)
|
|||
sec_irq_chip = &s2mpu05_irq_chip;
|
||||
break;
|
||||
default:
|
||||
return dev_err_probe(sec_pmic->dev, -EINVAL,
|
||||
"Unsupported device type %d\n",
|
||||
sec_pmic->device_type);
|
||||
return dev_err_ptr_probe(sec_pmic->dev, -EINVAL, "Unsupported device type %d\n",
|
||||
sec_pmic->device_type);
|
||||
}
|
||||
|
||||
if (!sec_pmic->irq) {
|
||||
dev_warn(sec_pmic->dev,
|
||||
"No interrupt specified, no interrupts\n");
|
||||
return 0;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ret = devm_regmap_add_irq_chip(sec_pmic->dev, sec_pmic->regmap_pmic,
|
||||
sec_pmic->irq, IRQF_ONESHOT,
|
||||
0, sec_irq_chip, &sec_pmic->irq_data);
|
||||
0, sec_irq_chip, &sec_irq_chip_data);
|
||||
if (ret)
|
||||
return dev_err_probe(sec_pmic->dev, ret,
|
||||
"Failed to add %s IRQ chip\n",
|
||||
sec_irq_chip->name);
|
||||
return dev_err_ptr_probe(sec_pmic->dev, ret, "Failed to add %s IRQ chip\n",
|
||||
sec_irq_chip->name);
|
||||
|
||||
/*
|
||||
* The rtc-s5m driver requests S2MPS14_IRQ_RTCA0 also for S2MPS11
|
||||
* so the interrupt number must be consistent.
|
||||
*/
|
||||
BUILD_BUG_ON(((enum s2mps14_irq)S2MPS11_IRQ_RTCA0) != S2MPS14_IRQ_RTCA0);
|
||||
|
||||
return 0;
|
||||
return sec_irq_chip_data;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,7 +69,6 @@ struct sec_pmic_dev {
|
|||
|
||||
int device_type;
|
||||
int irq;
|
||||
struct regmap_irq_chip_data *irq_data;
|
||||
};
|
||||
|
||||
struct sec_platform_data {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue