drv_io_config.c 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /*
  2. * Copyright (c) 2006-2018, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2019-03-19 ZYH first version
  9. */
  10. #include <rtthread.h>
  11. #include <fpioa.h>
  12. #include <drv_io_config.h>
  13. #include <sysctl.h>
  14. #define HS_GPIO(n) (FUNC_GPIOHS0 + n)
  15. static struct io_config
  16. {
  17. int io_num;
  18. fpioa_function_t func;
  19. } io_config[] =
  20. {
  21. #ifdef BSP_USING_LCD
  22. {BSP_LCD_CS_PIN, FUNC_SPI0_SS0}, /* LCD CS PIN */
  23. {BSP_LCD_WR_PIN, FUNC_SPI0_SCLK}, /* LCD WR PIN */
  24. {BSP_LCD_DC_PIN, HS_GPIO(LCD_DC_PIN)}, /* LCD DC PIN */
  25. #endif
  26. #ifdef BSP_USING_CAMERA
  27. {BSP_CAMERA_SCCB_SDA_PIN, FUNC_SCCB_SDA},
  28. {BSP_CAMERA_SCCB_SCLK_PIN, FUNC_SCCB_SCLK},
  29. {BSP_CAMERA_CMOS_RST_PIN, FUNC_CMOS_RST},
  30. {BSP_CAMERA_CMOS_VSYNC_PIN, FUNC_CMOS_VSYNC},
  31. {BSP_CAMERA_CMOS_PWDN_PIN, FUNC_CMOS_PWDN},
  32. {BSP_CAMERA_CMOS_XCLK_PIN, FUNC_CMOS_XCLK},
  33. {BSP_CAMERA_CMOS_PCLK_PIN, FUNC_CMOS_PCLK},
  34. {BSP_CAMERA_CMOS_HREF_PIN, FUNC_CMOS_HREF},
  35. #endif
  36. #ifdef BSP_USING_SPI1
  37. {BSP_SPI1_CLK_PIN, FUNC_SPI1_SCLK},
  38. {BSP_SPI1_D0_PIN, FUNC_SPI1_D0},
  39. {BSP_SPI1_D1_PIN, FUNC_SPI1_D1},
  40. #ifdef BSP_USING_SPI1_AS_QSPI
  41. {BSP_SPI1_D2_PIN, FUNC_SPI1_D2},
  42. {BSP_SPI1_D3_PIN, FUNC_SPI1_D3},
  43. #endif
  44. #ifdef BSP_SPI1_USING_SS0
  45. {BSP_SPI1_SS0_PIN, HS_GPIO(SPI1_CS0_PIN)},
  46. #endif
  47. #ifdef BSP_SPI1_USING_SS1
  48. {BSP_SPI1_SS1_PIN, HS_GPIO(SPI1_CS1_PIN)},
  49. #endif
  50. #ifdef BSP_SPI1_USING_SS2
  51. {BSP_SPI1_SS2_PIN, HS_GPIO(SPI1_CS2_PIN)},
  52. #endif
  53. #ifdef BSP_SPI1_USING_SS3
  54. {BSP_SPI1_SS3_PIN, HS_GPIO(SPI1_CS3_PIN)},
  55. #endif
  56. #endif
  57. };
  58. int io_config_init(void)
  59. {
  60. int count = sizeof(io_config) / sizeof(io_config[0]);
  61. int i;
  62. sysctl_set_power_mode(SYSCTL_POWER_BANK0, SYSCTL_POWER_V18);
  63. sysctl_set_power_mode(SYSCTL_POWER_BANK1, SYSCTL_POWER_V18);
  64. sysctl_set_power_mode(SYSCTL_POWER_BANK2, SYSCTL_POWER_V18);
  65. for(i = 0; i < count; i++)
  66. {
  67. fpioa_set_function(io_config[i].io_num, io_config[i].func);
  68. }
  69. #if defined(BSP_USING_CAMERA) || defined(BSP_USING_LCD)
  70. sysctl_set_spi0_dvp_data(1);
  71. #endif
  72. }
  73. INIT_BOARD_EXPORT(io_config_init);