Re: [PATCH v3 10/15] leds: leds-gpio: Add ACPI probing support

Darren Hart
2014-10-01T18:11:48Z

On 10/1/14, 9:30, "Dmitry Torokhov" <dmitry.torokhov@gmail.com> wrote:

>On Wed, Oct 01, 2014 at 10:13:04AM +0200, Arnd Bergmann wrote:
>> On Wednesday 01 October 2014 04:17:02 Rafael J. Wysocki wrote:
>> > Index: linux-pm/drivers/leds/leds-gpio.c
>> > ===================================================================
>> > --- linux-pm.orig/drivers/leds/leds-gpio.c
>> > +++ linux-pm/drivers/leds/leds-gpio.c
>> > @@ -231,6 +231,13 @@ static const struct of_device_id of_gpio
>> >
>> > MODULE_DEVICE_TABLE(of, of_gpio_leds_match);
>> >
>> > +static const struct acpi_device_id acpi_gpio_leds_match[] = {
>> > + { "PRP0001" }, /* Device Tree shoehorned into ACPI */
>> > + {},
>> > +};
>> > +
>> > +MODULE_DEVICE_TABLE(acpi, acpi_gpio_leds_match);
>> > +
>> > static int gpio_led_probe(struct platform_device *pdev)
>> > {
>> > struct gpio_led_platform_data *pdata =
>>dev_get_platdata(&pdev->dev);
>> > @@ -286,6 +293,7 @@ static struct platform_driver gpio_led_d
>> > .name = "leds-gpio",
>> > .owner = THIS_MODULE,
>> > .of_match_table = of_gpio_leds_match,
>> > + .acpi_match_table = acpi_gpio_leds_match,
>> > },
>> > };
>>
>> Is this something you'd have to do in every driver you want to support
>> _PRP based probing? For the ".acpi_match_table =" reference, I think
>> you could actually provide a generic acpi_device_id table exported from
>> core code that you refer to, so each driver just does
>>
>> .acpi_match_table = acpi_match_by_of_compatible,
>
>No, I think in absence of drv->acpi_match_table ACPI core should just go
>and
>use drv->of_match_table to do the matching and be done with it.

But then you will match drivers that have of-only support that don't know
anything about ACPI and haven't been updated to use the new API. Worse,
some of those drivers will assume of node structs and such and potentially
panic. Unless I'm sorry mistaken here....

--
Darren Hart
Intel Open Source Technology Center