diff options
author | Patil, Rachna <rachna@ti.com> | 2013-01-23 22:45:11 -0500 |
---|---|---|
committer | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2013-06-12 12:36:31 -0400 |
commit | 6f39ac4e20c6211c98e8d9da2d8c51100a77d1df (patch) | |
tree | 1de9e31d9f45ffd7d76ea4ffaf364d44e755c306 /drivers/iio | |
parent | b9194fdfa6e729b97ffc59ae00dc9d51c7ae314d (diff) |
iio: ti_am335x_adc: Add DT support
Add DT support for client ADC driver.
Acked-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Patil, Rachna <rachna@ti.com>
Signed-off-by: Pantelis Antoniou <panto@antoniou-consulting.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Diffstat (limited to 'drivers/iio')
-rw-r--r-- | drivers/iio/adc/ti_am335x_adc.c | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/drivers/iio/adc/ti_am335x_adc.c b/drivers/iio/adc/ti_am335x_adc.c index 543b9c42ac5f..b24402cb5432 100644 --- a/drivers/iio/adc/ti_am335x_adc.c +++ b/drivers/iio/adc/ti_am335x_adc.c | |||
@@ -22,6 +22,8 @@ | |||
22 | #include <linux/platform_device.h> | 22 | #include <linux/platform_device.h> |
23 | #include <linux/io.h> | 23 | #include <linux/io.h> |
24 | #include <linux/iio/iio.h> | 24 | #include <linux/iio/iio.h> |
25 | #include <linux/of.h> | ||
26 | #include <linux/of_device.h> | ||
25 | 27 | ||
26 | #include <linux/mfd/ti_am335x_tscadc.h> | 28 | #include <linux/mfd/ti_am335x_tscadc.h> |
27 | #include <linux/platform_data/ti_am335x_adc.h> | 29 | #include <linux/platform_data/ti_am335x_adc.h> |
@@ -152,11 +154,12 @@ static int tiadc_probe(struct platform_device *pdev) | |||
152 | struct iio_dev *indio_dev; | 154 | struct iio_dev *indio_dev; |
153 | struct tiadc_device *adc_dev; | 155 | struct tiadc_device *adc_dev; |
154 | struct ti_tscadc_dev *tscadc_dev = ti_tscadc_dev_get(pdev); | 156 | struct ti_tscadc_dev *tscadc_dev = ti_tscadc_dev_get(pdev); |
155 | struct mfd_tscadc_board *pdata; | 157 | struct mfd_tscadc_board *pdata = tscadc_dev->dev->platform_data; |
158 | struct device_node *node = pdev->dev.of_node; | ||
156 | int err; | 159 | int err; |
160 | u32 val32; | ||
157 | 161 | ||
158 | pdata = tscadc_dev->dev->platform_data; | 162 | if (!pdata && !node) { |
159 | if (!pdata || !pdata->adc_init) { | ||
160 | dev_err(&pdev->dev, "Could not find platform data\n"); | 163 | dev_err(&pdev->dev, "Could not find platform data\n"); |
161 | return -EINVAL; | 164 | return -EINVAL; |
162 | } | 165 | } |
@@ -169,8 +172,17 @@ static int tiadc_probe(struct platform_device *pdev) | |||
169 | } | 172 | } |
170 | adc_dev = iio_priv(indio_dev); | 173 | adc_dev = iio_priv(indio_dev); |
171 | 174 | ||
172 | adc_dev->mfd_tscadc = tscadc_dev; | 175 | adc_dev->mfd_tscadc = ti_tscadc_dev_get(pdev); |
173 | adc_dev->channels = pdata->adc_init->adc_channels; | 176 | |
177 | if (pdata) | ||
178 | adc_dev->channels = pdata->adc_init->adc_channels; | ||
179 | else { | ||
180 | err = of_property_read_u32(node, | ||
181 | "ti,adc-channels", &val32); | ||
182 | if (err < 0) | ||
183 | goto err_free_device; | ||
184 | adc_dev->channels = val32; | ||
185 | } | ||
174 | 186 | ||
175 | indio_dev->dev.parent = &pdev->dev; | 187 | indio_dev->dev.parent = &pdev->dev; |
176 | indio_dev->name = dev_name(&pdev->dev); | 188 | indio_dev->name = dev_name(&pdev->dev); |
@@ -260,11 +272,18 @@ static const struct dev_pm_ops tiadc_pm_ops = { | |||
260 | #define TIADC_PM_OPS NULL | 272 | #define TIADC_PM_OPS NULL |
261 | #endif | 273 | #endif |
262 | 274 | ||
275 | static const struct of_device_id ti_adc_dt_ids[] = { | ||
276 | { .compatible = "ti,am3359-adc", }, | ||
277 | { } | ||
278 | }; | ||
279 | MODULE_DEVICE_TABLE(of, ti_adc_dt_ids); | ||
280 | |||
263 | static struct platform_driver tiadc_driver = { | 281 | static struct platform_driver tiadc_driver = { |
264 | .driver = { | 282 | .driver = { |
265 | .name = "tiadc", | 283 | .name = "tiadc", |
266 | .owner = THIS_MODULE, | 284 | .owner = THIS_MODULE, |
267 | .pm = TIADC_PM_OPS, | 285 | .pm = TIADC_PM_OPS, |
286 | .of_match_table = of_match_ptr(ti_adc_dt_ids), | ||
268 | }, | 287 | }, |
269 | .probe = tiadc_probe, | 288 | .probe = tiadc_probe, |
270 | .remove = tiadc_remove, | 289 | .remove = tiadc_remove, |