nu_pin_init.c 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. /**************************************************************************//**
  2. *
  3. * @copyright (C) 2019 Nuvoton Technology Corp. All rights reserved.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0
  6. *
  7. * Change Logs:
  8. * Date Author Notes
  9. * 2020-12-12 Wayne First version
  10. *
  11. ******************************************************************************/
  12. #include "board.h"
  13. static void nu_pin_uart_init(void)
  14. {
  15. /* UART0: GPF11, GPF12 */
  16. outpw(REG_SYS_GPF_MFPH, (inpw(REG_SYS_GPF_MFPH) & 0xfff00fff) | 0x11000);
  17. #if !defined(BOARD_USING_LCD_ILI9341)
  18. /* UART1: GPF9, GPF10 */
  19. outpw(REG_SYS_GPF_MFPH, (inpw(REG_SYS_GPF_MFPH) & 0xfffff00f) | 0x00220);
  20. #endif
  21. }
  22. static void nu_pin_emac_init(void)
  23. {
  24. /* EMAC0 */
  25. outpw(REG_SYS_GPE_MFPL, 0x11111111);
  26. outpw(REG_SYS_GPE_MFPH, (inpw(REG_SYS_GPE_MFPH) & ~0xFF) | 0x11);
  27. /* EMAC1 */
  28. // outpw(REG_SYS_GPF_MFPL, 0x11111111);
  29. // outpw(REG_SYS_GPF_MFPH, (inpw(REG_SYS_GPF_MFPH) & ~0xFF) | 0x11);
  30. }
  31. static void nu_pin_sdh_init(void)
  32. {
  33. /* SDH1: PF[0, 6] */
  34. outpw(REG_SYS_GPF_MFPL, (inpw(REG_SYS_GPF_MFPL) & ~0x0FFFFFFF) | 0x02222222);
  35. }
  36. static void nu_pin_qspi_init(void)
  37. {
  38. /* QSPI0: PD[2, 7] */
  39. outpw(REG_SYS_GPD_MFPL, (inpw(REG_SYS_GPD_MFPL) & ~0xFFFFFF00) | 0x11111100);
  40. }
  41. static void nu_pin_spi_init(void)
  42. {
  43. /* SPI0: PD[8, 11] */
  44. outpw(REG_SYS_GPD_MFPH, (inpw(REG_SYS_GPD_MFPH) & ~0x0000FFFF) | 0x00001111);
  45. }
  46. static void nu_pin_i2c_init(void)
  47. {
  48. /* I2C0: PA[0, 1] */
  49. outpw(REG_SYS_GPA_MFPL, (inpw(REG_SYS_GPA_MFPL) & ~0x000000FF) | 0x00000033);
  50. #if !defined(BSP_USING_ADC_TOUCH)
  51. /* I2C2: PB5, PB7 */
  52. outpw(REG_SYS_GPB_MFPL, (inpw(REG_SYS_GPB_MFPL) & ~0xF0F00000) | 0x20200000);
  53. #endif
  54. }
  55. static void nu_pin_pwm_init(void)
  56. {
  57. /* PWM02, PWM03: PF[7, 8] */
  58. outpw(REG_SYS_GPF_MFPL, (inpw(REG_SYS_GPF_MFPL) & ~0xF0000000) | 0x40000000);
  59. outpw(REG_SYS_GPF_MFPH, (inpw(REG_SYS_GPF_MFPH) & ~0x0000000F) | 0x00000004);
  60. }
  61. static void nu_pin_i2s_init(void)
  62. {
  63. /* I2S A[2, 6] */
  64. outpw(REG_SYS_GPA_MFPL, (inpw(REG_SYS_GPA_MFPL) & ~0x0FFFFF00) | 0x02222200);
  65. }
  66. static void nu_pin_can_init(void)
  67. {
  68. }
  69. #if defined(BSP_USING_USBD)
  70. static void nu_pin_usbd_init(void)
  71. {
  72. /* USB0_VBUSVLD, PE.11 */
  73. outpw(REG_SYS_GPE_MFPH, (inpw(REG_SYS_GPE_MFPH) & ~0x0000F000) | 0x00001000);
  74. }
  75. #endif
  76. static void nu_pin_usbh_init(void)
  77. {
  78. }
  79. void nu_pin_init(void)
  80. {
  81. nu_pin_uart_init();
  82. nu_pin_emac_init();
  83. nu_pin_sdh_init();
  84. nu_pin_qspi_init();
  85. nu_pin_spi_init();
  86. nu_pin_i2c_init();
  87. nu_pin_pwm_init();
  88. nu_pin_i2s_init();
  89. nu_pin_can_init();
  90. #if defined(BSP_USING_USBD)
  91. nu_pin_usbd_init();
  92. #endif
  93. nu_pin_usbh_init();
  94. }
  95. void nu_pin_deinit(void)
  96. {
  97. }