diff --git a/bsp/cvitek/c906_little/Kconfig b/bsp/cvitek/c906_little/Kconfig index d981d97abe7..37186e3c669 100755 --- a/bsp/cvitek/c906_little/Kconfig +++ b/bsp/cvitek/c906_little/Kconfig @@ -39,20 +39,32 @@ config TIMER_CLK_FREQ int default 25000000 +config SOC_TYPE_CV180X + bool + default n + +config SOC_TYPE_SG2002 + bool + default n + choice prompt "Board Type" default BOARD_TYPE_MILKV_DUO256M config BOARD_TYPE_MILKV_DUO + select SOC_TYPE_CV180X bool "milkv-duo" config BOARD_TYPE_MILKV_DUO_SPINOR + select SOC_TYPE_CV180X bool "milkv-duo-spinor" config BOARD_TYPE_MILKV_DUO256M + select SOC_TYPE_SG2002 bool "milkv-duo256m" config BOARD_TYPE_MILKV_DUO256M_SPINOR + select SOC_TYPE_SG2002 bool "milkv-duo256m-spinor" endchoice diff --git a/bsp/cvitek/c906_little/board/Kconfig b/bsp/cvitek/c906_little/board/Kconfig index 6a0d10c0f30..52fdc2d2a9e 100755 --- a/bsp/cvitek/c906_little/board/Kconfig +++ b/bsp/cvitek/c906_little/board/Kconfig @@ -20,7 +20,7 @@ menu "General Drivers Configuration" endif menuconfig BSP_USING_I2C - bool "Using HW I2C" + bool "Using I2C" select RT_USING_I2C select RT_USING_I2C_BITOPS select RT_USING_PIN @@ -29,15 +29,130 @@ menu "General Drivers Configuration" if BSP_USING_I2C config BSP_USING_I2C0 bool "Enable I2C0" + depends on BOARD_TYPE_MILKV_DUO || BOARD_TYPE_MILKV_DUO_SPINOR default n + if BSP_USING_I2C0 + choice + prompt "SCL" + + config BSP_USING_IIC0_SCL__IIC0_SCL + bool "IIC0_SCL/GP0" + endchoice + + choice + prompt "SDA" + + config BSP_USING_IIC0_SDA__IIC0_SDA + bool "IIC0_SDA/GP1" + endchoice + endif + config BSP_USING_I2C1 bool "Enable I2C1" default n + if BSP_USING_I2C1 + choice + prompt "SCL" + + if BOARD_TYPE_MILKV_DUO || BOARD_TYPE_MILKV_DUO_SPINOR + config BSP_USING_SD1_D2__IIC1_SCL + bool "SD1_D2/GP4" + config BSP_USING_SD1_D3__IIC1_SCL + bool "SD1_D3/GP9" + config BSP_USING_PAD_MIPIRX0N__IIC1_SCL + bool "PAD_MIPIRX0N/GP11" + endif + + if BOARD_TYPE_MILKV_DUO256M || BOARD_TYPE_MILKV_DUO256M_SPINOR + config BSP_USING_SD1_D2__IIC1_SCL + bool "SD1_D2/GP4" + config BSP_USING_SD1_D3__IIC1_SCL + bool "SD1_D3/GP9" + endif + + endchoice + + choice + prompt "SDA" + + if BOARD_TYPE_MILKV_DUO || BOARD_TYPE_MILKV_DUO_SPINOR + config BSP_USING_SD1_D1__IIC1_SDA + bool "SD1_D1/GP5" + config BSP_USING_SD1_D0__IIC1_SDA + bool "SD1_D0/GP8" + config BSP_USING_PAD_MIPIRX1P__IIC1_SDA + bool "PAD_MIPIRX1P/GP10" + endif + + if BOARD_TYPE_MILKV_DUO256M || BOARD_TYPE_MILKV_DUO256M_SPINOR + config BSP_USING_SD1_D1__IIC1_SDA + bool "SD1_D1/GP5" + config BSP_USING_SD1_D0__IIC1_SDA + bool "SD1_D0/GP8" + endif + endchoice + endif + + config BSP_USING_I2C2 + bool "Enable I2C2" + depends on BOARD_TYPE_MILKV_DUO256M || BOARD_TYPE_MILKV_DUO256M_SPINOR + default n + + if BSP_USING_I2C2 + choice + prompt "SCL" + + config BSP_USING_PAD_MIPI_TXP1__IIC2_SCL + bool "PAD_MIPI_TXP1/GP11" + endchoice + + choice + prompt "SDA" + + config BSP_USING_PAD_MIPI_TXM1__IIC2_SDA + bool "PAD_MIPI_TXM1/GP10" + endchoice + endif + + config BSP_USING_I2C3 + bool "Enable I2C3" + default n + + if BSP_USING_I2C3 + choice + prompt "SCL" + + if BOARD_TYPE_MILKV_DUO || BOARD_TYPE_MILKV_DUO_SPINOR + config BSP_USING_SD1_CMD__IIC3_SCL + bool "SD1_CMD/GP7" + endif + + if BOARD_TYPE_MILKV_DUO256M || BOARD_TYPE_MILKV_DUO256M_SPINOR + config BSP_USING_SD1_CMD__IIC3_SCL + bool "SD1_CMD/GP7" + endif + endchoice + + choice + prompt "SDA" + + if BOARD_TYPE_MILKV_DUO || BOARD_TYPE_MILKV_DUO_SPINOR + config BSP_USING_SD1_CLK__IIC3_SDA + bool "SD1_CLK/GP6" + endif + + if BOARD_TYPE_MILKV_DUO256M || BOARD_TYPE_MILKV_DUO256M_SPINOR + config BSP_USING_SD1_CLK__IIC3_SDA + bool "SD1_CLK/GP6" + endif + endchoice + endif + config I2C_IRQ_BASE - int - default 32 + int + default 32 endif config BSP_USING_ADC diff --git a/bsp/cvitek/cv18xx_risc-v/Kconfig b/bsp/cvitek/cv18xx_risc-v/Kconfig index 19774422733..430817672b5 100755 --- a/bsp/cvitek/cv18xx_risc-v/Kconfig +++ b/bsp/cvitek/cv18xx_risc-v/Kconfig @@ -46,20 +46,32 @@ config __STACKSIZE__ int "stack size for interrupt" default 4096 +config SOC_TYPE_CV180X + bool + default n + +config SOC_TYPE_SG2002 + bool + default n + choice prompt "Board Type" default BOARD_TYPE_MILKV_DUO256M config BOARD_TYPE_MILKV_DUO + select SOC_TYPE_CV180X bool "milkv-duo" config BOARD_TYPE_MILKV_DUO_SPINOR + select SOC_TYPE_CV180X bool "milkv-duo-spinor" config BOARD_TYPE_MILKV_DUO256M + select SOC_TYPE_SG2002 bool "milkv-duo256m" config BOARD_TYPE_MILKV_DUO256M_SPINOR + select SOC_TYPE_SG2002 bool "milkv-duo256m-spinor" endchoice diff --git a/bsp/cvitek/cv18xx_risc-v/board/Kconfig b/bsp/cvitek/cv18xx_risc-v/board/Kconfig index 1e759e33b29..50efa0e0b09 100755 --- a/bsp/cvitek/cv18xx_risc-v/board/Kconfig +++ b/bsp/cvitek/cv18xx_risc-v/board/Kconfig @@ -31,7 +31,143 @@ menu "General Drivers Configuration" default n endif - + + menuconfig BSP_USING_I2C + bool "Using I2C" + select RT_USING_I2C + select RT_USING_I2C_BITOPS + select RT_USING_PIN + default n + + if BSP_USING_I2C + config BSP_USING_I2C0 + bool "Enable I2C0" + depends on BOARD_TYPE_MILKV_DUO || BOARD_TYPE_MILKV_DUO_SPINOR + default n + + if BSP_USING_I2C0 + choice + prompt "SCL" + + config BSP_USING_IIC0_SCL__IIC0_SCL + bool "IIC0_SCL/GP0" + endchoice + + choice + prompt "SDA" + + config BSP_USING_IIC0_SDA__IIC0_SDA + bool "IIC0_SDA/GP1" + endchoice + endif + + config BSP_USING_I2C1 + bool "Enable I2C1" + default n + + if BSP_USING_I2C1 + choice + prompt "SCL" + + if BOARD_TYPE_MILKV_DUO || BOARD_TYPE_MILKV_DUO_SPINOR + config BSP_USING_SD1_D2__IIC1_SCL + bool "SD1_D2/GP4" + config BSP_USING_SD1_D3__IIC1_SCL + bool "SD1_D3/GP9" + config BSP_USING_PAD_MIPIRX0N__IIC1_SCL + bool "PAD_MIPIRX0N/GP11" + endif + + if BOARD_TYPE_MILKV_DUO256M || BOARD_TYPE_MILKV_DUO256M_SPINOR + config BSP_USING_SD1_D2__IIC1_SCL + bool "SD1_D2/GP4" + config BSP_USING_SD1_D3__IIC1_SCL + bool "SD1_D3/GP9" + endif + + endchoice + + choice + prompt "SDA" + + if BOARD_TYPE_MILKV_DUO || BOARD_TYPE_MILKV_DUO_SPINOR + config BSP_USING_SD1_D1__IIC1_SDA + bool "SD1_D1/GP5" + config BSP_USING_SD1_D0__IIC1_SDA + bool "SD1_D0/GP8" + config BSP_USING_PAD_MIPIRX1P__IIC1_SDA + bool "PAD_MIPIRX1P/GP10" + endif + + if BOARD_TYPE_MILKV_DUO256M || BOARD_TYPE_MILKV_DUO256M_SPINOR + config BSP_USING_SD1_D1__IIC1_SDA + bool "SD1_D1/GP5" + config BSP_USING_SD1_D0__IIC1_SDA + bool "SD1_D0/GP8" + endif + endchoice + endif + + config BSP_USING_I2C2 + bool "Enable I2C2" + depends on BOARD_TYPE_MILKV_DUO256M || BOARD_TYPE_MILKV_DUO256M_SPINOR + default n + + if BSP_USING_I2C2 + choice + prompt "SCL" + + config BSP_USING_PAD_MIPI_TXP1__IIC2_SCL + bool "PAD_MIPI_TXP1/GP11" + endchoice + + choice + prompt "SDA" + + config BSP_USING_PAD_MIPI_TXM1__IIC2_SDA + bool "PAD_MIPI_TXM1/GP10" + endchoice + endif + + config BSP_USING_I2C3 + bool "Enable I2C3" + default n + + if BSP_USING_I2C3 + choice + prompt "SCL" + + if BOARD_TYPE_MILKV_DUO || BOARD_TYPE_MILKV_DUO_SPINOR + config BSP_USING_SD1_CMD__IIC3_SCL + bool "SD1_CMD/GP7" + endif + + if BOARD_TYPE_MILKV_DUO256M || BOARD_TYPE_MILKV_DUO256M_SPINOR + config BSP_USING_SD1_CMD__IIC3_SCL + bool "SD1_CMD/GP7" + endif + endchoice + + choice + prompt "SDA" + + if BOARD_TYPE_MILKV_DUO || BOARD_TYPE_MILKV_DUO_SPINOR + config BSP_USING_SD1_CLK__IIC3_SDA + bool "SD1_CLK/GP6" + endif + + if BOARD_TYPE_MILKV_DUO256M || BOARD_TYPE_MILKV_DUO256M_SPINOR + config BSP_USING_SD1_CLK__IIC3_SDA + bool "SD1_CLK/GP6" + endif + endchoice + endif + + config I2C_IRQ_BASE + int + default 49 + endif + config BSP_USING_ADC bool "Using ADC" select RT_USING_ADC @@ -42,6 +178,25 @@ menu "General Drivers Configuration" select RT_USING_SPI default n + menuconfig BSP_USING_WDT + bool "Enable Watchdog Timer" + select RT_USING_WDT + default n + + if BSP_USING_WDT + config BSP_USING_WDT0 + bool "Enable WDT0" + default n + + config BSP_USING_WDT1 + bool "Enable WDT1" + default n + + config BSP_USING_WDT2 + bool "Enable WDT2" + default n + endif + menuconfig BSP_USING_PWM bool "Using PWM" select RT_USING_PWM @@ -63,9 +218,13 @@ menu "General Drivers Configuration" config BSP_USING_PWM3 bool "Enable PWM 3" default n - endif + config BSP_USING_RTC + bool "Enable RTC" + select RT_USING_RTC + default n + config BSP_USING_SDH select RT_USING_SDIO select RT_USING_DFS @@ -80,4 +239,5 @@ menu "General Drivers Configuration" select RT_USING_LWIP select RT_USING_POSIX_FS select RT_USING_POSIX_SOCKET + endmenu diff --git a/bsp/cvitek/drivers/drv_adc.c b/bsp/cvitek/drivers/drv_adc.c index 17bb3f89949..39440cd49a4 100644 --- a/bsp/cvitek/drivers/drv_adc.c +++ b/bsp/cvitek/drivers/drv_adc.c @@ -11,8 +11,6 @@ #include #include "drv_adc.h" -#ifdef BSP_USING_ADC - #define DBG_LEVEL DBG_LOG #include #define LOG_TAG "DRV.ADC" @@ -117,5 +115,3 @@ int rt_hw_adc_init(void) return RT_EOK; } INIT_BOARD_EXPORT(rt_hw_adc_init); - -#endif /* BSP_USING_ADC */ diff --git a/bsp/cvitek/drivers/drv_hw_i2c.c b/bsp/cvitek/drivers/drv_hw_i2c.c index 1cbb47dc2aa..3189de4579a 100644 --- a/bsp/cvitek/drivers/drv_hw_i2c.c +++ b/bsp/cvitek/drivers/drv_hw_i2c.c @@ -11,8 +11,6 @@ #include #include -#ifdef RT_USING_I2C - #define DBG_TAG "drv.i2c" #define DBG_LVL DBG_INFO #include @@ -469,18 +467,327 @@ static const struct rt_i2c_bus_device_ops i2c_ops = .i2c_bus_control = RT_NULL }; -int rt_hw_i2c_init(void) +static void rt_hw_i2c_pinmux_config_i2c0() { - int result = RT_EOK; - #ifdef BSP_USING_I2C0 - PINMUX_CONFIG(IIC0_SCL, IIC0_SCL); - PINMUX_CONFIG(IIC0_SDA, IIC0_SDA); + + // SCL + #if defined(SOC_TYPE_CV180X) + #if defined(BSP_USING_IIC0_SCL__IIC0_SCL) + PINMUX_CONFIG(IIC0_SCL, IIC0_SCL); + #elif defined(BSP_USING_PWR_GPIO2__IIC0_SCL) + PINMUX_CONFIG(PWR_GPIO2, IIC0_SCL); + #elif defined(BSP_USING_PAD_MIPIRX4N__IIC0_SCL) + PINMUX_CONFIG(PAD_MIPIRX4N, IIC0_SCL); + #elif defined(BSP_USING_PAD_MIPI_TXP2__IIC0_SCL) + PINMUX_CONFIG(PAD_MIPI_TXP2, IIC0_SCL); + #endif + #endif // SOC_TYPE_CV180X + + #if defined(SOC_TYPE_SG2002) + #if defined(BSP_USING_IIC0_SCL__IIC0_SCL) + PINMUX_CONFIG(IIC0_SCL, IIC0_SCL); + #endif + #endif // SOC_TYPE_SG2002 + + // SDA + #if defined(SOC_TYPE_CV180X) + #if defined(BSP_USING_IIC0_SDA__IIC0_SDA) + PINMUX_CONFIG(IIC0_SDA, IIC0_SDA); + #elif defined(BSP_USING_PWR_GPIO1__IIC0_SDA) + PINMUX_CONFIG(PWR_GPIO1, IIC0_SDA); + #elif defined(BSP_USING_PAD_MIPIRX4P__IIC0_SDA) + PINMUX_CONFIG(PAD_MIPIRX4P, IIC0_SDA); + #elif defined(BSP_USING_PAD_MIPI_TXM2__IIC0_SDA) + PINMUX_CONFIG(PAD_MIPI_TXM2, IIC0_SDA); + #endif + #endif // SOC_TYPE_CV180X + + #if defined(SOC_TYPE_SG2002) + #if defined(BSP_USING_IIC0_SDA__IIC0_SDA) + PINMUX_CONFIG(IIC0_SDA, IIC0_SDA); + #endif + #endif // SOC_TYPE_SG2002 + #endif /* BSP_USING_I2C0 */ +} + +static void rt_hw_i2c_pinmux_config_i2c1() +{ #ifdef BSP_USING_I2C1 - PINMUX_CONFIG(PAD_MIPIRX1P, IIC1_SDA); - PINMUX_CONFIG(PAD_MIPIRX0N, IIC1_SCL); + + // SCL + #if defined(SOC_TYPE_CV180X) + #if defined(BSP_USING_SD0_CMD__IIC1_SCL) + PINMUX_CONFIG(SD0_CMD, IIC1_SCL); + #elif defined(BSP_USING_SD0_D2__IIC1_SCL) + PINMUX_CONFIG(SD0_D2, IIC1_SCL); + #elif defined(BSP_USING_SD1_D3__IIC1_SCL) + PINMUX_CONFIG(SD1_D3, IIC1_SCL); + #elif defined(BSP_USING_SD1_D2__IIC1_SCL) + PINMUX_CONFIG(SD1_D2, IIC1_SCL); + #elif defined(BSP_USING_MUX_SPI1_MOSI__IIC1_SCL) + PINMUX_CONFIG(MUX_SPI1_MOSI, IIC1_SCL); + #elif defined(BSP_USING_PAD_ETH_TXP__IIC1_SCL) + PINMUX_CONFIG(PAD_ETH_TXP, IIC1_SCL); + #elif defined(BSP_USING_PAD_MIPIRX4P__IIC1_SCL) + PINMUX_CONFIG(PAD_MIPIRX4P, IIC1_SCL); + #elif defined(BSP_USING_PAD_MIPIRX0N__IIC1_SCL) + PINMUX_CONFIG(PAD_MIPIRX0N, IIC1_SCL); + #elif defined(BSP_USING_PAD_MIPI_TXP2__IIC1_SCL) + PINMUX_CONFIG(PAD_MIPI_TXP2, IIC1_SCL); + #endif + #endif // SOC_TYPE_CV180X + + #if defined(SOC_TYPE_SG2002) + #if defined(BSP_USING_SD0_CMD__IIC1_SCL) + PINMUX_CONFIG(SD0_CMD, IIC1_SCL); + #elif defined(BSP_USING_SD0_D2__IIC1_SCL) + PINMUX_CONFIG(SD0_D2, IIC1_SCL); + #elif defined(BSP_USING_SD1_D3__IIC1_SCL) + PINMUX_CONFIG(SD1_D3, IIC1_SCL); + #elif defined(BSP_USING_SD1_D2__IIC1_SCL) + PINMUX_CONFIG(SD1_D2, IIC1_SCL); + #elif defined(BSP_USING_MUX_SPI1_MOSI__IIC1_SCL) + PINMUX_CONFIG(MUX_SPI1_MOSI, IIC1_SCL); + #elif defined(BSP_USING_PAD_ETH_TXP__IIC1_SCL) + PINMUX_CONFIG(PAD_ETH_TXP, IIC1_SCL); + #elif defined(BSP_USING_VIVO_D9__IIC1_SCL) + PINMUX_CONFIG(VIVO_D9, IIC1_SCL); + #elif defined(BSP_USING_VIVO_D3__IIC1_SCL) + PINMUX_CONFIG(VIVO_D3, IIC1_SCL); + #elif defined(BSP_USING_PAD_MIPIRX4P__IIC1_SCL) + PINMUX_CONFIG(PAD_MIPIRX4P, IIC1_SCL); + #elif defined(BSP_USING_PAD_MIPIRX0N__IIC1_SCL) + PINMUX_CONFIG(PAD_MIPIRX0N, IIC1_SCL); + #elif defined(BSP_USING_PAD_MIPI_TXP4__IIC1_SCL) + PINMUX_CONFIG(PAD_MIPI_TXP4, IIC1_SCL); + #elif defined(BSP_USING_PAD_MIPI_TXP3__IIC1_SCL) + PINMUX_CONFIG(PAD_MIPI_TXP3, IIC1_SCL); + #elif defined(BSP_USING_PAD_MIPI_TXP2__IIC1_SCL) + PINMUX_CONFIG(PAD_MIPI_TXP2, IIC1_SCL); + #endif + #endif // SOC_TYPE_SG2002 + + // SDA + #if defined(SOC_TYPE_CV180X) + #if defined(BSP_USING_SD0_CLK__IIC1_SDA) + PINMUX_CONFIG(SD0_CLK, IIC1_SDA); + #elif defined(BSP_USING_SD0_D1__IIC1_SDA) + PINMUX_CONFIG(SD0_D1, IIC1_SDA); + #elif defined(BSP_USING_SD1_D1__IIC1_SDA) + PINMUX_CONFIG(SD1_D1, IIC1_SDA); + #elif defined(BSP_USING_SD1_D0__IIC1_SDA) + PINMUX_CONFIG(SD1_D0, IIC1_SDA); + #elif defined(BSP_USING_MUX_SPI1_MISO__IIC1_SDA) + PINMUX_CONFIG(MUX_SPI1_MISO, IIC1_SDA); + #elif defined(BSP_USING_PAD_ETH_TXM__IIC1_SDA) + PINMUX_CONFIG(PAD_ETH_TXM, IIC1_SDA); + #elif defined(BSP_USING_PAD_MIPIRX4N__IIC1_SDA) + PINMUX_CONFIG(PAD_MIPIRX4N, IIC1_SDA); + #elif defined(BSP_USING_PAD_MIPIRX1P__IIC1_SDA) + PINMUX_CONFIG(PAD_MIPIRX1P, IIC1_SDA); + #elif defined(BSP_USING_PAD_MIPI_TXM2__IIC1_SDA) + PINMUX_CONFIG(PAD_MIPI_TXM2, IIC1_SDA); + #endif + #endif // SOC_TYPE_CV180X + + #if defined(SOC_TYPE_SG2002) + #if defined(BSP_USING_SD0_CLK__IIC1_SDA) + PINMUX_CONFIG(SD0_CLK, IIC1_SDA); + #elif defined(BSP_USING_SD0_D1__IIC1_SDA) + PINMUX_CONFIG(SD0_D1, IIC1_SDA); + #elif defined(BSP_USING_SD1_D1__IIC1_SDA) + PINMUX_CONFIG(SD1_D1, IIC1_SDA); + #elif defined(BSP_USING_SD1_D0__IIC1_SDA) + PINMUX_CONFIG(SD1_D0, IIC1_SDA); + #elif defined(BSP_USING_MUX_SPI1_MISO__IIC1_SDA) + PINMUX_CONFIG(MUX_SPI1_MISO, IIC1_SDA); + #elif defined(BSP_USING_PAD_ETH_TXM__IIC1_SDA) + PINMUX_CONFIG(PAD_ETH_TXM, IIC1_SDA); + #elif defined(BSP_USING_VIVO_D10__IIC1_SDA) + PINMUX_CONFIG(VIVO_D10, IIC1_SDA); + #elif defined(BSP_USING_VIVO_D4__IIC1_SDA) + PINMUX_CONFIG(VIVO_D4, IIC1_SDA); + #elif defined(BSP_USING_PAD_MIPIRX4N__IIC1_SDA) + PINMUX_CONFIG(PAD_MIPIRX4N, IIC1_SDA); + #elif defined(BSP_USING_PAD_MIPIRX1P__IIC1_SDA) + PINMUX_CONFIG(PAD_MIPIRX1P, IIC1_SDA); + #elif defined(BSP_USING_PAD_MIPI_TXM4__IIC1_SDA) + PINMUX_CONFIG(PAD_MIPI_TXM4, IIC1_SDA); + #elif defined(BSP_USING_PAD_MIPI_TXM3__IIC1_SDA) + PINMUX_CONFIG(PAD_MIPI_TXM3, IIC1_SDA); + #elif defined(BSP_USING_PAD_MIPI_TXM2__IIC1_SDA) + PINMUX_CONFIG(PAD_MIPI_TXM2, IIC1_SDA); + #endif + #endif // SOC_TYPE_SG2002 + #endif /* BSP_USING_I2C1 */ +} + +static void rt_hw_i2c_pinmux_config_i2c2() +{ +#ifdef BSP_USING_I2C2 + + // SCL + #if defined(SOC_TYPE_CV180X) + #if defined(BSP_USING_PWR_GPIO1__IIC2_SCL) + PINMUX_CONFIG(PWR_GPIO1, IIC2_SCL); + #elif defined(BSP_USING_PAD_MIPI_TXP1__IIC2_SCL) + PINMUX_CONFIG(PAD_MIPI_TXP1, IIC2_SCL); + #endif + #endif // SOC_TYPE_CV180X + + #if defined(SOC_TYPE_SG2002) + #if defined(BSP_USING_PWR_GPIO1__IIC2_SCL) + PINMUX_CONFIG(PWR_GPIO1, IIC2_SCL); + #elif defined(BSP_USING_IIC2_SCL__IIC2_SCL) + PINMUX_CONFIG(IIC2_SCL, IIC2_SCL); + #elif defined(BSP_USING_VIVO_D8__IIC2_SCL) + PINMUX_CONFIG(VIVO_D8, IIC2_SCL); + #elif defined(BSP_USING_PAD_MIPI_TXP3__IIC2_SCL) + PINMUX_CONFIG(PAD_MIPI_TXP3, IIC2_SCL); + #elif defined(BSP_USING_PAD_MIPI_TXP1__IIC2_SCL) + PINMUX_CONFIG(PAD_MIPI_TXP1, IIC2_SCL); + #endif + #endif // SOC_TYPE_SG2002 + + // SDA + #if defined(SOC_TYPE_CV180X) + #if defined(BSP_USING_PWR_GPIO2__IIC2_SDA) + PINMUX_CONFIG(PWR_GPIO2, IIC2_SDA); + #elif defined(BSP_USING_PAD_MIPI_TXM1__IIC2_SDA) + PINMUX_CONFIG(PAD_MIPI_TXM1, IIC2_SDA); + #endif + #endif // SOC_TYPE_CV180X + + #if defined(SOC_TYPE_SG2002) + #if defined(BSP_USING_PWR_GPIO2__IIC2_SDA) + PINMUX_CONFIG(PWR_GPIO2, IIC2_SDA); + #elif defined(BSP_USING_IIC2_SDA__IIC2_SDA) + PINMUX_CONFIG(IIC2_SDA, IIC2_SDA); + #elif defined(BSP_USING_VIVO_D7__IIC2_SDA) + PINMUX_CONFIG(VIVO_D7, IIC2_SDA); + #elif defined(BSP_USING_PAD_MIPI_TXM3__IIC2_SDA) + PINMUX_CONFIG(PAD_MIPI_TXM3, IIC2_SDA); + #elif defined(BSP_USING_PAD_MIPI_TXM1__IIC2_SDA) + PINMUX_CONFIG(PAD_MIPI_TXM1, IIC2_SDA); + #endif + #endif // SOC_TYPE_SG2002 + +#endif /* BSP_USING_I2C2 */ +} + +static void rt_hw_i2c_pinmux_config_i2c3() +{ +#ifdef BSP_USING_I2C3 + + // SCL + #if defined(SOC_TYPE_CV180X) + #if defined(BSP_USING_SD1_CMD__IIC3_SCL) + PINMUX_CONFIG(SD1_CMD, IIC3_SCL); + #endif + #endif // SOC_TYPE_CV180X + + #if defined(SOC_TYPE_SG2002) + #if defined(BSP_USING_IIC3_SCL__IIC3_SCL) + PINMUX_CONFIG(IIC3_SCL, IIC3_SCL); + #elif defined(BSP_USING_SD1_CMD__IIC3_SCL) + PINMUX_CONFIG(SD1_CMD, IIC3_SCL); + #elif defined(BSP_USING_VIVO_D0__IIC3_SCL) + PINMUX_CONFIG(VIVO_D0, IIC3_SCL); + #endif + #endif // SOC_TYPE_SG2002 + + // SDA + #if defined(SOC_TYPE_CV180X) + #if defined(BSP_USING_SD1_CLK__IIC3_SDA) + PINMUX_CONFIG(SD1_CLK, IIC3_SDA); + #endif + #endif // SOC_TYPE_CV180X + + #if defined(SOC_TYPE_SG2002) + #if defined(BSP_USING_IIC3_SDA__IIC3_SDA) + PINMUX_CONFIG(IIC3_SDA, IIC3_SDA); + #elif defined(BSP_USING_SD1_CLK__IIC3_SDA) + PINMUX_CONFIG(SD1_CLK, IIC3_SDA); + #elif defined(BSP_USING_VIVO_D1__IIC3_SDA) + PINMUX_CONFIG(VIVO_D1, IIC3_SDA); + #endif + #endif // SOC_TYPE_SG2002 + +#endif /* BSP_USING_I2C3 */ +} + +static void rt_hw_i2c_pinmux_config_i2c4() +{ +#ifdef BSP_USING_I2C4 + + // SCL + #if defined(SOC_TYPE_CV180X) + #if defined(BSP_USING_PWR_WAKEUP0__IIC4_SCL) + PINMUX_CONFIG(PWR_WAKEUP0, IIC4_SCL); + #elif defined(BSP_USING_PAD_MIPIRX2N__IIC4_SCL) + PINMUX_CONFIG(PAD_MIPIRX2N, IIC4_SCL); + #endif + #endif // SOC_TYPE_CV180X + + #if defined(SOC_TYPE_SG2002) + #if defined(BSP_USING_CAM_RST0__IIC4_SCL) + PINMUX_CONFIG(CAM_RST0, IIC4_SCL); + #elif defined(BSP_USING_PWR_WAKEUP0__IIC4_SCL) + PINMUX_CONFIG(PWR_WAKEUP0, IIC4_SCL); + #elif defined(BSP_USING_PWR_WAKEUP1__IIC4_SCL) + PINMUX_CONFIG(PWR_WAKEUP1, IIC4_SCL); + #elif defined(BSP_USING_ADC3__IIC4_SCL) + PINMUX_CONFIG(ADC3, IIC4_SCL); + #elif defined(BSP_USING_VIVO_D1__IIC4_SCL) + PINMUX_CONFIG(VIVO_D1, IIC4_SCL); + #endif + #endif // SOC_TYPE_SG2002 + + // SDA + #if defined(SOC_TYPE_CV180X) + #if defined(BSP_USING_PWR_BUTTON1__IIC4_SDA) + PINMUX_CONFIG(PWR_BUTTON1, IIC4_SDA); + #elif defined(BSP_USING_PAD_MIPIRX2P__IIC4_SDA) + PINMUX_CONFIG(PAD_MIPIRX2P, IIC4_SDA); + #endif + #endif // SOC_TYPE_CV180X + + #if defined(SOC_TYPE_SG2002) + #if defined(BSP_USING_CAM_PD1__IIC4_SDA) + PINMUX_CONFIG(CAM_PD1, IIC4_SDA); + #elif defined(BSP_USING_PWR_BUTTON1__IIC4_SDA) + PINMUX_CONFIG(PWR_BUTTON1, IIC4_SDA); + #elif defined(BSP_USING_PWR_ON__IIC4_SDA) + PINMUX_CONFIG(PWR_ON, IIC4_SDA); + #elif defined(BSP_USING_ADC2__IIC4_SDA) + PINMUX_CONFIG(ADC2, IIC4_SDA); + #elif defined(BSP_USING_VIVO_D0__IIC4_SDA) + PINMUX_CONFIG(VIVO_D0, IIC4_SDA); + #elif defined(BSP_USING_PAD_MIPIRX2P__IIC4_SDA) + PINMUX_CONFIG(PAD_MIPIRX2P, IIC4_SDA); + #endif + #endif // SOC_TYPE_SG2002 + +#endif /* BSP_USING_I2C4 */ +} + +static void rt_hw_i2c_pinmux_config() +{ + rt_hw_i2c_pinmux_config_i2c0(); + rt_hw_i2c_pinmux_config_i2c1(); + rt_hw_i2c_pinmux_config_i2c2(); + rt_hw_i2c_pinmux_config_i2c3(); + rt_hw_i2c_pinmux_config_i2c4(); +} + +int rt_hw_i2c_init(void) +{ + int result = RT_EOK; + + rt_hw_i2c_pinmux_config(); for (rt_size_t i = 0; i < sizeof(_i2c_obj) / sizeof(struct _i2c_bus); i++) { @@ -507,5 +814,3 @@ int rt_hw_i2c_init(void) return result; } INIT_BOARD_EXPORT(rt_hw_i2c_init); - -#endif /* RT_USING_I2C */ diff --git a/bsp/cvitek/drivers/drv_pwm.c b/bsp/cvitek/drivers/drv_pwm.c index 27f8a8bce90..e79a1521199 100644 --- a/bsp/cvitek/drivers/drv_pwm.c +++ b/bsp/cvitek/drivers/drv_pwm.c @@ -11,8 +11,6 @@ #include #include "drv_pwm.h" -#ifdef BSP_USING_PWM - #define DBG_LEVEL DBG_LOG #include #define LOG_TAG "DRV.PWM" @@ -52,6 +50,7 @@ static void cvi_pwm_get_config(rt_ubase_t reg_base, struct rt_pwm_configuration period_clk = cvi_pwm_get_period_ch(reg_base, (cfg->channel & PWM_MAX_CH)); cfg->period = period_clk * NSEC_COUNT / count_unit; } + static rt_err_t _pwm_control(struct rt_device_pwm *device, int cmd, void *arg) { struct rt_pwm_configuration *cfg = (struct rt_pwm_configuration *)arg; @@ -60,7 +59,7 @@ static rt_err_t _pwm_control(struct rt_device_pwm *device, int cmd, void *arg) const uint64_t count_unit = 100000000; // 100M count per second const uint64_t NSEC_COUNT = 1000000000; // ns - if (cfg->channel > PWM_MAX_CH) + if (cfg->channel >= PWM_CHANNEL_NUM) return -RT_EINVAL; switch (cmd) @@ -150,63 +149,5 @@ int rt_hw_pwm_init(void) } } return RT_EOK; -#if 0 -#ifdef BSP_USING_PWM0 - static struct cvi_pwm_dev cvi_pwm0; - - cvi_pwm0.name = "pwm0"; - cvi_pwm0.reg_base = CVI_PWM0_BASE; - - result = rt_device_pwm_register(&cvi_pwm0.device, cvi_pwm0.name, &cvi_pwm_ops, &cvi_pwm0); - if (result != RT_EOK) - { - LOG_E("device %s register failed.", cvi_pwm0.name); - return result; - } -#endif - -#ifdef BSP_USING_PWM1 - static struct cvi_pwm_dev cvi_pwm1; - cvi_pwm1.name = "pwm1"; - cvi_pwm1.reg_base = CVI_PWM1_BASE; - - result = rt_device_pwm_register(&cvi_pwm1.device, cvi_pwm1.name, &cvi_pwm_ops, &cvi_pwm1); - if (result != RT_EOK) - { - LOG_E("device %s register failed.", cvi_pwm1.name); - return result; - } -#endif - -#ifdef BSP_USING_PWM2 - static struct cvi_pwm_dev cvi_pwm2; - cvi_pwm2.name = "pwm2"; - cvi_pwm2.reg_base = CVI_PWM2_BASE; - - result = rt_device_pwm_register(&cvi_pwm2.device, cvi_pwm2.name, &cvi_pwm_ops, &cvi_pwm2); - if (result != RT_EOK) - { - LOG_E("device %s register failed.", cvi_pwm2.name); - return result; - } -#endif - -#ifdef BSP_USING_PWM3 - static struct cvi_pwm_dev cvi_pwm3; - cvi_pwm3.name = "pwm3"; - cvi_pwm3.reg_base = CVI_PWM3_BASE; - - result = rt_device_pwm_register(&cvi_pwm3.device, cvi_pwm3.name, &cvi_pwm_ops, &cvi_pwm3); - if (result != RT_EOK) - { - LOG_E("device %s register failed.", cvi_pwm3.name); - return result; - } -#endif - - return RT_EOK; -#endif } INIT_BOARD_EXPORT(rt_hw_pwm_init); - -#endif /* BSP_USING_PWM */ diff --git a/bsp/cvitek/drivers/drv_rtc.c b/bsp/cvitek/drivers/drv_rtc.c index 92019b9587a..a3388afc556 100644 --- a/bsp/cvitek/drivers/drv_rtc.c +++ b/bsp/cvitek/drivers/drv_rtc.c @@ -11,8 +11,6 @@ #include #include -#ifdef BSP_USING_RTC - #define DBG_TAG "DRV.RTC" #define DBG_LVL DBG_WARNING #include @@ -405,5 +403,3 @@ static int rt_hw_rtc_init(void) return RT_EOK; } INIT_DEVICE_EXPORT(rt_hw_rtc_init); - -#endif /* BSP_USING_RTC */ diff --git a/bsp/cvitek/drivers/drv_spi.c b/bsp/cvitek/drivers/drv_spi.c index aa6b3dd0b9f..82a5b31b3d7 100644 --- a/bsp/cvitek/drivers/drv_spi.c +++ b/bsp/cvitek/drivers/drv_spi.c @@ -9,7 +9,6 @@ */ #include "drv_spi.h" -#ifdef RT_USING_SPI #define DBG_TAG "drv.spi" #define DBG_LVL DBG_INFO @@ -231,5 +230,3 @@ int rt_hw_spi_init(void) return ret; } INIT_BOARD_EXPORT(rt_hw_spi_init); - -#endif /* RT_USING_SPI */ diff --git a/bsp/cvitek/drivers/drv_wdt.c b/bsp/cvitek/drivers/drv_wdt.c index 09481623c52..ddde93a6dcb 100644 --- a/bsp/cvitek/drivers/drv_wdt.c +++ b/bsp/cvitek/drivers/drv_wdt.c @@ -11,8 +11,6 @@ #include #include "drv_wdt.h" -#ifdef BSP_USING_WDT - #define DBG_LEVEL DBG_LOG #include #define LOG_TAG "DRV.WDT" @@ -161,5 +159,3 @@ int rt_hw_wdt_init(void) return RT_EOK; } INIT_BOARD_EXPORT(rt_hw_wdt_init); - -#endif /* BSP_USING_WDT */