| From dc88bc3af526753e5ddd5ab1c6f874df8ca68e45 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 21 Jun 2022 09:14:02 +0100 |
| Subject: mfd: pm8008: Remove driver data structure pm8008_data |
| |
| From: Lee Jones <lee.jones@linaro.org> |
| |
| [ Upstream commit 915696927cd6e7838d25dab8fbd2ae05d4acce84 ] |
| |
| Maintaining a local driver data structure that is never shared |
| outside of the core device is an unnecessary complexity. Half of the |
| attributes were not used outside of a single function, one of which |
| was not used at all. The remaining 2 are generic and can be passed |
| around as required. |
| |
| Signed-off-by: Lee Jones <lee.jones@linaro.org> |
| Stable-dep-of: 14f8c55d48e0 ("mfd: pm8008: Fix return value check in pm8008_probe()") |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/mfd/qcom-pm8008.c | 53 +++++++++++++++------------------------ |
| 1 file changed, 20 insertions(+), 33 deletions(-) |
| |
| diff --git a/drivers/mfd/qcom-pm8008.c b/drivers/mfd/qcom-pm8008.c |
| index c472d7f8103c..4b8ff947762f 100644 |
| --- a/drivers/mfd/qcom-pm8008.c |
| +++ b/drivers/mfd/qcom-pm8008.c |
| @@ -54,13 +54,6 @@ enum { |
| |
| #define PM8008_PERIPH_OFFSET(paddr) (paddr - PM8008_PERIPH_0_BASE) |
| |
| -struct pm8008_data { |
| - struct device *dev; |
| - struct regmap *regmap; |
| - int irq; |
| - struct regmap_irq_chip_data *irq_data; |
| -}; |
| - |
| static unsigned int p0_offs[] = {PM8008_PERIPH_OFFSET(PM8008_PERIPH_0_BASE)}; |
| static unsigned int p1_offs[] = {PM8008_PERIPH_OFFSET(PM8008_PERIPH_1_BASE)}; |
| static unsigned int p2_offs[] = {PM8008_PERIPH_OFFSET(PM8008_PERIPH_2_BASE)}; |
| @@ -150,7 +143,7 @@ static struct regmap_config qcom_mfd_regmap_cfg = { |
| .max_register = 0xFFFF, |
| }; |
| |
| -static int pm8008_init(struct pm8008_data *chip) |
| +static int pm8008_init(struct regmap *regmap) |
| { |
| int rc; |
| |
| @@ -160,34 +153,31 @@ static int pm8008_init(struct pm8008_data *chip) |
| * This is required to enable the writing of TYPE registers in |
| * regmap_irq_sync_unlock(). |
| */ |
| - rc = regmap_write(chip->regmap, |
| - (PM8008_TEMP_ALARM_ADDR | INT_SET_TYPE_OFFSET), |
| - BIT(0)); |
| + rc = regmap_write(regmap, (PM8008_TEMP_ALARM_ADDR | INT_SET_TYPE_OFFSET), BIT(0)); |
| if (rc) |
| return rc; |
| |
| /* Do the same for GPIO1 and GPIO2 peripherals */ |
| - rc = regmap_write(chip->regmap, |
| - (PM8008_GPIO1_ADDR | INT_SET_TYPE_OFFSET), BIT(0)); |
| + rc = regmap_write(regmap, (PM8008_GPIO1_ADDR | INT_SET_TYPE_OFFSET), BIT(0)); |
| if (rc) |
| return rc; |
| |
| - rc = regmap_write(chip->regmap, |
| - (PM8008_GPIO2_ADDR | INT_SET_TYPE_OFFSET), BIT(0)); |
| + rc = regmap_write(regmap, (PM8008_GPIO2_ADDR | INT_SET_TYPE_OFFSET), BIT(0)); |
| |
| return rc; |
| } |
| |
| -static int pm8008_probe_irq_peripherals(struct pm8008_data *chip, |
| +static int pm8008_probe_irq_peripherals(struct device *dev, |
| + struct regmap *regmap, |
| int client_irq) |
| { |
| int rc, i; |
| struct regmap_irq_type *type; |
| struct regmap_irq_chip_data *irq_data; |
| |
| - rc = pm8008_init(chip); |
| + rc = pm8008_init(regmap); |
| if (rc) { |
| - dev_err(chip->dev, "Init failed: %d\n", rc); |
| + dev_err(dev, "Init failed: %d\n", rc); |
| return rc; |
| } |
| |
| @@ -207,10 +197,10 @@ static int pm8008_probe_irq_peripherals(struct pm8008_data *chip, |
| IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW); |
| } |
| |
| - rc = devm_regmap_add_irq_chip(chip->dev, chip->regmap, client_irq, |
| + rc = devm_regmap_add_irq_chip(dev, regmap, client_irq, |
| IRQF_SHARED, 0, &pm8008_irq_chip, &irq_data); |
| if (rc) { |
| - dev_err(chip->dev, "Failed to add IRQ chip: %d\n", rc); |
| + dev_err(dev, "Failed to add IRQ chip: %d\n", rc); |
| return rc; |
| } |
| |
| @@ -220,26 +210,23 @@ static int pm8008_probe_irq_peripherals(struct pm8008_data *chip, |
| static int pm8008_probe(struct i2c_client *client) |
| { |
| int rc; |
| - struct pm8008_data *chip; |
| - |
| - chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL); |
| - if (!chip) |
| - return -ENOMEM; |
| + struct device *dev; |
| + struct regmap *regmap; |
| |
| - chip->dev = &client->dev; |
| - chip->regmap = devm_regmap_init_i2c(client, &qcom_mfd_regmap_cfg); |
| - if (!chip->regmap) |
| + dev = &client->dev; |
| + regmap = devm_regmap_init_i2c(client, &qcom_mfd_regmap_cfg); |
| + if (!regmap) |
| return -ENODEV; |
| |
| - i2c_set_clientdata(client, chip); |
| + i2c_set_clientdata(client, regmap); |
| |
| - if (of_property_read_bool(chip->dev->of_node, "interrupt-controller")) { |
| - rc = pm8008_probe_irq_peripherals(chip, client->irq); |
| + if (of_property_read_bool(dev->of_node, "interrupt-controller")) { |
| + rc = pm8008_probe_irq_peripherals(dev, regmap, client->irq); |
| if (rc) |
| - dev_err(chip->dev, "Failed to probe irq periphs: %d\n", rc); |
| + dev_err(dev, "Failed to probe irq periphs: %d\n", rc); |
| } |
| |
| - return devm_of_platform_populate(chip->dev); |
| + return devm_of_platform_populate(dev); |
| } |
| |
| static const struct of_device_id pm8008_match[] = { |
| -- |
| 2.35.1 |
| |