[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