summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChen Wang <[email protected]>2024-05-22 08:19:07 +0800
committerGitHub <[email protected]>2024-05-22 08:19:07 +0800
commit5dd3b7427a6a0b1f474e98159cfca15c36893810 (patch)
tree992d99bf9c42f3df94504f98e611dc436568833a
parentadf2b35ec61a5e04e1b1301a2b4c3485e3eba994 (diff)
Accumulated patchsets for bsp/cvitek (#8968)
* bsp: cvitek: kconfig: add wdt for cv18xx_riscv Add Watchdog timer in Kconfig. Signed-off-by: Chen Wang <[email protected]> * drv: cvitek: remove using macro from source file Building of source file should be controlled by SConscript, but not in source file itself. Signed-off-by: Chen Wang <[email protected]> * bsp: cvitek: kconfig: add i2c for cv18xx_riscv Add I2C in Kconfig for c906B. Note, the IRQ# is different from that of c906L. Signed-off-by: Chen Wang <[email protected]> * bsp: cvitek: kconfig: add rtc for cv18xx_riscv Add RTC in Kconfig for c906B. Signed-off-by: Chen Wang <[email protected]> * bsp: cvitek: fix channel issue for pwm driver The original code confuses the concepts of controllers and channels. Fixed it and do some code cleanup. Signed-off-by: Chen Wang <[email protected]> * bsp:cvitek: add i2c pinmux config for cv18xx_riscv Pinmux in driver code is controlled by SOC type, bcos driver code should be general and support all pins defined by SoC. Pinmux configuration in Kconfig is controlled by BOARD type, bcos when we operate on board, it does not expose all chip-level pin signals and we can only use part of them. Following is I2C signals exported by duo family. Details see https://milkv.io/docs/duo/overview. Note: we have not added support for duo-S. Duo === NAME I2C CV1800B/GPIO <PINNAME>__<FUNCNAME> ---- --- ------------ --------------------- GP0 I2C0_SCL XGPIOA[28] IIC0_SCL__IIC0_SCL GP1 I2C0_SDA XGPIOA[29] IIC0_SDA__IIC0_SDA GP4 I2C1_SCL PWR_GPIO[19] SD1_D2__IIC1_SCL GP9 I2C1_SCL PWR_GPIO[18] SD1_D3__IIC1_SCL GP11 I2C1_SCL XGPIOC[10] PAD_MIPIRX0N__IIC1_SCL GP5 I2C1_SDA PWR_GPIO[20] SD1_D1__IIC1_SDA GP8 I2C1_SDA PWR_GPIO[21] SD1_D0__IIC1_SDA GP10 I2C1_SDA XGPIOC[9] PAD_MIPIRX1P__IIC1_SDA GP7 I2C3_SCL PWR_GPIO[22] SD1_CMD__IIC3_SCL GP6 I2C3_SDA PWR_GPIO[23] SD1_CLK__IIC3_SDA Duo 256m ======== NAME I2C CV1800B/GPIO <PINNAME>__<FUNCNAME> ---- --- ------------ --------------------- GP4 I2C1_SCL PWR_GPIO[19] SD1_D2__IIC1_SCL GP9 I2C1_SCL PWR_GPIO[18] SD1_D3__IIC1_SCL GP5 I2C1_SDA PWR_GPIO[20] SD1_D1__IIC1_SDA GP8 I2C1_SDA PWR_GPIO[21] SD1_D0__IIC1_SDA GP11 I2C2_SCL XGPIOC[15] PAD_MIPI_TXP1__IIC2_SCL GP10 I2C2_SDA XGPIOC[14] PAD_MIPI_TXM1__IIC2_SDA GP7 I2C3_SCL PWR_GPIO[22] SD1_CMD__IIC3_SCL GP6 I2C3_SDA PWR_GPIO[23] SD1_CLK__IIC3_SDA Duo S ===== NAME I2C CV1800B/GPIO <PINNAME>__<FUNCNAME> ---- --- ------------ --------------------- J3-B18 I2C1_SCL XGPIOB[18] VIVO_D3__IIC1_SCL J3-B12 I2C1_SCL XGPIOB[12] VIVO_D9__IIC1_SCL J3-B11 I2C1_SDA XGPIOB[11] VIVO_D10__IIC1_SDA J3-B13 I2C2_SCL XGPIOB[13] VIVO_D8__IIC2_SCL J4-E1 I2C2_SCL PWR_GPIO[1] PWR_GPIO1__IIC2_SCL J3-B14 I2C2_SDA XGPIOB[14] VIVO_D7__IIC2_SDA J4-E2 I2C2_SDA PWR_GPIO[2] PWR_GPIO2__IIC2_SDA J3-B20 I2C4_SCL XGPIOB[20] VIVO_D1__IIC4_SCL J4-B1 I2C4_SCL XGPIOB[1] ADC3__IIC4_SCL J3-B21 I2C4_SDA XGPIOB[21] VIVO_D0__IIC4_SDA J4-B2 I2C4_SDA XGPIOB[2] ADC2__IIC4_SDA Signed-off-by: Chen Wang <[email protected]> Signed-off-by: flyingcys <[email protected]> * bsp:cvitek: remove using macro from source file for i2c Signed-off-by: Chen Wang <[email protected]> * bsp:cvitek: unify menu message text for i2c as other drivers Other dirvers has no extra word "HW". Signed-off-by: Chen Wang <[email protected]> * bsp:cvitek: add i2c pinmux config for c906_little Porting what we have done in commit "bsp:cvitek: add i2c pinmux config for cv18xx_riscv" to c906_little. Signed-off-by: Chen Wang <[email protected]> --------- Signed-off-by: Chen Wang <[email protected]> Signed-off-by: flyingcys <[email protected]> Co-authored-by: flyingcys <[email protected]>
-rwxr-xr-xbsp/cvitek/c906_little/Kconfig12
-rwxr-xr-xbsp/cvitek/c906_little/board/Kconfig121
-rwxr-xr-xbsp/cvitek/cv18xx_risc-v/Kconfig12
-rwxr-xr-xbsp/cvitek/cv18xx_risc-v/board/Kconfig164
-rw-r--r--bsp/cvitek/drivers/drv_adc.c4
-rw-r--r--bsp/cvitek/drivers/drv_hw_i2c.c327
-rw-r--r--bsp/cvitek/drivers/drv_pwm.c63
-rw-r--r--bsp/cvitek/drivers/drv_rtc.c4
-rw-r--r--bsp/cvitek/drivers/drv_spi.c3
-rw-r--r--bsp/cvitek/drivers/drv_wdt.c4
10 files changed, 622 insertions, 92 deletions
diff --git a/bsp/cvitek/c906_little/Kconfig b/bsp/cvitek/c906_little/Kconfig
index d981d97abe..37186e3c66 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 6a0d10c0f3..52fdc2d2a9 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 1977442273..430817672b 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 1e759e33b2..50efa0e0b0 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 17bb3f8994..39440cd49a 100644
--- a/bsp/cvitek/drivers/drv_adc.c
+++ b/bsp/cvitek/drivers/drv_adc.c
@@ -11,8 +11,6 @@
#include <rtdevice.h>
#include "drv_adc.h"
-#ifdef BSP_USING_ADC
-
#define DBG_LEVEL DBG_LOG
#include <rtdbg.h>
#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 1cbb47dc2a..3189de4579 100644
--- a/bsp/cvitek/drivers/drv_hw_i2c.c
+++ b/bsp/cvitek/drivers/drv_hw_i2c.c
@@ -11,8 +11,6 @@
#include <rtdevice.h>
#include <board.h>
-#ifdef RT_USING_I2C
-
#define DBG_TAG "drv.i2c"
#define DBG_LVL DBG_INFO
#include <rtdbg.h>
@@ -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 27f8a8bce9..e79a152119 100644
--- a/bsp/cvitek/drivers/drv_pwm.c
+++ b/bsp/cvitek/drivers/drv_pwm.c
@@ -11,8 +11,6 @@
#include <rtdevice.h>
#include "drv_pwm.h"
-#ifdef BSP_USING_PWM
-
#define DBG_LEVEL DBG_LOG
#include <rtdbg.h>
#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 92019b9587..a3388afc55 100644
--- a/bsp/cvitek/drivers/drv_rtc.c
+++ b/bsp/cvitek/drivers/drv_rtc.c
@@ -11,8 +11,6 @@
#include <rtthread.h>
#include <rtdevice.h>
-#ifdef BSP_USING_RTC
-
#define DBG_TAG "DRV.RTC"
#define DBG_LVL DBG_WARNING
#include <rtdbg.h>
@@ -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 aa6b3dd0b9..82a5b31b3d 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 09481623c5..ddde93a6dc 100644
--- a/bsp/cvitek/drivers/drv_wdt.c
+++ b/bsp/cvitek/drivers/drv_wdt.c
@@ -11,8 +11,6 @@
#include <rtdevice.h>
#include "drv_wdt.h"
-#ifdef BSP_USING_WDT
-
#define DBG_LEVEL DBG_LOG
#include <rtdbg.h>
#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 */