Message ID | 1480414910-16691-1-git-send-email-tnhuynh@apm.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
On Tue, Nov 29, 2016 at 05:21:50PM +0700, Tin Huynh wrote: > This patch enables ACPI support for leds-pca963x driver. > > Signed-off-by: Tin Huynh <tnhuynh@apm.com> Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com> -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 11/29/2016 11:21 AM, Tin Huynh wrote: > This patch enables ACPI support for leds-pca963x driver. > > Signed-off-by: Tin Huynh <tnhuynh@apm.com> > --- > drivers/leds/leds-pca963x.c | 25 ++++++++++++++++++++++++- > 1 files changed, 24 insertions(+), 1 deletions(-) > > Change from V1: > -Add CONFIG_ACPI. > > diff --git a/drivers/leds/leds-pca963x.c b/drivers/leds/leds-pca963x.c > index 407eba1..57f11e3 100644 > --- a/drivers/leds/leds-pca963x.c > +++ b/drivers/leds/leds-pca963x.c > @@ -25,6 +25,7 @@ > * or by adding the 'nxp,hw-blink' property to the DTS. > */ > > +#include <linux/acpi.h> > #include <linux/module.h> > #include <linux/delay.h> > #include <linux/string.h> > @@ -95,6 +96,17 @@ struct pca963x_chipdef { > }; > MODULE_DEVICE_TABLE(i2c, pca963x_id); > > +#ifdef CONFIG_ACPI > +static const struct acpi_device_id pca963x_acpi_ids[] = { > + { "PCA9632", pca9633 }, > + { "PCA9633", pca9633 }, > + { "PCA9634", pca9634 }, > + { "PCA9635", pca9635 }, > + { } > +}; > +MODULE_DEVICE_TABLE(acpi, pca963x_acpi_ids); > +#endif > + > struct pca963x_led; > > struct pca963x { > @@ -322,7 +334,17 @@ static int pca963x_probe(struct i2c_client *client, > struct pca963x_chipdef *chip; > int i, err; > > - chip = &pca963x_chipdefs[id->driver_data]; > + if (id) { > + chip = &pca963x_chipdefs[id->driver_data]; > + } else { > + const struct acpi_device_id *acpi_id; > + > + acpi_id = acpi_match_device(ACPI_PTR(pca963x_acpi_ids), > + &client->dev); What kind of problem did you get while compiling without ACPI_PTR here, when CONFIG_ACPI is disabled? I also tried this configuration but nothing wrong happened. Also at first glance I don't see why lack of ACPI_PTR macro could cause problems. Grep also doesn't show any call to acpi_match_device with ACPI_PTR as the first argument in the existing drivers. > + if (!acpi_id) > + return -ENODEV; > + chip = &pca963x_chipdefs[acpi_id->driver_data]; > + } > pdata = dev_get_platdata(&client->dev); > > if (!pdata) { > @@ -426,6 +448,7 @@ static int pca963x_remove(struct i2c_client *client) > .driver = { > .name = "leds-pca963x", > .of_match_table = of_match_ptr(of_pca963x_match), > + .acpi_match_table = ACPI_PTR(pca963x_acpi_ids), > }, > .probe = pca963x_probe, > .remove = pca963x_remove, >
On Tue, Nov 29, 2016 at 11:55:47AM +0100, Jacek Anaszewski wrote: > On 11/29/2016 11:21 AM, Tin Huynh wrote: > > This patch enables ACPI support for leds-pca963x driver. > > > > Signed-off-by: Tin Huynh <tnhuynh@apm.com> > > --- > > drivers/leds/leds-pca963x.c | 25 ++++++++++++++++++++++++- > > 1 files changed, 24 insertions(+), 1 deletions(-) > > > > Change from V1: > > -Add CONFIG_ACPI. > > > > diff --git a/drivers/leds/leds-pca963x.c b/drivers/leds/leds-pca963x.c > > index 407eba1..57f11e3 100644 > > --- a/drivers/leds/leds-pca963x.c > > +++ b/drivers/leds/leds-pca963x.c > > @@ -25,6 +25,7 @@ > > * or by adding the 'nxp,hw-blink' property to the DTS. > > */ > > > > +#include <linux/acpi.h> > > #include <linux/module.h> > > #include <linux/delay.h> > > #include <linux/string.h> > > @@ -95,6 +96,17 @@ struct pca963x_chipdef { > > }; > > MODULE_DEVICE_TABLE(i2c, pca963x_id); > > > > +#ifdef CONFIG_ACPI > > +static const struct acpi_device_id pca963x_acpi_ids[] = { > > + { "PCA9632", pca9633 }, > > + { "PCA9633", pca9633 }, > > + { "PCA9634", pca9634 }, > > + { "PCA9635", pca9635 }, > > + { } > > +}; > > +MODULE_DEVICE_TABLE(acpi, pca963x_acpi_ids); > > +#endif > > + > > struct pca963x_led; > > > > struct pca963x { > > @@ -322,7 +334,17 @@ static int pca963x_probe(struct i2c_client *client, > > struct pca963x_chipdef *chip; > > int i, err; > > > > - chip = &pca963x_chipdefs[id->driver_data]; > > + if (id) { > > + chip = &pca963x_chipdefs[id->driver_data]; > > + } else { > > + const struct acpi_device_id *acpi_id; > > + > > + acpi_id = acpi_match_device(ACPI_PTR(pca963x_acpi_ids), > > + &client->dev); > > What kind of problem did you get while compiling without ACPI_PTR here, > when CONFIG_ACPI is disabled? I also tried this configuration but > nothing wrong happened. Also at first glance I don't see why lack of > ACPI_PTR macro could cause problems. > > Grep also doesn't show any call to acpi_match_device > with ACPI_PTR as the first argument in the existing drivers. Indeed, that is not needed at all. -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Nov 29, 2016 at 6:04 PM, Mika Westerberg <mika.westerberg@linux.intel.com> wrote: > On Tue, Nov 29, 2016 at 11:55:47AM +0100, Jacek Anaszewski wrote: >> On 11/29/2016 11:21 AM, Tin Huynh wrote: >> > This patch enables ACPI support for leds-pca963x driver. >> > >> > Signed-off-by: Tin Huynh <tnhuynh@apm.com> >> > --- >> > drivers/leds/leds-pca963x.c | 25 ++++++++++++++++++++++++- >> > 1 files changed, 24 insertions(+), 1 deletions(-) >> > >> > Change from V1: >> > -Add CONFIG_ACPI. >> > >> > diff --git a/drivers/leds/leds-pca963x.c b/drivers/leds/leds-pca963x.c >> > index 407eba1..57f11e3 100644 >> > --- a/drivers/leds/leds-pca963x.c >> > +++ b/drivers/leds/leds-pca963x.c >> > @@ -25,6 +25,7 @@ >> > * or by adding the 'nxp,hw-blink' property to the DTS. >> > */ >> > >> > +#include <linux/acpi.h> >> > #include <linux/module.h> >> > #include <linux/delay.h> >> > #include <linux/string.h> >> > @@ -95,6 +96,17 @@ struct pca963x_chipdef { >> > }; >> > MODULE_DEVICE_TABLE(i2c, pca963x_id); >> > >> > +#ifdef CONFIG_ACPI >> > +static const struct acpi_device_id pca963x_acpi_ids[] = { >> > + { "PCA9632", pca9633 }, >> > + { "PCA9633", pca9633 }, >> > + { "PCA9634", pca9634 }, >> > + { "PCA9635", pca9635 }, >> > + { } >> > +}; >> > +MODULE_DEVICE_TABLE(acpi, pca963x_acpi_ids); >> > +#endif >> > + >> > struct pca963x_led; >> > >> > struct pca963x { >> > @@ -322,7 +334,17 @@ static int pca963x_probe(struct i2c_client *client, >> > struct pca963x_chipdef *chip; >> > int i, err; >> > >> > - chip = &pca963x_chipdefs[id->driver_data]; >> > + if (id) { >> > + chip = &pca963x_chipdefs[id->driver_data]; >> > + } else { >> > + const struct acpi_device_id *acpi_id; >> > + >> > + acpi_id = acpi_match_device(ACPI_PTR(pca963x_acpi_ids), >> > + &client->dev); >> >> What kind of problem did you get while compiling without ACPI_PTR here, >> when CONFIG_ACPI is disabled? I also tried this configuration but >> nothing wrong happened. Also at first glance I don't see why lack of >> ACPI_PTR macro could cause problems. >> >> Grep also doesn't show any call to acpi_match_device >> with ACPI_PTR as the first argument in the existing drivers. > > Indeed, that is not needed at all. Sorry about that . The PATCH V1 should work fine both with or without CONFIG_ACPI. So V1 should be better . Please ignore PATCH V2 -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Tin, On 11/29/2016 03:47 PM, Tin Huynh wrote: > On Tue, Nov 29, 2016 at 6:04 PM, Mika Westerberg > <mika.westerberg@linux.intel.com> wrote: >> On Tue, Nov 29, 2016 at 11:55:47AM +0100, Jacek Anaszewski wrote: >>> On 11/29/2016 11:21 AM, Tin Huynh wrote: >>>> This patch enables ACPI support for leds-pca963x driver. >>>> >>>> Signed-off-by: Tin Huynh <tnhuynh@apm.com> >>>> --- >>>> drivers/leds/leds-pca963x.c | 25 ++++++++++++++++++++++++- >>>> 1 files changed, 24 insertions(+), 1 deletions(-) >>>> >>>> Change from V1: >>>> -Add CONFIG_ACPI. >>>> >>>> diff --git a/drivers/leds/leds-pca963x.c b/drivers/leds/leds-pca963x.c >>>> index 407eba1..57f11e3 100644 >>>> --- a/drivers/leds/leds-pca963x.c >>>> +++ b/drivers/leds/leds-pca963x.c >>>> @@ -25,6 +25,7 @@ >>>> * or by adding the 'nxp,hw-blink' property to the DTS. >>>> */ >>>> >>>> +#include <linux/acpi.h> >>>> #include <linux/module.h> >>>> #include <linux/delay.h> >>>> #include <linux/string.h> >>>> @@ -95,6 +96,17 @@ struct pca963x_chipdef { >>>> }; >>>> MODULE_DEVICE_TABLE(i2c, pca963x_id); >>>> >>>> +#ifdef CONFIG_ACPI >>>> +static const struct acpi_device_id pca963x_acpi_ids[] = { >>>> + { "PCA9632", pca9633 }, >>>> + { "PCA9633", pca9633 }, >>>> + { "PCA9634", pca9634 }, >>>> + { "PCA9635", pca9635 }, >>>> + { } >>>> +}; >>>> +MODULE_DEVICE_TABLE(acpi, pca963x_acpi_ids); >>>> +#endif >>>> + >>>> struct pca963x_led; >>>> >>>> struct pca963x { >>>> @@ -322,7 +334,17 @@ static int pca963x_probe(struct i2c_client *client, >>>> struct pca963x_chipdef *chip; >>>> int i, err; >>>> >>>> - chip = &pca963x_chipdefs[id->driver_data]; >>>> + if (id) { >>>> + chip = &pca963x_chipdefs[id->driver_data]; >>>> + } else { >>>> + const struct acpi_device_id *acpi_id; >>>> + >>>> + acpi_id = acpi_match_device(ACPI_PTR(pca963x_acpi_ids), >>>> + &client->dev); >>> >>> What kind of problem did you get while compiling without ACPI_PTR here, >>> when CONFIG_ACPI is disabled? I also tried this configuration but >>> nothing wrong happened. Also at first glance I don't see why lack of >>> ACPI_PTR macro could cause problems. >>> >>> Grep also doesn't show any call to acpi_match_device >>> with ACPI_PTR as the first argument in the existing drivers. >> >> Indeed, that is not needed at all. > Sorry about that . The PATCH V1 should work fine both with or without > CONFIG_ACPI. > So V1 should be better . Please ignore PATCH V2 Reapplied V1.
diff --git a/drivers/leds/leds-pca963x.c b/drivers/leds/leds-pca963x.c index 407eba1..57f11e3 100644 --- a/drivers/leds/leds-pca963x.c +++ b/drivers/leds/leds-pca963x.c @@ -25,6 +25,7 @@ * or by adding the 'nxp,hw-blink' property to the DTS. */ +#include <linux/acpi.h> #include <linux/module.h> #include <linux/delay.h> #include <linux/string.h> @@ -95,6 +96,17 @@ struct pca963x_chipdef { }; MODULE_DEVICE_TABLE(i2c, pca963x_id); +#ifdef CONFIG_ACPI +static const struct acpi_device_id pca963x_acpi_ids[] = { + { "PCA9632", pca9633 }, + { "PCA9633", pca9633 }, + { "PCA9634", pca9634 }, + { "PCA9635", pca9635 }, + { } +}; +MODULE_DEVICE_TABLE(acpi, pca963x_acpi_ids); +#endif + struct pca963x_led; struct pca963x { @@ -322,7 +334,17 @@ static int pca963x_probe(struct i2c_client *client, struct pca963x_chipdef *chip; int i, err; - chip = &pca963x_chipdefs[id->driver_data]; + if (id) { + chip = &pca963x_chipdefs[id->driver_data]; + } else { + const struct acpi_device_id *acpi_id; + + acpi_id = acpi_match_device(ACPI_PTR(pca963x_acpi_ids), + &client->dev); + if (!acpi_id) + return -ENODEV; + chip = &pca963x_chipdefs[acpi_id->driver_data]; + } pdata = dev_get_platdata(&client->dev); if (!pdata) { @@ -426,6 +448,7 @@ static int pca963x_remove(struct i2c_client *client) .driver = { .name = "leds-pca963x", .of_match_table = of_match_ptr(of_pca963x_match), + .acpi_match_table = ACPI_PTR(pca963x_acpi_ids), }, .probe = pca963x_probe, .remove = pca963x_remove,
This patch enables ACPI support for leds-pca963x driver. Signed-off-by: Tin Huynh <tnhuynh@apm.com> --- drivers/leds/leds-pca963x.c | 25 ++++++++++++++++++++++++- 1 files changed, 24 insertions(+), 1 deletions(-) Change from V1: -Add CONFIG_ACPI.