xref: /openbmc/u-boot/drivers/adc/stm32-adc-core.h (revision a466ecec483a94ac5c66d3ce6793e1575f333d23)
1*a466ececSFabrice Gasnier /* SPDX-License-Identifier: GPL-2.0 */
2*a466ececSFabrice Gasnier /*
3*a466ececSFabrice Gasnier  * Copyright (C) 2018, STMicroelectronics - All Rights Reserved
4*a466ececSFabrice Gasnier  * Author: Fabrice Gasnier <fabrice.gasnier@st.com>.
5*a466ececSFabrice Gasnier  *
6*a466ececSFabrice Gasnier  * Originally based on the Linux kernel v4.18 drivers/iio/adc/stm32-adc-core.h.
7*a466ececSFabrice Gasnier  */
8*a466ececSFabrice Gasnier 
9*a466ececSFabrice Gasnier #ifndef __STM32_ADC_H
10*a466ececSFabrice Gasnier #define __STM32_ADC_H
11*a466ececSFabrice Gasnier 
12*a466ececSFabrice Gasnier /*
13*a466ececSFabrice Gasnier  * STM32 - ADC global register map
14*a466ececSFabrice Gasnier  * ________________________________________________________
15*a466ececSFabrice Gasnier  * | Offset |                 Register                    |
16*a466ececSFabrice Gasnier  * --------------------------------------------------------
17*a466ececSFabrice Gasnier  * | 0x000  |                Master ADC1                  |
18*a466ececSFabrice Gasnier  * --------------------------------------------------------
19*a466ececSFabrice Gasnier  * | 0x100  |                Slave ADC2                   |
20*a466ececSFabrice Gasnier  * --------------------------------------------------------
21*a466ececSFabrice Gasnier  * | 0x200  |                Slave ADC3                   |
22*a466ececSFabrice Gasnier  * --------------------------------------------------------
23*a466ececSFabrice Gasnier  * | 0x300  |         Master & Slave common regs          |
24*a466ececSFabrice Gasnier  * --------------------------------------------------------
25*a466ececSFabrice Gasnier  */
26*a466ececSFabrice Gasnier #define STM32_ADC_MAX_ADCS		3
27*a466ececSFabrice Gasnier #define STM32_ADCX_COMN_OFFSET		0x300
28*a466ececSFabrice Gasnier 
29*a466ececSFabrice Gasnier #include <common.h>
30*a466ececSFabrice Gasnier #include <clk.h>
31*a466ececSFabrice Gasnier #include <dm.h>
32*a466ececSFabrice Gasnier 
33*a466ececSFabrice Gasnier /**
34*a466ececSFabrice Gasnier  * struct stm32_adc_common - stm32 ADC driver common data (for all instances)
35*a466ececSFabrice Gasnier  * @base:		control registers base cpu addr
36*a466ececSFabrice Gasnier  * @rate:		clock rate used for analog circuitry
37*a466ececSFabrice Gasnier  * @aclk:		clock for the analog circuitry
38*a466ececSFabrice Gasnier  * @bclk:		bus clock common for all ADCs
39*a466ececSFabrice Gasnier  * @vref:		regulator reference
40*a466ececSFabrice Gasnier  * @vref_uv:		reference supply voltage (uV)
41*a466ececSFabrice Gasnier  */
42*a466ececSFabrice Gasnier struct stm32_adc_common {
43*a466ececSFabrice Gasnier 	void __iomem *base;
44*a466ececSFabrice Gasnier 	unsigned long rate;
45*a466ececSFabrice Gasnier 	struct clk aclk;
46*a466ececSFabrice Gasnier 	struct clk bclk;
47*a466ececSFabrice Gasnier 	struct udevice *vref;
48*a466ececSFabrice Gasnier 	int vref_uv;
49*a466ececSFabrice Gasnier };
50*a466ececSFabrice Gasnier 
51*a466ececSFabrice Gasnier #endif
52