Lines Matching +full:clk +full:- +full:output +full:- +full:sel
10 #include <linux/clk.h>
30 struct clk *clk; member
41 u32 val = readl_relaxed(priv->base + STM32_VREFBUF_CSR); in stm32_vrefbuf_enable()
45 writel_relaxed(val, priv->base + STM32_VREFBUF_CSR); in stm32_vrefbuf_enable()
49 * VRR to be set. That means output has reached expected value. in stm32_vrefbuf_enable()
53 ret = readl_poll_timeout(priv->base + STM32_VREFBUF_CSR, val, in stm32_vrefbuf_enable()
56 dev_err(&rdev->dev, "stm32 vrefbuf timed out!\n"); in stm32_vrefbuf_enable()
57 val = readl_relaxed(priv->base + STM32_VREFBUF_CSR); in stm32_vrefbuf_enable()
59 writel_relaxed(val, priv->base + STM32_VREFBUF_CSR); in stm32_vrefbuf_enable()
68 u32 val = readl_relaxed(priv->base + STM32_VREFBUF_CSR); in stm32_vrefbuf_disable()
71 writel_relaxed(val, priv->base + STM32_VREFBUF_CSR); in stm32_vrefbuf_disable()
80 return readl_relaxed(priv->base + STM32_VREFBUF_CSR) & STM32_ENVR; in stm32_vrefbuf_is_enabled()
84 unsigned sel) in stm32_vrefbuf_set_voltage_sel() argument
87 u32 val = readl_relaxed(priv->base + STM32_VREFBUF_CSR); in stm32_vrefbuf_set_voltage_sel()
89 val = (val & ~STM32_VRS) | FIELD_PREP(STM32_VRS, sel); in stm32_vrefbuf_set_voltage_sel()
90 writel_relaxed(val, priv->base + STM32_VREFBUF_CSR); in stm32_vrefbuf_set_voltage_sel()
98 u32 val = readl_relaxed(priv->base + STM32_VREFBUF_CSR); in stm32_vrefbuf_get_voltage_sel()
130 priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); in stm32_vrefbuf_probe()
132 return -ENOMEM; in stm32_vrefbuf_probe()
135 priv->base = devm_ioremap_resource(&pdev->dev, res); in stm32_vrefbuf_probe()
136 if (IS_ERR(priv->base)) in stm32_vrefbuf_probe()
137 return PTR_ERR(priv->base); in stm32_vrefbuf_probe()
139 priv->clk = devm_clk_get(&pdev->dev, NULL); in stm32_vrefbuf_probe()
140 if (IS_ERR(priv->clk)) in stm32_vrefbuf_probe()
141 return PTR_ERR(priv->clk); in stm32_vrefbuf_probe()
143 ret = clk_prepare_enable(priv->clk); in stm32_vrefbuf_probe()
145 dev_err(&pdev->dev, "clk prepare failed with error %d\n", ret); in stm32_vrefbuf_probe()
149 config.dev = &pdev->dev; in stm32_vrefbuf_probe()
151 config.of_node = pdev->dev.of_node; in stm32_vrefbuf_probe()
152 config.init_data = of_get_regulator_init_data(&pdev->dev, in stm32_vrefbuf_probe()
153 pdev->dev.of_node, in stm32_vrefbuf_probe()
159 dev_err(&pdev->dev, "register failed with error %d\n", ret); in stm32_vrefbuf_probe()
167 clk_disable_unprepare(priv->clk); in stm32_vrefbuf_probe()
178 clk_disable_unprepare(priv->clk); in stm32_vrefbuf_remove()
184 { .compatible = "st,stm32-vrefbuf", },
193 .name = "stm32-vrefbuf",
202 MODULE_ALIAS("platform:stm32-vrefbuf");