This patch series aims to add match data improvements for pv880x0
regulator driver.
This patch is only compile tested.
v2->v3:
* Swapped the patch#1 and patch#2
* Removed trailing comma in the terminator entry for OF/ID table.
* Updated commit description of patch#1
* Restored OF table position in patch#1 and moved OF tables close to the
user in patch#2.
* Dropped extra space from OF table entry.
v1->v2:
* Moved OF/ID tables close to the user
* Removed trailing comma in the terminator entry for OF/ID tables.
* Created patch#2 for dropping CONFIG_OF ifdeffery.
Biju Das (2):
regulator: pv880x0: Drop ifdeffery
regulator: pv880x0: Simplify probe()
drivers/regulator/pv88080-regulator.c | 58 ++++++++-------------------
1 file changed, 17 insertions(+), 41 deletions(-)
--
2.25.1
Replace pv88080_types->pv88080_compatible_regmap in OF/ID tables and
simplify the probe() by replacing of_match_node() and ID lookup for
retrieving match data by i2c_get_match_data(). After this there is
no user of enum pv88080_types. So drop it.
While at it, move OF table near to the user.
Signed-off-by: Biju Das <[email protected]>
---
v2->v3:
* Moved OF tables close to the user as patch#1 restored OF table
position.
* Dropped extra space from OF table entry.
v1->v2:
* Moved OF/ID tables close to the user
* Removed trailing comma in the terminator entry for OF/ID tables.
---
drivers/regulator/pv88080-regulator.c | 51 ++++++++-------------------
1 file changed, 14 insertions(+), 37 deletions(-)
diff --git a/drivers/regulator/pv88080-regulator.c b/drivers/regulator/pv88080-regulator.c
index 1b2a8385e2e8..9fe539a34786 100644
--- a/drivers/regulator/pv88080-regulator.c
+++ b/drivers/regulator/pv88080-regulator.c
@@ -29,11 +29,6 @@ enum {
PV88080_ID_HVBUCK,
};
-enum pv88080_types {
- TYPE_PV88080_AA,
- TYPE_PV88080_BA,
-};
-
struct pv88080_regulator {
struct regulator_desc desc;
unsigned int mode_reg;
@@ -197,14 +192,6 @@ static const struct pv88080_compatible_regmap pv88080_ba_regs = {
.hvbuck_vsel_mask = PV88080_VHVBUCK_MASK,
};
-static const struct of_device_id pv88080_dt_ids[] = {
- { .compatible = "pvs,pv88080", .data = (void *)TYPE_PV88080_AA },
- { .compatible = "pvs,pv88080-aa", .data = (void *)TYPE_PV88080_AA },
- { .compatible = "pvs,pv88080-ba", .data = (void *)TYPE_PV88080_BA },
- {}
-};
-MODULE_DEVICE_TABLE(of, pv88080_dt_ids);
-
static unsigned int pv88080_buck_get_mode(struct regulator_dev *rdev)
{
struct pv88080_regulator *info = rdev_get_drvdata(rdev);
@@ -375,11 +362,9 @@ static irqreturn_t pv88080_irq_handler(int irq, void *data)
*/
static int pv88080_i2c_probe(struct i2c_client *i2c)
{
- const struct i2c_device_id *id = i2c_client_get_device_id(i2c);
struct regulator_init_data *init_data = dev_get_platdata(&i2c->dev);
struct pv88080 *chip;
const struct pv88080_compatible_regmap *regmap_config;
- const struct of_device_id *match;
struct regulator_config config = { };
int i, error, ret;
unsigned int conf2, conf5;
@@ -397,16 +382,9 @@ static int pv88080_i2c_probe(struct i2c_client *i2c)
return error;
}
- if (i2c->dev.of_node) {
- match = of_match_node(pv88080_dt_ids, i2c->dev.of_node);
- if (!match) {
- dev_err(chip->dev, "Failed to get of_match_node\n");
- return -EINVAL;
- }
- chip->type = (unsigned long)match->data;
- } else {
- chip->type = id->driver_data;
- }
+ chip->regmap_config = i2c_get_match_data(i2c);
+ if (!chip->regmap_config)
+ return -ENODEV;
i2c_set_clientdata(i2c, chip);
@@ -451,15 +429,6 @@ static int pv88080_i2c_probe(struct i2c_client *i2c)
dev_warn(chip->dev, "No IRQ configured\n");
}
- switch (chip->type) {
- case TYPE_PV88080_AA:
- chip->regmap_config = &pv88080_aa_regs;
- break;
- case TYPE_PV88080_BA:
- chip->regmap_config = &pv88080_ba_regs;
- break;
- }
-
regmap_config = chip->regmap_config;
config.dev = chip->dev;
config.regmap = chip->regmap;
@@ -545,10 +514,18 @@ static int pv88080_i2c_probe(struct i2c_client *i2c)
return 0;
}
+static const struct of_device_id pv88080_dt_ids[] = {
+ { .compatible = "pvs,pv88080", .data = &pv88080_aa_regs },
+ { .compatible = "pvs,pv88080-aa", .data = &pv88080_aa_regs },
+ { .compatible = "pvs,pv88080-ba", .data = &pv88080_ba_regs },
+ {}
+};
+MODULE_DEVICE_TABLE(of, pv88080_dt_ids);
+
static const struct i2c_device_id pv88080_i2c_id[] = {
- { "pv88080", TYPE_PV88080_AA },
- { "pv88080-aa", TYPE_PV88080_AA },
- { "pv88080-ba", TYPE_PV88080_BA },
+ { "pv88080", (kernel_ulong_t)&pv88080_aa_regs },
+ { "pv88080-aa", (kernel_ulong_t)&pv88080_aa_regs },
+ { "pv88080-ba", (kernel_ulong_t)&pv88080_ba_regs },
{}
};
MODULE_DEVICE_TABLE(i2c, pv88080_i2c_id);
--
2.25.1
On Sun, 03 Sep 2023 17:48:30 +0100, Biju Das wrote:
> This patch series aims to add match data improvements for pv880x0
> regulator driver.
>
> This patch is only compile tested.
>
> v2->v3:
> * Swapped the patch#1 and patch#2
> * Removed trailing comma in the terminator entry for OF/ID table.
> * Updated commit description of patch#1
> * Restored OF table position in patch#1 and moved OF tables close to the
> user in patch#2.
> * Dropped extra space from OF table entry.
> v1->v2:
> * Moved OF/ID tables close to the user
> * Removed trailing comma in the terminator entry for OF/ID tables.
> * Created patch#2 for dropping CONFIG_OF ifdeffery.
>
> [...]
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git for-next
Thanks!
[1/2] regulator: pv880x0: Drop ifdeffery
commit: c187b8f87d553cc124c568ecc010a8bf73cf745f
[2/2] regulator: pv880x0: Simplify probe()
commit: 1b4daf643a3a21cff4bcad5b799960d5a0673d11
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark