[PATCH] input: touchscreen: add OF match table for ads7846

Barry Song 21cnbao at gmail.com
Mon Jun 13 18:15:26 EST 2011


Hi Grant,
Thanks.

2011/6/13 Grant Likely <grant.likely at secretlab.ca>:
> On Thu, Jun 9, 2011 at 8:28 PM, Barry Song <Baohua.Song at csr.com> wrote:
>> The current ads7846 has no OF match table. The method used is by applying a heuristic (of_modalias_node) which tries to name the device in a way that will match an existing device driver.
>> This patch adds explicit OF match table for ads7846, then the normal device tree match behaviour will always work.
>> It has been tested on PRIMA2 EVB board of CSR with a SPI's child node like the below:
>> ts at 0 {
>>        compatible = "ti,ads7845";
>>        reg = <0x0>;
>>        spi-max-frequency = <31250>;
>>        interrupts = <90>;
>> };
>>
>> Signed-off-by: Barry Song <21cnbao at gmail.com>
>> Cc: Grant Likely <grant.likely at secretlab.ca>
>> cc: Thomas Chou <thomas at wytron.com.tw>
>> ---
>>  drivers/input/touchscreen/ads7846.c |   14 ++++++++++++++
>
> There should also be documentation for the new binding added to
> Documentation/devicetree/bindings for the new compatible strings.

Which directory do you think is the best to place this document? or do
we build a new diretory named
Documentation/devicetree/bindings/input/touchscreen/ ?
The dir Documentation/devicetree/bindings seems to be for spi host,
not for spi clients.

>
>>  1 files changed, 14 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c
>> index 5196861..643138b 100644
>> --- a/drivers/input/touchscreen/ads7846.c
>> +++ b/drivers/input/touchscreen/ads7846.c
>> @@ -28,6 +28,7 @@
>>  #include <linux/slab.h>
>>  #include <linux/pm.h>
>>  #include <linux/gpio.h>
>> +#include <linux/of.h>
>>  #include <linux/spi/spi.h>
>>  #include <linux/spi/ads7846.h>
>>  #include <linux/regulator/consumer.h>
>> @@ -1425,12 +1426,25 @@ static int __devexit ads7846_remove(struct spi_device *spi)
>>        return 0;
>>  }
>>
>> +#if defined(CONFIG_OF)
>> +static struct of_device_id ads7846_spi_of_match_table[] __devinitdata = {
>> +       { .compatible = "ti,ads7846", },
>> +       { .compatible = "ti,ads7845", },
>> +       { .compatible = "ti,ads7843", },
>> +       {},
>> +};
>> +MODULE_DEVICE_TABLE(of, ads7846_spi_of_match_table);
>
> #else
> #define ads7846_spi_of_match_table NULL
>
>> +#endif
>> +
>>  static struct spi_driver ads7846_driver = {
>>        .driver = {
>>                .name   = "ads7846",
>>                .bus    = &spi_bus_type,
>>                .owner  = THIS_MODULE,
>>                .pm     = &ads7846_pm,
>> +#if defined(CONFIG_OF)
>> +               .of_match_table = ads7846_spi_of_match_table,
>> +#endif
>
> With the #else  block added above, you can drop the #if/#endif
> protection around of_match_table.

ok. thanks

>
> Otherwise:
>
> Acked-by: Grant Likely <grant.likely at secretlab.ca>
>


More information about the devicetree-discuss mailing list