• Home
  • Raw
  • Download

Lines Matching +full:stm32 +full:- +full:dac

1 // SPDX-License-Identifier: GPL-2.0
3 * This file is part of STM32 DAC driver
5 * Copyright (C) 2017, STMicroelectronics - All Rights Reserved
17 #include "stm32-dac-core.h"
24 * struct stm32_dac - private data of DAC driver
25 * @common: reference to DAC common data
33 struct stm32_dac *dac = iio_priv(indio_dev); in stm32_dac_is_enabled() local
37 ret = regmap_read(dac->common->regmap, STM32_DAC_CR, &val); in stm32_dac_is_enabled()
51 struct stm32_dac *dac = iio_priv(indio_dev); in stm32_dac_set_enable_state() local
56 ret = regmap_update_bits(dac->common->regmap, STM32_DAC_CR, msk, en); in stm32_dac_set_enable_state()
58 dev_err(&indio_dev->dev, "%s failed\n", en ? in stm32_dac_set_enable_state()
68 if (en && dac->common->hfsel) in stm32_dac_set_enable_state()
74 static int stm32_dac_get_value(struct stm32_dac *dac, int channel, int *val) in stm32_dac_get_value() argument
79 ret = regmap_read(dac->common->regmap, STM32_DAC_DOR1, val); in stm32_dac_get_value()
81 ret = regmap_read(dac->common->regmap, STM32_DAC_DOR2, val); in stm32_dac_get_value()
86 static int stm32_dac_set_value(struct stm32_dac *dac, int channel, int val) in stm32_dac_set_value() argument
91 ret = regmap_write(dac->common->regmap, STM32_DAC_DHR12R1, val); in stm32_dac_set_value()
93 ret = regmap_write(dac->common->regmap, STM32_DAC_DHR12R2, val); in stm32_dac_set_value()
102 struct stm32_dac *dac = iio_priv(indio_dev); in stm32_dac_read_raw() local
106 return stm32_dac_get_value(dac, chan->channel, val); in stm32_dac_read_raw()
108 *val = dac->common->vref_mv; in stm32_dac_read_raw()
109 *val2 = chan->scan_type.realbits; in stm32_dac_read_raw()
112 return -EINVAL; in stm32_dac_read_raw()
120 struct stm32_dac *dac = iio_priv(indio_dev); in stm32_dac_write_raw() local
124 return stm32_dac_set_value(dac, chan->channel, val); in stm32_dac_write_raw()
126 return -EINVAL; in stm32_dac_write_raw()
134 struct stm32_dac *dac = iio_priv(indio_dev); in stm32_dac_debugfs_reg_access() local
137 return regmap_write(dac->common->regmap, reg, writeval); in stm32_dac_debugfs_reg_access()
139 return regmap_read(dac->common->regmap, reg, readval); in stm32_dac_debugfs_reg_access()
170 int ret = stm32_dac_is_enabled(indio_dev, chan->channel); in stm32_dac_read_powerdown()
190 ret = stm32_dac_set_enable_state(indio_dev, chan->channel, !powerdown); in stm32_dac_write_powerdown()
241 struct device_node *np = indio_dev->dev.of_node; in stm32_dac_chan_of_init()
248 dev_err(&indio_dev->dev, "Failed to read reg property\n"); in stm32_dac_chan_of_init()
257 dev_err(&indio_dev->dev, "Invalid reg property\n"); in stm32_dac_chan_of_init()
258 return -EINVAL; in stm32_dac_chan_of_init()
261 indio_dev->channels = &stm32_dac_channels[i]; in stm32_dac_chan_of_init()
267 indio_dev->num_channels = 1; in stm32_dac_chan_of_init()
274 struct device_node *np = pdev->dev.of_node; in stm32_dac_probe()
276 struct stm32_dac *dac; in stm32_dac_probe() local
280 return -ENODEV; in stm32_dac_probe()
282 indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*dac)); in stm32_dac_probe()
284 return -ENOMEM; in stm32_dac_probe()
287 dac = iio_priv(indio_dev); in stm32_dac_probe()
288 dac->common = dev_get_drvdata(pdev->dev.parent); in stm32_dac_probe()
289 indio_dev->name = dev_name(&pdev->dev); in stm32_dac_probe()
290 indio_dev->dev.parent = &pdev->dev; in stm32_dac_probe()
291 indio_dev->dev.of_node = pdev->dev.of_node; in stm32_dac_probe()
292 indio_dev->info = &stm32_dac_iio_info; in stm32_dac_probe()
293 indio_dev->modes = INDIO_DIRECT_MODE; in stm32_dac_probe()
299 return devm_iio_device_register(&pdev->dev, indio_dev); in stm32_dac_probe()
303 { .compatible = "st,stm32-dac", },
311 .name = "stm32-dac",
317 MODULE_ALIAS("platform:stm32-dac");
319 MODULE_DESCRIPTION("STMicroelectronics STM32 DAC driver");