stm32-adc-core.h 1.5 KB

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