diff options
Diffstat (limited to 'drivers/misc/lis3lv02d/lis3lv02d_spi.c')
| -rw-r--r-- | drivers/misc/lis3lv02d/lis3lv02d_spi.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/misc/lis3lv02d/lis3lv02d_spi.c b/drivers/misc/lis3lv02d/lis3lv02d_spi.c index 80880e984b4f..ccb6475fa059 100644 --- a/drivers/misc/lis3lv02d/lis3lv02d_spi.c +++ b/drivers/misc/lis3lv02d/lis3lv02d_spi.c | |||
| @@ -17,6 +17,9 @@ | |||
| 17 | #include <linux/workqueue.h> | 17 | #include <linux/workqueue.h> |
| 18 | #include <linux/spi/spi.h> | 18 | #include <linux/spi/spi.h> |
| 19 | #include <linux/pm.h> | 19 | #include <linux/pm.h> |
| 20 | #include <linux/of.h> | ||
| 21 | #include <linux/of_platform.h> | ||
| 22 | #include <linux/of_device.h> | ||
| 20 | 23 | ||
| 21 | #include "lis3lv02d.h" | 24 | #include "lis3lv02d.h" |
| 22 | 25 | ||
| @@ -58,6 +61,14 @@ static int lis3_spi_init(struct lis3lv02d *lis3) | |||
| 58 | static union axis_conversion lis3lv02d_axis_normal = | 61 | static union axis_conversion lis3lv02d_axis_normal = |
| 59 | { .as_array = { 1, 2, 3 } }; | 62 | { .as_array = { 1, 2, 3 } }; |
| 60 | 63 | ||
| 64 | #ifdef CONFIG_OF | ||
| 65 | static struct of_device_id lis302dl_spi_dt_ids[] = { | ||
| 66 | { .compatible = "st,lis302dl-spi" }, | ||
| 67 | {} | ||
| 68 | }; | ||
| 69 | MODULE_DEVICE_TABLE(of, lis302dl_spi_dt_ids); | ||
| 70 | #endif | ||
| 71 | |||
| 61 | static int __devinit lis302dl_spi_probe(struct spi_device *spi) | 72 | static int __devinit lis302dl_spi_probe(struct spi_device *spi) |
| 62 | { | 73 | { |
| 63 | int ret; | 74 | int ret; |
| @@ -75,6 +86,15 @@ static int __devinit lis302dl_spi_probe(struct spi_device *spi) | |||
| 75 | lis3_dev.irq = spi->irq; | 86 | lis3_dev.irq = spi->irq; |
| 76 | lis3_dev.ac = lis3lv02d_axis_normal; | 87 | lis3_dev.ac = lis3lv02d_axis_normal; |
| 77 | lis3_dev.pdata = spi->dev.platform_data; | 88 | lis3_dev.pdata = spi->dev.platform_data; |
| 89 | |||
| 90 | #ifdef CONFIG_OF | ||
| 91 | if (of_match_device(lis302dl_spi_dt_ids, &spi->dev)) { | ||
| 92 | lis3_dev.of_node = spi->dev.of_node; | ||
| 93 | ret = lis3lv02d_init_dt(&lis3_dev); | ||
| 94 | if (ret) | ||
| 95 | return ret; | ||
| 96 | } | ||
| 97 | #endif | ||
| 78 | spi_set_drvdata(spi, &lis3_dev); | 98 | spi_set_drvdata(spi, &lis3_dev); |
| 79 | 99 | ||
| 80 | return lis3lv02d_init_device(&lis3_dev); | 100 | return lis3lv02d_init_device(&lis3_dev); |
| @@ -121,6 +141,7 @@ static struct spi_driver lis302dl_spi_driver = { | |||
| 121 | .name = DRV_NAME, | 141 | .name = DRV_NAME, |
| 122 | .owner = THIS_MODULE, | 142 | .owner = THIS_MODULE, |
| 123 | .pm = &lis3lv02d_spi_pm, | 143 | .pm = &lis3lv02d_spi_pm, |
| 144 | .of_match_table = of_match_ptr(lis302dl_spi_dt_ids), | ||
| 124 | }, | 145 | }, |
| 125 | .probe = lis302dl_spi_probe, | 146 | .probe = lis302dl_spi_probe, |
| 126 | .remove = __devexit_p(lis302dl_spi_remove), | 147 | .remove = __devexit_p(lis302dl_spi_remove), |
