* [PATCH v2 0/2] Match data improvements for pca955x driver
@ 2023-09-23 17:19 Biju Das
2023-09-23 17:19 ` [PATCH v2 1/2] leds: pca955x: Convert enum->pointer for data in the match tables Biju Das
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Biju Das @ 2023-09-23 17:19 UTC (permalink / raw)
To: Pavel Machek, Lee Jones
Cc: Biju Das, linux-leds, linux-kernel, Biju Das, Andy Shevchenko
This patch series aims to add match data improvements for pca955x driver.
This patch series is only compile tested.
v1->v2:
* Added Rb tag from Lee Jones for patch#1.
* Adeed patch#2 for cleanup of OF/ID table terminators.
Biju Das (2):
leds: pca955x: Convert enum->pointer for data in the match tables
leds: pca955x: Cleanup OF/ID table terminators
drivers/leds/leds-pca955x.c | 69 +++++++++++++++----------------------
1 file changed, 28 insertions(+), 41 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 1/2] leds: pca955x: Convert enum->pointer for data in the match tables
2023-09-23 17:19 [PATCH v2 0/2] Match data improvements for pca955x driver Biju Das
@ 2023-09-23 17:19 ` Biju Das
2023-09-25 7:21 ` Andy Shevchenko
2023-09-23 17:19 ` [PATCH v2 2/2] leds: pca955x: Cleanup OF/ID table terminators Biju Das
2023-09-28 13:44 ` [PATCH v2 0/2] Match data improvements for pca955x driver Lee Jones
2 siblings, 1 reply; 8+ messages in thread
From: Biju Das @ 2023-09-23 17:19 UTC (permalink / raw)
To: Pavel Machek, Lee Jones
Cc: Biju Das, linux-leds, linux-kernel, Biju Das, Andy Shevchenko
Convert enum->pointer for data in the match tables, so that
device_get_match_data() can do match against OF/ACPI/I2C tables, once i2c
bus type match support added to it.
Replace enum->struct *pca955x_chipdefs for data in the match table.
Simplify the probe() by replacing device_get_match_data() and ID lookup
for retrieving data by i2c_get_match_data().
While at it, add const definition to pca955x_chipdefs[].
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lee Jones <lee@kernel.org>
---
v1->v2:
* Rebased to leds-next.
* Added Rb tag from Lee Jones.
---
drivers/leds/leds-pca955x.c | 49 ++++++++++++++-----------------------
1 file changed, 18 insertions(+), 31 deletions(-)
diff --git a/drivers/leds/leds-pca955x.c b/drivers/leds/leds-pca955x.c
index 1d7fa0cd97bf..891cfc05301d 100644
--- a/drivers/leds/leds-pca955x.c
+++ b/drivers/leds/leds-pca955x.c
@@ -76,7 +76,7 @@ struct pca955x_chipdef {
int slv_addr_shift; /* Number of bits to ignore */
};
-static struct pca955x_chipdef pca955x_chipdefs[] = {
+static const struct pca955x_chipdef pca955x_chipdefs[] = {
[pca9550] = {
.bits = 2,
.slv_addr = /* 110000x */ 0x60,
@@ -105,11 +105,11 @@ static struct pca955x_chipdef pca955x_chipdefs[] = {
};
static const struct i2c_device_id pca955x_id[] = {
- { "pca9550", pca9550 },
- { "pca9551", pca9551 },
- { "pca9552", pca9552 },
- { "ibm-pca9552", ibm_pca9552 },
- { "pca9553", pca9553 },
+ { "pca9550", (kernel_ulong_t)&pca955x_chipdefs[pca9550] },
+ { "pca9551", (kernel_ulong_t)&pca955x_chipdefs[pca9551] },
+ { "pca9552", (kernel_ulong_t)&pca955x_chipdefs[pca9552] },
+ { "ibm-pca9552", (kernel_ulong_t)&pca955x_chipdefs[ibm_pca9552] },
+ { "pca9553", (kernel_ulong_t)&pca955x_chipdefs[pca9553] },
{ }
};
MODULE_DEVICE_TABLE(i2c, pca955x_id);
@@ -117,7 +117,7 @@ MODULE_DEVICE_TABLE(i2c, pca955x_id);
struct pca955x {
struct mutex lock;
struct pca955x_led *leds;
- struct pca955x_chipdef *chipdef;
+ const struct pca955x_chipdef *chipdef;
struct i2c_client *client;
unsigned long active_pins;
#ifdef CONFIG_LEDS_PCA955X_GPIO
@@ -415,7 +415,7 @@ static int pca955x_gpio_direction_output(struct gpio_chip *gc,
#endif /* CONFIG_LEDS_PCA955X_GPIO */
static struct pca955x_platform_data *
-pca955x_get_pdata(struct i2c_client *client, struct pca955x_chipdef *chip)
+pca955x_get_pdata(struct i2c_client *client, const struct pca955x_chipdef *chip)
{
struct pca955x_platform_data *pdata;
struct pca955x_led *led;
@@ -458,11 +458,11 @@ pca955x_get_pdata(struct i2c_client *client, struct pca955x_chipdef *chip)
}
static const struct of_device_id of_pca955x_match[] = {
- { .compatible = "nxp,pca9550", .data = (void *)pca9550 },
- { .compatible = "nxp,pca9551", .data = (void *)pca9551 },
- { .compatible = "nxp,pca9552", .data = (void *)pca9552 },
- { .compatible = "ibm,pca9552", .data = (void *)ibm_pca9552 },
- { .compatible = "nxp,pca9553", .data = (void *)pca9553 },
+ { .compatible = "nxp,pca9550", .data = &pca955x_chipdefs[pca9550] },
+ { .compatible = "nxp,pca9551", .data = &pca955x_chipdefs[pca9551] },
+ { .compatible = "nxp,pca9552", .data = &pca955x_chipdefs[pca9552] },
+ { .compatible = "ibm,pca9552", .data = &pca955x_chipdefs[ibm_pca9552] },
+ { .compatible = "nxp,pca9553", .data = &pca955x_chipdefs[pca9553] },
{},
};
MODULE_DEVICE_TABLE(of, of_pca955x_match);
@@ -471,7 +471,7 @@ static int pca955x_probe(struct i2c_client *client)
{
struct pca955x *pca955x;
struct pca955x_led *pca955x_led;
- struct pca955x_chipdef *chip;
+ const struct pca955x_chipdef *chip;
struct led_classdev *led;
struct led_init_data init_data;
struct i2c_adapter *adapter;
@@ -480,24 +480,11 @@ static int pca955x_probe(struct i2c_client *client)
bool set_default_label = false;
bool keep_pwm = false;
char default_label[8];
- enum pca955x_type chip_type;
- const void *md = device_get_match_data(&client->dev);
-
- if (md) {
- chip_type = (enum pca955x_type)(uintptr_t)md;
- } else {
- const struct i2c_device_id *id = i2c_match_id(pca955x_id,
- client);
-
- if (id) {
- chip_type = (enum pca955x_type)id->driver_data;
- } else {
- dev_err(&client->dev, "unknown chip\n");
- return -ENODEV;
- }
- }
- chip = &pca955x_chipdefs[chip_type];
+ chip = i2c_get_match_data(client);
+ if (!chip)
+ return dev_err_probe(&client->dev, -ENODEV, "unknown chip\n");
+
adapter = client->adapter;
pdata = dev_get_platdata(&client->dev);
if (!pdata) {
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 2/2] leds: pca955x: Cleanup OF/ID table terminators
2023-09-23 17:19 [PATCH v2 0/2] Match data improvements for pca955x driver Biju Das
2023-09-23 17:19 ` [PATCH v2 1/2] leds: pca955x: Convert enum->pointer for data in the match tables Biju Das
@ 2023-09-23 17:19 ` Biju Das
2023-09-25 7:22 ` Andy Shevchenko
2023-09-28 13:44 ` [PATCH v2 0/2] Match data improvements for pca955x driver Lee Jones
2 siblings, 1 reply; 8+ messages in thread
From: Biju Das @ 2023-09-23 17:19 UTC (permalink / raw)
To: Pavel Machek, Lee Jones
Cc: Biju Das, linux-leds, linux-kernel, Biju Das, Andy Shevchenko
Some cleanups:
* Remove the trailing comma in the terminator entry for the OF
table making code robust against (theoretical) misrebases or other
similar things where the new entry goes _after_ the termination without
the compiler noticing.
* Drop a space from terminator entry for ID table.
While at it, move OF/ID table near to the user.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
---
v2:
* New patch.
---
drivers/leds/leds-pca955x.c | 40 ++++++++++++++++++-------------------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/drivers/leds/leds-pca955x.c b/drivers/leds/leds-pca955x.c
index 891cfc05301d..94a9f8a54b35 100644
--- a/drivers/leds/leds-pca955x.c
+++ b/drivers/leds/leds-pca955x.c
@@ -104,16 +104,6 @@ static const struct pca955x_chipdef pca955x_chipdefs[] = {
},
};
-static const struct i2c_device_id pca955x_id[] = {
- { "pca9550", (kernel_ulong_t)&pca955x_chipdefs[pca9550] },
- { "pca9551", (kernel_ulong_t)&pca955x_chipdefs[pca9551] },
- { "pca9552", (kernel_ulong_t)&pca955x_chipdefs[pca9552] },
- { "ibm-pca9552", (kernel_ulong_t)&pca955x_chipdefs[ibm_pca9552] },
- { "pca9553", (kernel_ulong_t)&pca955x_chipdefs[pca9553] },
- { }
-};
-MODULE_DEVICE_TABLE(i2c, pca955x_id);
-
struct pca955x {
struct mutex lock;
struct pca955x_led *leds;
@@ -457,16 +447,6 @@ pca955x_get_pdata(struct i2c_client *client, const struct pca955x_chipdef *chip)
return pdata;
}
-static const struct of_device_id of_pca955x_match[] = {
- { .compatible = "nxp,pca9550", .data = &pca955x_chipdefs[pca9550] },
- { .compatible = "nxp,pca9551", .data = &pca955x_chipdefs[pca9551] },
- { .compatible = "nxp,pca9552", .data = &pca955x_chipdefs[pca9552] },
- { .compatible = "ibm,pca9552", .data = &pca955x_chipdefs[ibm_pca9552] },
- { .compatible = "nxp,pca9553", .data = &pca955x_chipdefs[pca9553] },
- {},
-};
-MODULE_DEVICE_TABLE(of, of_pca955x_match);
-
static int pca955x_probe(struct i2c_client *client)
{
struct pca955x *pca955x;
@@ -650,6 +630,26 @@ static int pca955x_probe(struct i2c_client *client)
return 0;
}
+static const struct i2c_device_id pca955x_id[] = {
+ { "pca9550", (kernel_ulong_t)&pca955x_chipdefs[pca9550] },
+ { "pca9551", (kernel_ulong_t)&pca955x_chipdefs[pca9551] },
+ { "pca9552", (kernel_ulong_t)&pca955x_chipdefs[pca9552] },
+ { "ibm-pca9552", (kernel_ulong_t)&pca955x_chipdefs[ibm_pca9552] },
+ { "pca9553", (kernel_ulong_t)&pca955x_chipdefs[pca9553] },
+ {}
+};
+MODULE_DEVICE_TABLE(i2c, pca955x_id);
+
+static const struct of_device_id of_pca955x_match[] = {
+ { .compatible = "nxp,pca9550", .data = &pca955x_chipdefs[pca9550] },
+ { .compatible = "nxp,pca9551", .data = &pca955x_chipdefs[pca9551] },
+ { .compatible = "nxp,pca9552", .data = &pca955x_chipdefs[pca9552] },
+ { .compatible = "ibm,pca9552", .data = &pca955x_chipdefs[ibm_pca9552] },
+ { .compatible = "nxp,pca9553", .data = &pca955x_chipdefs[pca9553] },
+ {}
+};
+MODULE_DEVICE_TABLE(of, of_pca955x_match);
+
static struct i2c_driver pca955x_driver = {
.driver = {
.name = "leds-pca955x",
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] leds: pca955x: Convert enum->pointer for data in the match tables
2023-09-23 17:19 ` [PATCH v2 1/2] leds: pca955x: Convert enum->pointer for data in the match tables Biju Das
@ 2023-09-25 7:21 ` Andy Shevchenko
2023-09-28 13:44 ` Lee Jones
0 siblings, 1 reply; 8+ messages in thread
From: Andy Shevchenko @ 2023-09-25 7:21 UTC (permalink / raw)
To: Biju Das; +Cc: Pavel Machek, Lee Jones, linux-leds, linux-kernel, Biju Das
On Sat, Sep 23, 2023 at 06:19:20PM +0100, Biju Das wrote:
> Convert enum->pointer for data in the match tables, so that
> device_get_match_data() can do match against OF/ACPI/I2C tables, once i2c
> bus type match support added to it.
>
> Replace enum->struct *pca955x_chipdefs for data in the match table.
> Simplify the probe() by replacing device_get_match_data() and ID lookup
> for retrieving data by i2c_get_match_data().
>
> While at it, add const definition to pca955x_chipdefs[].
...
> - struct pca955x_chipdef *chipdef;
> + const struct pca955x_chipdef *chipdef;
No need to preserve TAB(s) here.
Otherwise looks good to me,
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/2] leds: pca955x: Cleanup OF/ID table terminators
2023-09-23 17:19 ` [PATCH v2 2/2] leds: pca955x: Cleanup OF/ID table terminators Biju Das
@ 2023-09-25 7:22 ` Andy Shevchenko
0 siblings, 0 replies; 8+ messages in thread
From: Andy Shevchenko @ 2023-09-25 7:22 UTC (permalink / raw)
To: Biju Das; +Cc: Pavel Machek, Lee Jones, linux-leds, linux-kernel, Biju Das
On Sat, Sep 23, 2023 at 06:19:21PM +0100, Biju Das wrote:
> Some cleanups:
> * Remove the trailing comma in the terminator entry for the OF
> table making code robust against (theoretical) misrebases or other
> similar things where the new entry goes _after_ the termination without
> the compiler noticing.
> * Drop a space from terminator entry for ID table.
>
> While at it, move OF/ID table near to the user.
OK!
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 0/2] Match data improvements for pca955x driver
2023-09-23 17:19 [PATCH v2 0/2] Match data improvements for pca955x driver Biju Das
2023-09-23 17:19 ` [PATCH v2 1/2] leds: pca955x: Convert enum->pointer for data in the match tables Biju Das
2023-09-23 17:19 ` [PATCH v2 2/2] leds: pca955x: Cleanup OF/ID table terminators Biju Das
@ 2023-09-28 13:44 ` Lee Jones
2 siblings, 0 replies; 8+ messages in thread
From: Lee Jones @ 2023-09-28 13:44 UTC (permalink / raw)
To: Pavel Machek, Lee Jones, Biju Das
Cc: linux-leds, linux-kernel, Biju Das, Andy Shevchenko
On Sat, 23 Sep 2023 18:19:19 +0100, Biju Das wrote:
> This patch series aims to add match data improvements for pca955x driver.
>
> This patch series is only compile tested.
>
> v1->v2:
> * Added Rb tag from Lee Jones for patch#1.
> * Adeed patch#2 for cleanup of OF/ID table terminators.
>
> [...]
Applied, thanks!
[1/2] leds: pca955x: Convert enum->pointer for data in the match tables
commit: 734adca71b2ccc6df12c244037e0b284aab7cf58
[2/2] leds: pca955x: Cleanup OF/ID table terminators
commit: e1f9ce22d669bc53210d1c1017f96eeef067b034
--
Lee Jones [李琼斯]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] leds: pca955x: Convert enum->pointer for data in the match tables
2023-09-25 7:21 ` Andy Shevchenko
@ 2023-09-28 13:44 ` Lee Jones
2023-09-28 13:51 ` Biju Das
0 siblings, 1 reply; 8+ messages in thread
From: Lee Jones @ 2023-09-28 13:44 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Biju Das, Pavel Machek, linux-leds, linux-kernel, Biju Das
On Mon, 25 Sep 2023, Andy Shevchenko wrote:
> On Sat, Sep 23, 2023 at 06:19:20PM +0100, Biju Das wrote:
> > Convert enum->pointer for data in the match tables, so that
> > device_get_match_data() can do match against OF/ACPI/I2C tables, once i2c
> > bus type match support added to it.
> >
> > Replace enum->struct *pca955x_chipdefs for data in the match table.
> > Simplify the probe() by replacing device_get_match_data() and ID lookup
> > for retrieving data by i2c_get_match_data().
> >
> > While at it, add const definition to pca955x_chipdefs[].
>
> ...
>
> > - struct pca955x_chipdef *chipdef;
> > + const struct pca955x_chipdef *chipdef;
>
> No need to preserve TAB(s) here.
Follow-up please.
--
Lee Jones [李琼斯]
^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH v2 1/2] leds: pca955x: Convert enum->pointer for data in the match tables
2023-09-28 13:44 ` Lee Jones
@ 2023-09-28 13:51 ` Biju Das
0 siblings, 0 replies; 8+ messages in thread
From: Biju Das @ 2023-09-28 13:51 UTC (permalink / raw)
To: Lee Jones, Andy Shevchenko
Cc: Pavel Machek, linux-leds@vger.kernel.org,
linux-kernel@vger.kernel.org, Biju Das
Hi Lee Jones,
> -----Original Message-----
> From: Lee Jones <lee@kernel.org>
> Sent: Thursday, September 28, 2023 2:44 PM
> To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Cc: Biju Das <biju.das.jz@bp.renesas.com>; Pavel Machek <pavel@ucw.cz>;
> linux-leds@vger.kernel.org; linux-kernel@vger.kernel.org; Biju Das
> <biju.das.au@gmail.com>
> Subject: Re: [PATCH v2 1/2] leds: pca955x: Convert enum->pointer for data
> in the match tables
>
> On Mon, 25 Sep 2023, Andy Shevchenko wrote:
>
> > On Sat, Sep 23, 2023 at 06:19:20PM +0100, Biju Das wrote:
> > > Convert enum->pointer for data in the match tables, so that
> > > device_get_match_data() can do match against OF/ACPI/I2C tables,
> > > once i2c bus type match support added to it.
> > >
> > > Replace enum->struct *pca955x_chipdefs for data in the match table.
> > > Simplify the probe() by replacing device_get_match_data() and ID
> > > lookup for retrieving data by i2c_get_match_data().
> > >
> > > While at it, add const definition to pca955x_chipdefs[].
> >
> > ...
> >
> > > - struct pca955x_chipdef *chipdef;
> > > + const struct pca955x_chipdef *chipdef;
> >
> > No need to preserve TAB(s) here.
>
> Follow-up please.
Sure will send a follow-up patch to fix this tab issue as it is a separate change.
Cheers,
Biju
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-09-28 13:51 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-23 17:19 [PATCH v2 0/2] Match data improvements for pca955x driver Biju Das
2023-09-23 17:19 ` [PATCH v2 1/2] leds: pca955x: Convert enum->pointer for data in the match tables Biju Das
2023-09-25 7:21 ` Andy Shevchenko
2023-09-28 13:44 ` Lee Jones
2023-09-28 13:51 ` Biju Das
2023-09-23 17:19 ` [PATCH v2 2/2] leds: pca955x: Cleanup OF/ID table terminators Biju Das
2023-09-25 7:22 ` Andy Shevchenko
2023-09-28 13:44 ` [PATCH v2 0/2] Match data improvements for pca955x driver Lee Jones
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.