feat support uart8 and ec200t device on xidatong board

This commit is contained in:
Liu_Weichao 2022-06-08 10:41:21 +08:00
parent dadfdb85a3
commit c14f2f73e0
5 changed files with 121 additions and 33 deletions

View File

@ -3,6 +3,11 @@ config ADAPTER_4G_EC200T
default "ec200t"
if ADD_XIZI_FETURES
config ADAPTER_EC200T_USING_PWRKEY
bool "EC200T using PWRKEY pin number"
default n
if ADAPTER_EC200T_USING_PWRKEY
config ADAPTER_EC200T_PWRKEY
int "EC200T PWRKEY pin number"
default "97"
@ -10,6 +15,7 @@ if ADD_XIZI_FETURES
config ADAPTER_EC200T_PIN_DRIVER
string "EC200T device pin driver path"
default "/dev/pin_dev"
endif
config ADAPTER_EC200T_DRIVER_EXTUART
bool "Using extra uart to support 4G"

View File

@ -43,6 +43,7 @@ static void Ec200tPowerSet(void){ return; }
#else
static void Ec200tPowerSet(void)
{
#ifdef ADAPTER_EC200T_USING_PWRKEY
int pin_fd;
pin_fd = PrivOpen(ADAPTER_EC200T_PIN_DRIVER, O_RDWR);
if (pin_fd < 0) {
@ -73,6 +74,7 @@ static void Ec200tPowerSet(void)
PrivClose(pin_fd);
PrivTaskDelay(10000);
#endif
}
#endif

View File

@ -995,6 +995,21 @@ void BOARD_InitUartPins(void)
IOMUXC_GPIO_AD_B1_03_LPUART2_RX,
0x10B0u);
#endif
#ifdef BSP_USING_LPUART8
IOMUXC_SetPinMux(
IOMUXC_GPIO_AD_B1_10_LPUART8_TX,
0U);
IOMUXC_SetPinMux(
IOMUXC_GPIO_AD_B1_11_LPUART8_RX,
0U);
IOMUXC_SetPinConfig(
IOMUXC_GPIO_AD_B1_10_LPUART8_TX,
0x10B0u);
IOMUXC_SetPinConfig(
IOMUXC_GPIO_AD_B1_11_LPUART8_RX,
0x10B0u);
#endif
}
/***********************************************************************************************************************

View File

@ -1,7 +1,7 @@
config BSP_USING_LPUART1
bool "Enable LPUART1"
default y
if BSP_USING_LPUART1
bool "Enable LPUART1"
default y
if BSP_USING_LPUART1
config SERIAL_BUS_NAME_1
string "serial bus 1 name"
default "uart1"
@ -11,12 +11,12 @@ if BSP_USING_LPUART1
config SERIAL_1_DEVICE_NAME_0
string "serial bus 1 device name"
default "uart1_dev1"
endif
endif
config BSP_USING_LPUART2
bool "Enable LPUART2"
default y
if BSP_USING_LPUART2
bool "Enable LPUART2"
default y
if BSP_USING_LPUART2
config SERIAL_BUS_NAME_2
string "serial bus 2 name"
default "uart2"
@ -26,4 +26,19 @@ if BSP_USING_LPUART2
config SERIAL_2_DEVICE_NAME_0
string "serial bus 2 device name"
default "uart2_dev2"
endif
endif
config BSP_USING_LPUART8
bool "Enable LPUART8"
default n
if BSP_USING_LPUART8
config SERIAL_BUS_NAME_8
string "serial bus 8 name"
default "uart8"
config SERIAL_DRV_NAME_8
string "serial bus 8 driver name"
default "uart8_drv"
config SERIAL_8_DEVICE_NAME_0
string "serial bus 8 device name"
default "uart8_dev8"
endif

View File

@ -66,6 +66,23 @@ void LPUART2_IRQHandler(int irqn, void *arg)
DECLARE_HW_IRQ(UART2_IRQn, LPUART2_IRQHandler, NONE);
#endif
#ifdef BSP_USING_LPUART8
struct SerialBus serial_bus_8;
struct SerialDriver serial_driver_8;
struct SerialHardwareDevice serial_device_8;
void LPUART8_IRQHandler(int irqn, void *arg)
{
DisableIRQ(LPUART8_IRQn);
UartIsr(&serial_bus_8, &serial_driver_8, &serial_device_8);
EnableIRQ(LPUART8_IRQn);
}
DECLARE_HW_IRQ(LPUART8_IRQn, LPUART8_IRQHandler, NONE);
#endif
static void SerialCfgParamCheck(struct SerialCfgParam *serial_cfg_default, struct SerialCfgParam *serial_cfg_new)
{
struct SerialDataCfg *data_cfg_default = &serial_cfg_default->data_cfg;
@ -426,5 +443,38 @@ int Imxrt1052HwUartInit(void)
}
#endif
#ifdef BSP_USING_LPUART8
static struct SerialCfgParam serial_cfg_8;
memset(&serial_cfg_8, 0, sizeof(struct SerialCfgParam));
static struct SerialDevParam serial_dev_param_8;
memset(&serial_dev_param_8, 0, sizeof(struct SerialDevParam));
serial_driver_8.drv_done = &drv_done;
serial_driver_8.configure = &SerialDrvConfigure;
serial_device_8.hwdev_done = &hwdev_done;
serial_cfg_8.data_cfg = data_cfg_init;
serial_cfg_8.hw_cfg.private_data = (void *)LPUART8;
serial_cfg_8.hw_cfg.serial_irq_interrupt = LPUART8_IRQn;
serial_driver_8.private_data = (void *)&serial_cfg_8;
serial_dev_param_8.serial_work_mode = SIGN_OPER_INT_RX;
serial_device_8.haldev.private_data = (void *)&serial_dev_param_8;
ret = BoardSerialBusInit(&serial_bus_8, &serial_driver_8, SERIAL_BUS_NAME_8, SERIAL_DRV_NAME_8);
if (EOK != ret) {
KPrintf("Imxrt1052HwUartInit uart error ret %u\n", ret);
return ERROR;
}
ret = BoardSerialDevBend(&serial_device_8, (void *)&serial_cfg_8, SERIAL_BUS_NAME_8, SERIAL_8_DEVICE_NAME_0);
if (EOK != ret) {
KPrintf("Imxrt1052HwUartInit uart error ret %u\n", ret);
return ERROR;
}
#endif
return ret;
}