linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] Match data improvements for bq24257_charger driver
@ 2023-09-02 19:33 Biju Das
  2023-09-02 19:33 ` [PATCH 1/2] power: supply: bq24257_charger: Make chip type and name in sync Biju Das
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Biju Das @ 2023-09-02 19:33 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: Biju Das, linux-pm, linux-kernel, Biju Das, Andy Shevchenko

This patch series aims to add match data improvements for bq24257_charger
driver.

This patch series is only compile tested.

Biju Das (2):
  power: supply: bq24257_charger: Make chip type and name in sync
  power: supply: bq24257_charger: Some cleanups

 drivers/power/supply/bq24257_charger.c | 76 +++++++++++++-------------
 1 file changed, 38 insertions(+), 38 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/2] power: supply: bq24257_charger: Make chip type and name in sync
  2023-09-02 19:33 [PATCH 0/2] Match data improvements for bq24257_charger driver Biju Das
@ 2023-09-02 19:33 ` Biju Das
  2023-09-04 10:07   ` Andy Shevchenko
  2023-09-02 19:33 ` [PATCH 2/2] power: supply: bq24257_charger: Some cleanups Biju Das
  2023-09-12 21:52 ` [PATCH 0/2] Match data improvements for bq24257_charger driver Sebastian Reichel
  2 siblings, 1 reply; 10+ messages in thread
From: Biju Das @ 2023-09-02 19:33 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: Biju Das, linux-pm, linux-kernel, Biju Das, Andy Shevchenko

Add struct bq2425x_chip_info to make enum bq2425x_chip and it's name in
sync and replace chip->info in struct bq24257_device and add struct
bq2425x_chip_info as match data for OF/ACPI/ID tables.

Simpilfy probe() by replacing acpi_match_device() and id lookup for
retrieving match data by using i2c_get_match_data().

Drop bq2425x_chip_name as there is no user and also drop the comment
related to syncing chip and name as it is taken care by struct
bq2425x_chip_info.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
---
 drivers/power/supply/bq24257_charger.c | 70 +++++++++++++-------------
 1 file changed, 35 insertions(+), 35 deletions(-)

diff --git a/drivers/power/supply/bq24257_charger.c b/drivers/power/supply/bq24257_charger.c
index 2852860abf86..188812f4a79b 100644
--- a/drivers/power/supply/bq24257_charger.c
+++ b/drivers/power/supply/bq24257_charger.c
@@ -35,20 +35,15 @@
 
 #define BQ24257_ILIM_SET_DELAY		1000	/* msec */
 
-/*
- * When adding support for new devices make sure that enum bq2425x_chip and
- * bq2425x_chip_name[] always stay in sync!
- */
 enum bq2425x_chip {
 	BQ24250,
 	BQ24251,
 	BQ24257,
 };
 
-static const char *const bq2425x_chip_name[] = {
-	"bq24250",
-	"bq24251",
-	"bq24257",
+struct bq2425x_chip_info {
+	const char *const name;
+	enum bq2425x_chip chip;
 };
 
 enum bq24257_fields {
@@ -84,7 +79,7 @@ struct bq24257_device {
 	struct device *dev;
 	struct power_supply *charger;
 
-	enum bq2425x_chip chip;
+	const struct bq2425x_chip_info *info;
 
 	struct regmap *rmap;
 	struct regmap_field *rmap_fields[F_MAX_FIELDS];
@@ -329,7 +324,7 @@ static int bq24257_power_supply_get_property(struct power_supply *psy,
 		break;
 
 	case POWER_SUPPLY_PROP_MODEL_NAME:
-		val->strval = bq2425x_chip_name[bq->chip];
+		val->strval = bq->info->name;
 		break;
 
 	case POWER_SUPPLY_PROP_ONLINE:
@@ -947,10 +942,8 @@ static int bq24257_fw_probe(struct bq24257_device *bq)
 
 static int bq24257_probe(struct i2c_client *client)
 {
-	const struct i2c_device_id *id = i2c_client_get_device_id(client);
 	struct i2c_adapter *adapter = client->adapter;
 	struct device *dev = &client->dev;
-	const struct acpi_device_id *acpi_id;
 	struct bq24257_device *bq;
 	int ret;
 	int i;
@@ -967,17 +960,9 @@ static int bq24257_probe(struct i2c_client *client)
 	bq->client = client;
 	bq->dev = dev;
 
-	if (ACPI_HANDLE(dev)) {
-		acpi_id = acpi_match_device(dev->driver->acpi_match_table,
-					    &client->dev);
-		if (!acpi_id) {
-			dev_err(dev, "Failed to match ACPI device\n");
-			return -ENODEV;
-		}
-		bq->chip = (enum bq2425x_chip)acpi_id->driver_data;
-	} else {
-		bq->chip = (enum bq2425x_chip)id->driver_data;
-	}
+	bq->info = i2c_get_match_data(client);
+	if (!bq->info)
+		return dev_err_probe(dev, -ENODEV, "Failed to match device\n");
 
 	mutex_init(&bq->lock);
 
@@ -1015,7 +1000,7 @@ static int bq24257_probe(struct i2c_client *client)
 	 * used for the automatic setting of the input current limit setting so
 	 * explicitly disable that feature.
 	 */
-	if (bq->chip == BQ24250)
+	if (bq->info->chip == BQ24250)
 		bq->iilimit_autoset_enable = false;
 
 	if (bq->iilimit_autoset_enable)
@@ -1028,7 +1013,7 @@ static int bq24257_probe(struct i2c_client *client)
 	 * the PG state. We also use a SW-based approach for all other devices
 	 * if the PG pin is either not defined or can't be probed.
 	 */
-	if (bq->chip != BQ24250)
+	if (bq->info->chip != BQ24250)
 		bq24257_pg_gpio_probe(bq);
 
 	if (PTR_ERR(bq->pg) == -EPROBE_DEFER)
@@ -1066,7 +1051,7 @@ static int bq24257_probe(struct i2c_client *client)
 					bq24257_irq_handler_thread,
 					IRQF_TRIGGER_FALLING |
 					IRQF_TRIGGER_RISING | IRQF_ONESHOT,
-					bq2425x_chip_name[bq->chip], bq);
+					bq->info->name, bq);
 	if (ret) {
 		dev_err(dev, "Failed to request IRQ #%d\n", client->irq);
 		return ret;
@@ -1132,27 +1117,42 @@ static const struct dev_pm_ops bq24257_pm = {
 	SET_SYSTEM_SLEEP_PM_OPS(bq24257_suspend, bq24257_resume)
 };
 
+static const struct bq2425x_chip_info bq24250_info = {
+	.name = "bq24250",
+	.chip = BQ24250,
+};
+
+static const struct bq2425x_chip_info bq24251_info = {
+	.name = "bq24251",
+	.chip = BQ24251,
+};
+
+static const struct bq2425x_chip_info bq24257_info = {
+	.name = "bq24257",
+	.chip = BQ24257,
+};
+
 static const struct i2c_device_id bq24257_i2c_ids[] = {
-	{ "bq24250", BQ24250 },
-	{ "bq24251", BQ24251 },
-	{ "bq24257", BQ24257 },
+	{ "bq24250", (kernel_ulong_t)&bq24250_info },
+	{ "bq24251", (kernel_ulong_t)&bq24251_info },
+	{ "bq24257", (kernel_ulong_t)&bq24257_info },
 	{},
 };
 MODULE_DEVICE_TABLE(i2c, bq24257_i2c_ids);
 
 static const struct of_device_id bq24257_of_match[] __maybe_unused = {
-	{ .compatible = "ti,bq24250", },
-	{ .compatible = "ti,bq24251", },
-	{ .compatible = "ti,bq24257", },
+	{ .compatible = "ti,bq24250", &bq24250_info },
+	{ .compatible = "ti,bq24251", &bq24251_info },
+	{ .compatible = "ti,bq24257", &bq24257_info },
 	{ },
 };
 MODULE_DEVICE_TABLE(of, bq24257_of_match);
 
 #ifdef CONFIG_ACPI
 static const struct acpi_device_id bq24257_acpi_match[] = {
-	{ "BQ242500", BQ24250 },
-	{ "BQ242510", BQ24251 },
-	{ "BQ242570", BQ24257 },
+	{ "BQ242500", (kernel_ulong_t)&bq24250_info },
+	{ "BQ242510", (kernel_ulong_t)&bq24251_info },
+	{ "BQ242570", (kernel_ulong_t)&bq24257_info },
 	{},
 };
 MODULE_DEVICE_TABLE(acpi, bq24257_acpi_match);
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/2] power: supply: bq24257_charger: Some cleanups
  2023-09-02 19:33 [PATCH 0/2] Match data improvements for bq24257_charger driver Biju Das
  2023-09-02 19:33 ` [PATCH 1/2] power: supply: bq24257_charger: Make chip type and name in sync Biju Das
@ 2023-09-02 19:33 ` Biju Das
  2023-09-04 10:08   ` Andy Shevchenko
  2023-09-12 21:52 ` [PATCH 0/2] Match data improvements for bq24257_charger driver Sebastian Reichel
  2 siblings, 1 reply; 10+ messages in thread
From: Biju Das @ 2023-09-02 19:33 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: Biju Das, linux-pm, linux-kernel, Biju Das, Andy Shevchenko

Some cleanups:
 * Remove trailing comma in the terminator entry for OF/ID/ACPI table.
 * Drop a space from terminator entry for OF table.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
---
 drivers/power/supply/bq24257_charger.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/power/supply/bq24257_charger.c b/drivers/power/supply/bq24257_charger.c
index 188812f4a79b..801d0d2c5f2e 100644
--- a/drivers/power/supply/bq24257_charger.c
+++ b/drivers/power/supply/bq24257_charger.c
@@ -1136,7 +1136,7 @@ static const struct i2c_device_id bq24257_i2c_ids[] = {
 	{ "bq24250", (kernel_ulong_t)&bq24250_info },
 	{ "bq24251", (kernel_ulong_t)&bq24251_info },
 	{ "bq24257", (kernel_ulong_t)&bq24257_info },
-	{},
+	{}
 };
 MODULE_DEVICE_TABLE(i2c, bq24257_i2c_ids);
 
@@ -1144,7 +1144,7 @@ static const struct of_device_id bq24257_of_match[] __maybe_unused = {
 	{ .compatible = "ti,bq24250", &bq24250_info },
 	{ .compatible = "ti,bq24251", &bq24251_info },
 	{ .compatible = "ti,bq24257", &bq24257_info },
-	{ },
+	{}
 };
 MODULE_DEVICE_TABLE(of, bq24257_of_match);
 
@@ -1153,7 +1153,7 @@ static const struct acpi_device_id bq24257_acpi_match[] = {
 	{ "BQ242500", (kernel_ulong_t)&bq24250_info },
 	{ "BQ242510", (kernel_ulong_t)&bq24251_info },
 	{ "BQ242570", (kernel_ulong_t)&bq24257_info },
-	{},
+	{}
 };
 MODULE_DEVICE_TABLE(acpi, bq24257_acpi_match);
 #endif
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] power: supply: bq24257_charger: Make chip type and name in sync
  2023-09-02 19:33 ` [PATCH 1/2] power: supply: bq24257_charger: Make chip type and name in sync Biju Das
@ 2023-09-04 10:07   ` Andy Shevchenko
  2023-09-10  7:10     ` Biju Das
  0 siblings, 1 reply; 10+ messages in thread
From: Andy Shevchenko @ 2023-09-04 10:07 UTC (permalink / raw)
  To: Biju Das; +Cc: Sebastian Reichel, linux-pm, linux-kernel, Biju Das

On Sat, Sep 02, 2023 at 08:33:30PM +0100, Biju Das wrote:
> Add struct bq2425x_chip_info to make enum bq2425x_chip and it's name in
> sync and replace chip->info in struct bq24257_device and add struct
> bq2425x_chip_info as match data for OF/ACPI/ID tables.
> 
> Simpilfy probe() by replacing acpi_match_device() and id lookup for
> retrieving match data by using i2c_get_match_data().
> 
> Drop bq2425x_chip_name as there is no user and also drop the comment
> related to syncing chip and name as it is taken care by struct
> bq2425x_chip_info.

...

> -	if (ACPI_HANDLE(dev)) {
> -		acpi_id = acpi_match_device(dev->driver->acpi_match_table,
> -					    &client->dev);
> -		if (!acpi_id) {
> -			dev_err(dev, "Failed to match ACPI device\n");
> -			return -ENODEV;
> -		}
> -		bq->chip = (enum bq2425x_chip)acpi_id->driver_data;
> -	} else {
> -		bq->chip = (enum bq2425x_chip)id->driver_data;
> -	}

Do we still need acpi.h after this change?

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] power: supply: bq24257_charger: Some cleanups
  2023-09-02 19:33 ` [PATCH 2/2] power: supply: bq24257_charger: Some cleanups Biju Das
@ 2023-09-04 10:08   ` Andy Shevchenko
  0 siblings, 0 replies; 10+ messages in thread
From: Andy Shevchenko @ 2023-09-04 10:08 UTC (permalink / raw)
  To: Biju Das; +Cc: Sebastian Reichel, linux-pm, linux-kernel, Biju Das

On Sat, Sep 02, 2023 at 08:33:31PM +0100, Biju Das wrote:
> Some cleanups:
>  * Remove trailing comma in the terminator entry for OF/ID/ACPI table.
>  * Drop a space from terminator entry for OF table.

Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [PATCH 1/2] power: supply: bq24257_charger: Make chip type and name in sync
  2023-09-04 10:07   ` Andy Shevchenko
@ 2023-09-10  7:10     ` Biju Das
  2023-09-11 10:15       ` Andy Shevchenko
  0 siblings, 1 reply; 10+ messages in thread
From: Biju Das @ 2023-09-10  7:10 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Sebastian Reichel, linux-pm@vger.kernel.org,
	linux-kernel@vger.kernel.org, Biju Das

Hi Andy Shevchenko,

> Subject: Re: [PATCH 1/2] power: supply: bq24257_charger: Make chip type and
> name in sync
> 
> On Sat, Sep 02, 2023 at 08:33:30PM +0100, Biju Das wrote:
> > Add struct bq2425x_chip_info to make enum bq2425x_chip and it's name
> > in sync and replace chip->info in struct bq24257_device and add struct
> > bq2425x_chip_info as match data for OF/ACPI/ID tables.
> >
> > Simpilfy probe() by replacing acpi_match_device() and id lookup for
> > retrieving match data by using i2c_get_match_data().
> >
> > Drop bq2425x_chip_name as there is no user and also drop the comment
> > related to syncing chip and name as it is taken care by struct
> > bq2425x_chip_info.
> 
> ...
> 
> > -	if (ACPI_HANDLE(dev)) {
> > -		acpi_id = acpi_match_device(dev->driver->acpi_match_table,
> > -					    &client->dev);
> > -		if (!acpi_id) {
> > -			dev_err(dev, "Failed to match ACPI device\n");
> > -			return -ENODEV;
> > -		}
> > -		bq->chip = (enum bq2425x_chip)acpi_id->driver_data;
> > -	} else {
> > -		bq->chip = (enum bq2425x_chip)id->driver_data;
> > -	}
> 
> Do we still need acpi.h after this change?

Yes, it is still needed as it is using 
ACPI_PTR.

Cheers,
Biju

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] power: supply: bq24257_charger: Make chip type and name in sync
  2023-09-10  7:10     ` Biju Das
@ 2023-09-11 10:15       ` Andy Shevchenko
  2023-09-12 21:49         ` Sebastian Reichel
  0 siblings, 1 reply; 10+ messages in thread
From: Andy Shevchenko @ 2023-09-11 10:15 UTC (permalink / raw)
  To: Biju Das
  Cc: Sebastian Reichel, linux-pm@vger.kernel.org,
	linux-kernel@vger.kernel.org, Biju Das

On Sun, Sep 10, 2023 at 07:10:06AM +0000, Biju Das wrote:
> Hi Andy Shevchenko,
> > On Sat, Sep 02, 2023 at 08:33:30PM +0100, Biju Das wrote:

...

> > > -	if (ACPI_HANDLE(dev)) {
> > > -		acpi_id = acpi_match_device(dev->driver->acpi_match_table,
> > > -					    &client->dev);
> > > -		if (!acpi_id) {
> > > -			dev_err(dev, "Failed to match ACPI device\n");
> > > -			return -ENODEV;
> > > -		}
> > > -		bq->chip = (enum bq2425x_chip)acpi_id->driver_data;
> > > -	} else {
> > > -		bq->chip = (enum bq2425x_chip)id->driver_data;
> > > -	}
> > 
> > Do we still need acpi.h after this change?
> 
> Yes, it is still needed as it is using 
> ACPI_PTR.

Can we, please, drop ACPI_PTR() as it's more harmful than useful (same way as
you dropped the ifdeffery for OF cases in other patches)?

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] power: supply: bq24257_charger: Make chip type and name in sync
  2023-09-11 10:15       ` Andy Shevchenko
@ 2023-09-12 21:49         ` Sebastian Reichel
  2023-09-13 11:23           ` Andy Shevchenko
  0 siblings, 1 reply; 10+ messages in thread
From: Sebastian Reichel @ 2023-09-12 21:49 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Biju Das, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
	Biju Das

[-- Attachment #1: Type: text/plain, Size: 1072 bytes --]

Hi,

On Mon, Sep 11, 2023 at 01:15:09PM +0300, Andy Shevchenko wrote:
> On Sun, Sep 10, 2023 at 07:10:06AM +0000, Biju Das wrote:
> > Hi Andy Shevchenko,
> > > On Sat, Sep 02, 2023 at 08:33:30PM +0100, Biju Das wrote:
> 
> ...
> 
> > > > -	if (ACPI_HANDLE(dev)) {
> > > > -		acpi_id = acpi_match_device(dev->driver->acpi_match_table,
> > > > -					    &client->dev);
> > > > -		if (!acpi_id) {
> > > > -			dev_err(dev, "Failed to match ACPI device\n");
> > > > -			return -ENODEV;
> > > > -		}
> > > > -		bq->chip = (enum bq2425x_chip)acpi_id->driver_data;
> > > > -	} else {
> > > > -		bq->chip = (enum bq2425x_chip)id->driver_data;
> > > > -	}
> > > 
> > > Do we still need acpi.h after this change?
> > 
> > Yes, it is still needed as it is using 
> > ACPI_PTR.
> 
> Can we, please, drop ACPI_PTR() as it's more harmful than useful (same way as
> you dropped the ifdeffery for OF cases in other patches)?

I will go ahead and merge this series, ACPI_PTR() and
of_match_ptr() should be removed in a separate cleanup patch.

-- Sebastian

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/2] Match data improvements for bq24257_charger driver
  2023-09-02 19:33 [PATCH 0/2] Match data improvements for bq24257_charger driver Biju Das
  2023-09-02 19:33 ` [PATCH 1/2] power: supply: bq24257_charger: Make chip type and name in sync Biju Das
  2023-09-02 19:33 ` [PATCH 2/2] power: supply: bq24257_charger: Some cleanups Biju Das
@ 2023-09-12 21:52 ` Sebastian Reichel
  2 siblings, 0 replies; 10+ messages in thread
From: Sebastian Reichel @ 2023-09-12 21:52 UTC (permalink / raw)
  To: Sebastian Reichel, Biju Das
  Cc: linux-pm, linux-kernel, Biju Das, Andy Shevchenko


On Sat, 02 Sep 2023 20:33:29 +0100, Biju Das wrote:
> This patch series aims to add match data improvements for bq24257_charger
> driver.
> 
> This patch series is only compile tested.
> 
> Biju Das (2):
>   power: supply: bq24257_charger: Make chip type and name in sync
>   power: supply: bq24257_charger: Some cleanups
> 
> [...]

Applied, thanks!

[1/2] power: supply: bq24257_charger: Make chip type and name in sync
      commit: 3dc4a291a1b156d3ee9a78672ec950601bd68c1c
[2/2] power: supply: bq24257_charger: Some cleanups
      commit: b92f5e4fccc2ca96241904bb1a4e96547b69163d

Best regards,
-- 
Sebastian Reichel <sebastian.reichel@collabora.com>


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] power: supply: bq24257_charger: Make chip type and name in sync
  2023-09-12 21:49         ` Sebastian Reichel
@ 2023-09-13 11:23           ` Andy Shevchenko
  0 siblings, 0 replies; 10+ messages in thread
From: Andy Shevchenko @ 2023-09-13 11:23 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: Biju Das, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
	Biju Das

On Tue, Sep 12, 2023 at 11:49:25PM +0200, Sebastian Reichel wrote:
> On Mon, Sep 11, 2023 at 01:15:09PM +0300, Andy Shevchenko wrote:
> > On Sun, Sep 10, 2023 at 07:10:06AM +0000, Biju Das wrote:
> > > Hi Andy Shevchenko,
> > > > On Sat, Sep 02, 2023 at 08:33:30PM +0100, Biju Das wrote:

...

> > > > Do we still need acpi.h after this change?
> > > 
> > > Yes, it is still needed as it is using 
> > > ACPI_PTR.
> > 
> > Can we, please, drop ACPI_PTR() as it's more harmful than useful (same way as
> > you dropped the ifdeffery for OF cases in other patches)?
> 
> I will go ahead and merge this series, ACPI_PTR() and
> of_match_ptr() should be removed in a separate cleanup patch.

Sure, that's exactly what I expects to happen.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2023-09-13 11:23 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-02 19:33 [PATCH 0/2] Match data improvements for bq24257_charger driver Biju Das
2023-09-02 19:33 ` [PATCH 1/2] power: supply: bq24257_charger: Make chip type and name in sync Biju Das
2023-09-04 10:07   ` Andy Shevchenko
2023-09-10  7:10     ` Biju Das
2023-09-11 10:15       ` Andy Shevchenko
2023-09-12 21:49         ` Sebastian Reichel
2023-09-13 11:23           ` Andy Shevchenko
2023-09-02 19:33 ` [PATCH 2/2] power: supply: bq24257_charger: Some cleanups Biju Das
2023-09-04 10:08   ` Andy Shevchenko
2023-09-12 21:52 ` [PATCH 0/2] Match data improvements for bq24257_charger driver Sebastian Reichel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).