Lines Matching +full:dac +full:- +full:mode +full:- +full:mask
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Freescale Vybrid vf610 DAC driver
47 info->conv_mode = VF610_DAC_CONV_LOW_POWER; in vf610_dac_init()
50 writel(val, info->regs + VF610_DACx_STATCTRL); in vf610_dac_init()
57 val = readl(info->regs + VF610_DACx_STATCTRL); in vf610_dac_exit()
59 writel(val, info->regs + VF610_DACx_STATCTRL); in vf610_dac_exit()
64 unsigned int mode) in vf610_set_conversion_mode() argument
69 mutex_lock(&info->lock); in vf610_set_conversion_mode()
70 info->conv_mode = mode; in vf610_set_conversion_mode()
71 val = readl(info->regs + VF610_DACx_STATCTRL); in vf610_set_conversion_mode()
72 if (mode) in vf610_set_conversion_mode()
76 writel(val, info->regs + VF610_DACx_STATCTRL); in vf610_set_conversion_mode()
77 mutex_unlock(&info->lock); in vf610_set_conversion_mode()
87 return info->conv_mode; in vf610_get_conversion_mode()
90 static const char * const vf610_conv_modes[] = { "high-power", "low-power" };
120 long mask) in vf610_read_raw() argument
124 switch (mask) { in vf610_read_raw()
126 *val = VF610_DAC_DAT0(readl(info->regs)); in vf610_read_raw()
139 return -EINVAL; in vf610_read_raw()
146 long mask) in vf610_write_raw() argument
150 switch (mask) { in vf610_write_raw()
152 mutex_lock(&info->lock); in vf610_write_raw()
153 writel(VF610_DAC_DAT0(val), info->regs); in vf610_write_raw()
154 mutex_unlock(&info->lock); in vf610_write_raw()
158 return -EINVAL; in vf610_write_raw()
168 { .compatible = "fsl,vf610-dac", },
179 indio_dev = devm_iio_device_alloc(&pdev->dev, in vf610_dac_probe()
182 return -ENOMEM; in vf610_dac_probe()
185 info->dev = &pdev->dev; in vf610_dac_probe()
187 info->regs = devm_platform_ioremap_resource(pdev, 0); in vf610_dac_probe()
188 if (IS_ERR(info->regs)) in vf610_dac_probe()
189 return PTR_ERR(info->regs); in vf610_dac_probe()
191 info->clk = devm_clk_get_enabled(&pdev->dev, "dac"); in vf610_dac_probe()
192 if (IS_ERR(info->clk)) in vf610_dac_probe()
193 return dev_err_probe(&pdev->dev, PTR_ERR(info->clk), in vf610_dac_probe()
198 indio_dev->name = dev_name(&pdev->dev); in vf610_dac_probe()
199 indio_dev->info = &vf610_dac_iio_info; in vf610_dac_probe()
200 indio_dev->modes = INDIO_DIRECT_MODE; in vf610_dac_probe()
201 indio_dev->channels = vf610_dac_iio_channels; in vf610_dac_probe()
202 indio_dev->num_channels = ARRAY_SIZE(vf610_dac_iio_channels); in vf610_dac_probe()
204 mutex_init(&info->lock); in vf610_dac_probe()
210 dev_err(&pdev->dev, "Couldn't register the device\n"); in vf610_dac_probe()
237 clk_disable_unprepare(info->clk); in vf610_dac_suspend()
248 ret = clk_prepare_enable(info->clk); in vf610_dac_resume()
264 .name = "vf610-dac",
272 MODULE_DESCRIPTION("Freescale VF610 DAC driver");