123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- /*
- * Copyright (c) 2006-2021, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2019-03-19 ZYH first version
- */
- #include <rtthread.h>
- #include <fpioa.h>
- #include <drv_io_config.h>
- #include <sysctl.h>
- #define HS_GPIO(n) (FUNC_GPIOHS0 + n)
- #define IOCONFIG(pin,func) {pin, func, #func}
- static struct io_config
- {
- int io_num;
- fpioa_function_t func;
- const char * func_name;
- } io_config[] =
- {
- #ifdef BSP_USING_LCD
- IOCONFIG(BSP_LCD_CS_PIN, FUNC_SPI0_SS0), /* LCD CS PIN */
- IOCONFIG(BSP_LCD_WR_PIN, FUNC_SPI0_SCLK), /* LCD WR PIN */
- IOCONFIG(BSP_LCD_DC_PIN, HS_GPIO(LCD_DC_PIN)), /* LCD DC PIN */
- #if BSP_LCD_RST_PIN >= 0
- IOCONFIG(BSP_LCD_RST_PIN, HS_GPIO(LCD_RST_PIN)), /* LCD RESET PIN */
- #endif
- #if BSP_LCD_BACKLIGHT_PIN >= 0
- IOCONFIG(BSP_LCD_BACKLIGHT_PIN, HS_GPIO(LCD_BACKLIGHT_PIN)), /* LCD BACKLIGHT PIN */
- #endif
- #endif
- #ifdef BSP_USING_CAMERA
- IOCONFIG(BSP_CAMERA_SCCB_SDA_PIN, FUNC_SCCB_SDA),
- IOCONFIG(BSP_CAMERA_SCCB_SCLK_PIN, FUNC_SCCB_SCLK),
- IOCONFIG(BSP_CAMERA_CMOS_RST_PIN, FUNC_CMOS_RST),
- IOCONFIG(BSP_CAMERA_CMOS_VSYNC_PIN, FUNC_CMOS_VSYNC),
- IOCONFIG(BSP_CAMERA_CMOS_PWDN_PIN, FUNC_CMOS_PWDN),
- IOCONFIG(BSP_CAMERA_CMOS_XCLK_PIN, FUNC_CMOS_XCLK),
- IOCONFIG(BSP_CAMERA_CMOS_PCLK_PIN, FUNC_CMOS_PCLK),
- IOCONFIG(BSP_CAMERA_CMOS_HREF_PIN, FUNC_CMOS_HREF),
- #endif
- #ifdef BSP_USING_SPI1
- IOCONFIG(BSP_SPI1_CLK_PIN, FUNC_SPI1_SCLK),
- IOCONFIG(BSP_SPI1_D0_PIN, FUNC_SPI1_D0),
- IOCONFIG(BSP_SPI1_D1_PIN, FUNC_SPI1_D1),
- #ifdef BSP_USING_SPI1_AS_QSPI
- IOCONFIG(BSP_SPI1_D2_PIN, FUNC_SPI1_D2),
- IOCONFIG(BSP_SPI1_D3_PIN, FUNC_SPI1_D3),
- #endif
- #ifdef BSP_SPI1_USING_SS0
- IOCONFIG(BSP_SPI1_SS0_PIN, HS_GPIO(SPI1_CS0_PIN)),
- #endif
- #ifdef BSP_SPI1_USING_SS1
- IOCONFIG(BSP_SPI1_SS1_PIN, HS_GPIO(SPI1_CS1_PIN)),
- #endif
- #ifdef BSP_SPI1_USING_SS2
- IOCONFIG(BSP_SPI1_SS2_PIN, HS_GPIO(SPI1_CS2_PIN)),
- #endif
- #ifdef BSP_SPI1_USING_SS3
- IOCONFIG(BSP_SPI1_SS3_PIN, HS_GPIO(SPI1_CS3_PIN)),
- #endif
- #endif
- #ifdef BSP_USING_UART1
- IOCONFIG(BSP_UART1_TXD_PIN, FUNC_UART1_TX),
- IOCONFIG(BSP_UART1_RXD_PIN, FUNC_UART1_RX),
- #endif
- #ifdef BSP_USING_UART2
- IOCONFIG(BSP_UART2_TXD_PIN, FUNC_UART2_TX),
- IOCONFIG(BSP_UART2_RXD_PIN, FUNC_UART2_RX),
- #endif
- #ifdef BSP_USING_UART3
- IOCONFIG(BSP_UART3_TXD_PIN, FUNC_UART3_TX),
- IOCONFIG(BSP_UART3_RXD_PIN, FUNC_UART3_RX),
- #endif
- };
- static int print_io_config()
- {
- int i;
- rt_kprintf("IO Configuration Table\n");
- rt_kprintf("┌───────┬────────────────────────┐\n");
- rt_kprintf("│Pin │Function │\n");
- rt_kprintf("├───────┼────────────────────────┤\n");
- for(i = 0; i < sizeof io_config / sizeof io_config[0]; i++)
- {
- rt_kprintf("│%-2d │%-24.24s│\n", io_config[i].io_num, io_config[i].func_name);
- }
- rt_kprintf("└───────┴────────────────────────┘\n");
- return 0;
- }
- MSH_CMD_EXPORT_ALIAS(print_io_config, io, print io config);
- int io_config_init(void)
- {
- int count = sizeof(io_config) / sizeof(io_config[0]);
- int i;
- sysctl_set_power_mode(SYSCTL_POWER_BANK0, SYSCTL_POWER_V18);
- sysctl_set_power_mode(SYSCTL_POWER_BANK1, SYSCTL_POWER_V18);
- sysctl_set_power_mode(SYSCTL_POWER_BANK2, SYSCTL_POWER_V18);
- #ifdef BSP_USING_UART2
- // for IO-27/28
- sysctl_set_power_mode(SYSCTL_POWER_BANK4, SYSCTL_POWER_V33);
- #endif
- #if defined(BSP_USING_UART1) || defined(BSP_USING_UART3)
- // for IO-20~23
- sysctl_set_power_mode(SYSCTL_POWER_BANK3, SYSCTL_POWER_V33);
- #endif
- for(i = 0; i < count; i++)
- {
- fpioa_set_function(io_config[i].io_num, io_config[i].func);
- }
- #if defined(BSP_USING_CAMERA) || defined(BSP_USING_LCD)
- sysctl_set_spi0_dvp_data(1);
- #endif
- }
- INIT_BOARD_EXPORT(io_config_init);
|