diff --git a/bsp/cvitek/cv18xx_aarch64/board/board.c b/bsp/cvitek/cv18xx_aarch64/board/board.c index f2edb9b5cb7..3151fd03f6b 100644 --- a/bsp/cvitek/cv18xx_aarch64/board/board.c +++ b/bsp/cvitek/cv18xx_aarch64/board/board.c @@ -89,15 +89,3 @@ void rt_hw_board_init(void) rt_hw_common_setup(); } #endif /* RT_USING_OFW */ - -static rt_ubase_t pinmux_base = RT_NULL; - -rt_ubase_t pinmux_base_ioremap(void) -{ - if (pinmux_base == RT_NULL) - { - pinmux_base = (rt_size_t)rt_ioremap((void*)0x03001000, 0x1000); - } - - return pinmux_base; -} diff --git a/bsp/cvitek/drivers/drv_gpio.c b/bsp/cvitek/drivers/drv_gpio.c index aef6b291d76..08954260809 100644 --- a/bsp/cvitek/drivers/drv_gpio.c +++ b/bsp/cvitek/drivers/drv_gpio.c @@ -11,9 +11,7 @@ #include #include #include -#ifdef RT_USING_SMART -#include -#endif +#include "drv_ioremap.h" #ifdef RT_USING_PIN #include "drv_gpio.h" @@ -303,6 +301,9 @@ static void rt_hw_gpio_isr(int irqno, void *param) int rt_hw_gpio_init(void) { + dwapb_gpio_base = (rt_size_t)rt_ioremap((void*)dwapb_gpio_base, DWAPB_GPIO_SIZE); + dwapb_gpio_base_e = (rt_size_t)rt_ioremap((void*)dwapb_gpio_base_e, DWAPB_GPIO_SIZE); + rt_device_pin_register("gpio", &_dwapb_ops, RT_NULL); #define INT_INSTALL_GPIO_DEVICE(no) \ diff --git a/bsp/cvitek/drivers/drv_ioremap.h b/bsp/cvitek/drivers/drv_ioremap.h new file mode 100644 index 00000000000..81efa92a0af --- /dev/null +++ b/bsp/cvitek/drivers/drv_ioremap.h @@ -0,0 +1,10 @@ +#pragma once + +#include + +#ifdef RT_USING_SMART +#include +#else +#define rt_ioremap(a, s) (a) +#define rt_iounmap(a) +#endif diff --git a/bsp/cvitek/drivers/drv_uart.c b/bsp/cvitek/drivers/drv_uart.c index ed482b21426..8b44d2bf530 100644 --- a/bsp/cvitek/drivers/drv_uart.c +++ b/bsp/cvitek/drivers/drv_uart.c @@ -18,6 +18,8 @@ #define DBG_LVL DBG_WARNING #include +#include "drv_ioremap.h" + /* * Divide positive or negative dividend by positive divisor and round * to closest integer. Result is undefined for negative divisors and @@ -252,45 +254,35 @@ int rt_hw_uart_init(void) PINMUX_CONFIG(UART0_RX, UART0_RX); PINMUX_CONFIG(UART0_TX, UART0_TX); BSP_INSTALL_UART_DEVICE(0); -#if defined(ARCH_ARM) uart->hw_base = (rt_size_t)rt_ioremap((void*)uart->hw_base, 0x10000); -#endif /* defined(ARCH_ARM) */ #endif #ifdef RT_USING_UART1 PINMUX_CONFIG(IIC0_SDA, UART1_RX); PINMUX_CONFIG(IIC0_SCL, UART1_TX); BSP_INSTALL_UART_DEVICE(1); -#if defined(ARCH_ARM) uart->hw_base = (rt_size_t)rt_ioremap((void*)uart->hw_base, 0x10000); -#endif /* defined(ARCH_ARM) */ #endif #ifdef RT_USING_UART2 PINMUX_CONFIG(SD1_D1, UART2_RX); PINMUX_CONFIG(SD1_D2, UART2_TX); BSP_INSTALL_UART_DEVICE(2); -#if defined(ARCH_ARM) uart->hw_base = (rt_size_t)rt_ioremap((void*)uart->hw_base, 0x10000); -#endif /* defined(ARCH_ARM) */ #endif #ifdef RT_USING_UART3 PINMUX_CONFIG(SD1_D1, UART3_RX); PINMUX_CONFIG(SD1_D2, UART3_TX); BSP_INSTALL_UART_DEVICE(3); -#if defined(ARCH_ARM) uart->hw_base = (rt_size_t)rt_ioremap((void*)uart->hw_base, 0x10000); -#endif /* defined(ARCH_ARM) */ #endif #ifdef RT_USING_UART4 PINMUX_CONFIG(SD1_GP0, UART4_RX); PINMUX_CONFIG(SD1_GP1, UART4_TX); BSP_INSTALL_UART_DEVICE(4); -#if defined(ARCH_ARM) uart->hw_base = (rt_size_t)rt_ioremap((void*)uart->hw_base, 0x10000); -#endif /* defined(ARCH_ARM) */ #endif return 0; diff --git a/bsp/cvitek/drivers/libraries/cv181x/pinctrl.h b/bsp/cvitek/drivers/libraries/cv181x/pinctrl.h index 7bec2f2dfbb..fc4c571280e 100644 --- a/bsp/cvitek/drivers/libraries/cv181x/pinctrl.h +++ b/bsp/cvitek/drivers/libraries/cv181x/pinctrl.h @@ -23,12 +23,9 @@ #define PAD_MIPI_TXM0__MIPI_TXM0 0 #define PAD_MIPI_TXP0__MIPI_TXP0 0 -#if defined(ARCH_ARM) extern rt_ubase_t pinmux_base_ioremap(void); #define PINMUX_BASE pinmux_base_ioremap() -#else -#define PINMUX_BASE 0x03001000 -#endif /* defined(ARCH_ARM) */ + #define PINMUX_MASK(PIN_NAME) FMUX_GPIO_FUNCSEL_##PIN_NAME##_MASK #define PINMUX_OFFSET(PIN_NAME) FMUX_GPIO_FUNCSEL_##PIN_NAME##_OFFSET #define PINMUX_VALUE(PIN_NAME, FUNC_NAME) PIN_NAME##__##FUNC_NAME diff --git a/bsp/cvitek/drivers/pinctrl.c b/bsp/cvitek/drivers/pinctrl.c new file mode 100644 index 00000000000..3432cc6a40a --- /dev/null +++ b/bsp/cvitek/drivers/pinctrl.c @@ -0,0 +1,14 @@ +#include +#include "drv_ioremap.h" + +static rt_ubase_t pinmux_base = RT_NULL; + +rt_ubase_t pinmux_base_ioremap(void) +{ + if (pinmux_base == RT_NULL) + { + pinmux_base = (rt_size_t)rt_ioremap((void*)0x03001000, 0x1000); + } + + return pinmux_base; +}