Lines Matching +full:stm32 +full:- +full:vrefbuf
1 // SPDX-License-Identifier: GPL-2.0+
3 * Copyright (C) 2018, STMicroelectronics - All Rights Reserved
6 * Originally based on the Linux kernel v4.16 drivers/regulator/stm32-vrefbuf.c
17 /* STM32 VREFBUF registers */
20 /* STM32 VREFBUF CSR bitfields */
44 clrsetbits_le32(priv->base + STM32_VREFBUF_CSR, STM32_HIZ | STM32_ENVR, in stm32_vrefbuf_set_enable()
50 * Vrefbuf startup time depends on external capacitor: wait here for in stm32_vrefbuf_set_enable()
55 ret = readl_poll_timeout(priv->base + STM32_VREFBUF_CSR, val, in stm32_vrefbuf_set_enable()
58 dev_err(dev, "stm32 vrefbuf timed out: %d\n", ret); in stm32_vrefbuf_set_enable()
59 clrsetbits_le32(priv->base + STM32_VREFBUF_CSR, STM32_ENVR, in stm32_vrefbuf_set_enable()
71 return readl(priv->base + STM32_VREFBUF_CSR) & STM32_ENVR; in stm32_vrefbuf_get_enable()
81 clrsetbits_le32(priv->base + STM32_VREFBUF_CSR, in stm32_vrefbuf_set_value()
87 return -EINVAL; in stm32_vrefbuf_set_value()
95 val = readl(priv->base + STM32_VREFBUF_CSR) & STM32_VRS; in stm32_vrefbuf_get_value()
113 priv->base = dev_read_addr_ptr(dev); in stm32_vrefbuf_probe()
115 ret = clk_get_by_index(dev, 0, &priv->clk); in stm32_vrefbuf_probe()
121 ret = clk_enable(&priv->clk); in stm32_vrefbuf_probe()
127 ret = device_get_supply_regulator(dev, "vdda-supply", in stm32_vrefbuf_probe()
128 &priv->vdda_supply); in stm32_vrefbuf_probe()
130 dev_dbg(dev, "No vdda-supply: %d\n", ret); in stm32_vrefbuf_probe()
134 ret = regulator_set_enable(priv->vdda_supply, true); in stm32_vrefbuf_probe()
136 dev_err(dev, "Can't enable vdda-supply: %d\n", ret); in stm32_vrefbuf_probe()
137 clk_disable(&priv->clk); in stm32_vrefbuf_probe()
144 { .compatible = "st,stm32-vrefbuf" },
149 .name = "stm32-vrefbuf",