stm32mp_common.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. /*
  2. * Copyright (C) 2018-2019, STMicroelectronics - All Rights Reserved
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. */
  6. #ifndef STM32MP_COMMON_H
  7. #define STM32MP_COMMON_H
  8. #include <stdbool.h>
  9. #include <platform_def.h>
  10. /* Functions to save and get boot context address given by ROM code */
  11. void stm32mp_save_boot_ctx_address(uintptr_t address);
  12. uintptr_t stm32mp_get_boot_ctx_address(void);
  13. bool stm32mp_is_single_core(void);
  14. bool stm32mp_is_closed_device(void);
  15. /* Return the base address of the DDR controller */
  16. uintptr_t stm32mp_ddrctrl_base(void);
  17. /* Return the base address of the DDR PHY */
  18. uintptr_t stm32mp_ddrphyc_base(void);
  19. /* Return the base address of the PWR peripheral */
  20. uintptr_t stm32mp_pwr_base(void);
  21. /* Return the base address of the RCC peripheral */
  22. uintptr_t stm32mp_rcc_base(void);
  23. /* Check MMU status to allow spinlock use */
  24. bool stm32mp_lock_available(void);
  25. /* Get IWDG platform instance ID from peripheral IO memory base address */
  26. uint32_t stm32_iwdg_get_instance(uintptr_t base);
  27. /* Return bitflag mask for expected IWDG configuration from OTP content */
  28. uint32_t stm32_iwdg_get_otp_config(uint32_t iwdg_inst);
  29. #if defined(IMAGE_BL2)
  30. /* Update OTP shadow registers with IWDG configuration from device tree */
  31. uint32_t stm32_iwdg_shadow_update(uint32_t iwdg_inst, uint32_t flags);
  32. #endif
  33. /*
  34. * Platform util functions for the GPIO driver
  35. * @bank: Target GPIO bank ID as per DT bindings
  36. *
  37. * Platform shall implement these functions to provide to stm32_gpio
  38. * driver the resource reference for a target GPIO bank. That are
  39. * memory mapped interface base address, interface offset (see below)
  40. * and clock identifier.
  41. *
  42. * stm32_get_gpio_bank_offset() returns a bank offset that is used to
  43. * check DT configuration matches platform implementation of the banks
  44. * description.
  45. */
  46. uintptr_t stm32_get_gpio_bank_base(unsigned int bank);
  47. unsigned long stm32_get_gpio_bank_clock(unsigned int bank);
  48. uint32_t stm32_get_gpio_bank_offset(unsigned int bank);
  49. /* Print CPU information */
  50. void stm32mp_print_cpuinfo(void);
  51. /* Print board information */
  52. void stm32mp_print_boardinfo(void);
  53. /*
  54. * Util for clock gating and to get clock rate for stm32 and platform drivers
  55. * @id: Target clock ID, ID used in clock DT bindings
  56. */
  57. bool stm32mp_clk_is_enabled(unsigned long id);
  58. void stm32mp_clk_enable(unsigned long id);
  59. void stm32mp_clk_disable(unsigned long id);
  60. unsigned long stm32mp_clk_get_rate(unsigned long id);
  61. /* Initialise the IO layer and register platform IO devices */
  62. void stm32mp_io_setup(void);
  63. /*
  64. * Check that the STM32 header of a .stm32 binary image is valid
  65. * @param header: pointer to the stm32 image header
  66. * @param buffer: address of the binary image (payload)
  67. * @return: 0 on success, negative value in case of error
  68. */
  69. int stm32mp_check_header(boot_api_image_header_t *header, uintptr_t buffer);
  70. #endif /* STM32MP_COMMON_H */