Lines Matching +full:dev +full:- +full:ctrl

1 // SPDX-License-Identifier: GPL-2.0+
5 * Rockchip SARADC driver for U-Boot
25 unsigned int ctrl; member
41 int rockchip_saradc_channel_data(struct udevice *dev, int channel, in rockchip_saradc_channel_data() argument
44 struct rockchip_saradc_priv *priv = dev_get_priv(dev); in rockchip_saradc_channel_data()
45 struct adc_uclass_platdata *uc_pdata = dev_get_uclass_platdata(dev); in rockchip_saradc_channel_data()
47 if (channel != priv->active_channel) { in rockchip_saradc_channel_data()
49 return -EINVAL; in rockchip_saradc_channel_data()
52 if ((readl(&priv->regs->ctrl) & SARADC_CTRL_IRQ_STATUS) != in rockchip_saradc_channel_data()
54 return -EBUSY; in rockchip_saradc_channel_data()
57 *data = readl(&priv->regs->data); in rockchip_saradc_channel_data()
58 *data &= uc_pdata->data_mask; in rockchip_saradc_channel_data()
61 writel(0, &priv->regs->ctrl); in rockchip_saradc_channel_data()
66 int rockchip_saradc_start_channel(struct udevice *dev, int channel) in rockchip_saradc_start_channel() argument
68 struct rockchip_saradc_priv *priv = dev_get_priv(dev); in rockchip_saradc_start_channel()
70 if (channel < 0 || channel >= priv->data->num_channels) { in rockchip_saradc_start_channel()
72 return -EINVAL; in rockchip_saradc_start_channel()
76 writel(8, &priv->regs->dly_pu_soc); in rockchip_saradc_start_channel()
80 SARADC_CTRL_IRQ_ENABLE, &priv->regs->ctrl); in rockchip_saradc_start_channel()
82 priv->active_channel = channel; in rockchip_saradc_start_channel()
87 int rockchip_saradc_stop(struct udevice *dev) in rockchip_saradc_stop() argument
89 struct rockchip_saradc_priv *priv = dev_get_priv(dev); in rockchip_saradc_stop()
92 writel(0, &priv->regs->ctrl); in rockchip_saradc_stop()
94 priv->active_channel = -1; in rockchip_saradc_stop()
99 int rockchip_saradc_probe(struct udevice *dev) in rockchip_saradc_probe() argument
101 struct rockchip_saradc_priv *priv = dev_get_priv(dev); in rockchip_saradc_probe()
105 ret = clk_get_by_index(dev, 0, &clk); in rockchip_saradc_probe()
109 ret = clk_set_rate(&clk, priv->data->clk_rate); in rockchip_saradc_probe()
113 priv->active_channel = -1; in rockchip_saradc_probe()
118 int rockchip_saradc_ofdata_to_platdata(struct udevice *dev) in rockchip_saradc_ofdata_to_platdata() argument
120 struct adc_uclass_platdata *uc_pdata = dev_get_uclass_platdata(dev); in rockchip_saradc_ofdata_to_platdata()
121 struct rockchip_saradc_priv *priv = dev_get_priv(dev); in rockchip_saradc_ofdata_to_platdata()
124 data = (struct rockchip_saradc_data *)dev_get_driver_data(dev); in rockchip_saradc_ofdata_to_platdata()
125 priv->regs = (struct rockchip_saradc_regs *)dev_read_addr(dev); in rockchip_saradc_ofdata_to_platdata()
126 if (priv->regs == (struct rockchip_saradc_regs *)FDT_ADDR_T_NONE) { in rockchip_saradc_ofdata_to_platdata()
127 pr_err("Dev: %s - can't get address!", dev->name); in rockchip_saradc_ofdata_to_platdata()
128 return -ENODATA; in rockchip_saradc_ofdata_to_platdata()
131 priv->data = data; in rockchip_saradc_ofdata_to_platdata()
132 uc_pdata->data_mask = (1 << priv->data->num_bits) - 1;; in rockchip_saradc_ofdata_to_platdata()
133 uc_pdata->data_format = ADC_DATA_FORMAT_BIN; in rockchip_saradc_ofdata_to_platdata()
134 uc_pdata->data_timeout_us = SARADC_TIMEOUT / 5; in rockchip_saradc_ofdata_to_platdata()
135 uc_pdata->channel_mask = (1 << priv->data->num_channels) - 1; in rockchip_saradc_ofdata_to_platdata()
167 { .compatible = "rockchip,rk3066-tsadc",
169 { .compatible = "rockchip,rk3399-saradc",