diff options
| -rw-r--r-- | drivers/iio/adc/ti_am335x_adc.c | 29 | ||||
| -rw-r--r-- | drivers/mfd/ti_am335x_tscadc.c | 1 |
2 files changed, 25 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, |
diff --git a/drivers/mfd/ti_am335x_tscadc.c b/drivers/mfd/ti_am335x_tscadc.c index f50976623a01..1d6c74049590 100644 --- a/drivers/mfd/ti_am335x_tscadc.c +++ b/drivers/mfd/ti_am335x_tscadc.c | |||
| @@ -210,6 +210,7 @@ static int ti_tscadc_probe(struct platform_device *pdev) | |||
| 210 | /* ADC Cell */ | 210 | /* ADC Cell */ |
| 211 | cell = &tscadc->cells[ADC_CELL]; | 211 | cell = &tscadc->cells[ADC_CELL]; |
| 212 | cell->name = "tiadc"; | 212 | cell->name = "tiadc"; |
| 213 | cell->of_compatible = "ti,am3359-adc"; | ||
| 213 | cell->platform_data = &tscadc; | 214 | cell->platform_data = &tscadc; |
| 214 | cell->pdata_size = sizeof(tscadc); | 215 | cell->pdata_size = sizeof(tscadc); |
| 215 | 216 | ||
