From 88448b7013da90518ba0781a9cdc5634fc44b610 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E8=B6=85?= Date: Wed, 28 Jul 2021 16:49:04 +0800 Subject: [PATCH 1/7] add drv_wdt and modify drv_lcd --- bsp/imx6ull-artpi-smart/.config | 12 +- bsp/imx6ull-artpi-smart/drivers/Kconfig | 17 +- bsp/imx6ull-artpi-smart/drivers/drv_lcd.c | 43 ++++- bsp/imx6ull-artpi-smart/drivers/drv_wdt.c | 204 ++++++++++++++++++++++ bsp/imx6ull-artpi-smart/drivers/drv_wdt.h | 48 +++++ bsp/imx6ull-artpi-smart/rtconfig.h | 12 +- 6 files changed, 318 insertions(+), 18 deletions(-) create mode 100644 bsp/imx6ull-artpi-smart/drivers/drv_wdt.c create mode 100644 bsp/imx6ull-artpi-smart/drivers/drv_wdt.h diff --git a/bsp/imx6ull-artpi-smart/.config b/bsp/imx6ull-artpi-smart/.config index fd6a0470f7..51cefdd5b5 100644 --- a/bsp/imx6ull-artpi-smart/.config +++ b/bsp/imx6ull-artpi-smart/.config @@ -190,7 +190,7 @@ CONFIG_RT_USING_SPI=y # CONFIG_RT_USING_SFUD is not set # CONFIG_RT_USING_ENC28J60 is not set # CONFIG_RT_USING_SPI_WIFI is not set -# CONFIG_RT_USING_WDT is not set +CONFIG_RT_USING_WDT=y # CONFIG_RT_USING_AUDIO is not set # CONFIG_RT_USING_SENSOR is not set # CONFIG_RT_USING_TOUCH is not set @@ -444,6 +444,7 @@ CONFIG_LWP_TID_MAX_NR=64 # CONFIG_PKG_USING_AGILE_MODBUS is not set # CONFIG_PKG_USING_AGILE_FTP is not set # CONFIG_PKG_USING_EMBEDDEDPROTO is not set +# CONFIG_PKG_USING_RT_LINK_HW is not set # # security packages @@ -748,7 +749,7 @@ CONFIG_I2C3_BAUD_RATE=400000 # Select LCD Driver # CONFIG_BSP_USING_LCD=y -CONFIG_BSP_LCD_WIDTH=1024 +CONFIG_BSP_LCD_WIDTH=1000 CONFIG_BSP_LCD_HEIGHT=600 # @@ -761,3 +762,10 @@ CONFIG_RT_USING_SDIO1=y # Select RTC Driver # CONFIG_BSP_USING_ONCHIP_RTC=y + +# +# Select WDT Driver +# +CONFIG_RT_USING_WDT1=y +CONFIG_RT_USING_WDT2=y +# CONFIG_RT_USING_WDT3 is not set diff --git a/bsp/imx6ull-artpi-smart/drivers/Kconfig b/bsp/imx6ull-artpi-smart/drivers/Kconfig index 8d0b855e78..905e2e7d11 100644 --- a/bsp/imx6ull-artpi-smart/drivers/Kconfig +++ b/bsp/imx6ull-artpi-smart/drivers/Kconfig @@ -104,7 +104,7 @@ config BSP_USING_LCD if BSP_USING_LCD config BSP_LCD_WIDTH int "Width of LCD panel" - default 1024 + default 1000 config BSP_LCD_HEIGHT int "Height of LCD panel" default 600 @@ -120,7 +120,6 @@ menu "Select SDHC Driver" bool "Enable SDHC2" default n endif - endmenu menu "Select RTC Driver" @@ -131,4 +130,18 @@ menu "Select RTC Driver" endif endmenu +menu "Select WDT Driver" + if RT_USING_WDT + config RT_USING_WDT1 + bool "Enable WDT1" + default n + config RT_USING_WDT2 + bool "Enable WDT2" + default n + config RT_USING_WDT3 + bool "Enable WDT3" + default n + endif +endmenu + endmenu diff --git a/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c b/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c index 6045cb5163..681204eb66 100644 --- a/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c +++ b/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c @@ -7,10 +7,12 @@ * Date Author Notes * 2021-01-11 Lyons first version * 2021-06-24 RiceChen refactor + * 2021-07-28 songchao add cmd */ #include #include +#include #ifdef BSP_USING_LCD @@ -20,6 +22,7 @@ #include "fsl_iomuxc.h" #include "drv_lcd.h" #include +#include "rt_lcd.h" struct imx6ull_lcd_config lcd_config = LCD_BUS_CONFIG; struct imx6ull_lcd_bus lcd_obj; @@ -64,7 +67,7 @@ static rt_err_t imx6ull_elcd_init(rt_device_t device) return RT_EOK; } - +void rt_hw_cpu_dcache_clean(void *addr, int size); static rt_err_t imx6ull_elcd_control(rt_device_t device, int cmd, void *args) { struct imx6ull_lcd_bus *elcd_dev = RT_NULL; @@ -77,6 +80,8 @@ static rt_err_t imx6ull_elcd_control(rt_device_t device, int cmd, void *args) { case RTGRAPHIC_CTRL_RECT_UPDATE: { + rt_hw_cpu_dcache_clean((void *)(lcd_obj.info.framebuffer), + elcd_dev->info.width * elcd_dev->info.height * elcd_dev->info.bits_per_pixel/8); break; } case RTGRAPHIC_CTRL_POWERON: @@ -95,9 +100,9 @@ static rt_err_t imx6ull_elcd_control(rt_device_t device, int cmd, void *args) RT_ASSERT(info != RT_NULL); rt_memcpy(&info->graphic, &elcd_dev->info, sizeof(struct rt_device_graphic_info)); - - info->screen.shamem_len = elcd_dev->info.width * elcd_dev->info.width * elcd_dev->info.bits_per_pixel/8; - info->screen.shamem_start = (rt_uint32_t)lwp_map_user_phy(lwp_self(), RT_NULL, + + info->screen.shamem_len = elcd_dev->info.width * elcd_dev->info.height * elcd_dev->info.bits_per_pixel/8; + info->screen.shamem_start = (rt_uint32_t)lwp_map_user_phy(lwp_self(), RT_NULL, elcd_dev->fb_phy, info->screen.shamem_len, 1); break; @@ -106,6 +111,26 @@ static rt_err_t imx6ull_elcd_control(rt_device_t device, int cmd, void *args) { break; } + case FBIOGET_FSCREENINFO: + { + struct fb_fix_screeninfo *info = (struct fb_fix_screeninfo *)args; + strncpy(info->id, elcd_dev->config->name, (strlen(elcd_dev->config->name)+1)); + info->smem_len = elcd_dev->info.width * elcd_dev->info.height * 2;; + info->smem_start = (rt_uint32_t)lwp_map_user_phy(lwp_self(), RT_NULL, + elcd_dev->fb_phy, + info->smem_len, 1); + info->line_length = elcd_dev->info.width * 2; + break; + } + case FBIOGET_VSCREENINFO: + { + struct fb_var_screeninfo *info = (struct fb_var_screeninfo *)args; + info->bits_per_pixel = elcd_dev->info.bits_per_pixel; + info->xres = elcd_dev->info.width; + info->yres = elcd_dev->info.height; + break; + } + } return RT_EOK; } @@ -133,7 +158,7 @@ int rt_hw_elcd_init(void) for(int i = 0; i < LCD_GPIO_MAX; i++) { IOMUXC_SetPinMux((lcd_config.lcd_mux_base + i * 4), 0x0U, 0x00000000U, 0x0U, (lcd_config.lcd_cfg_base + i * 4), 0); - IOMUXC_SetPinConfig((lcd_config.lcd_mux_base + i * 4), 0x0U, 0x00000000U, 0x0U, (lcd_config.lcd_cfg_base + i * 4), 0xB9); + IOMUXC_SetPinConfig((lcd_config.lcd_mux_base + i * 4), 0x0U, 0x00000000U, 0x0U, (lcd_config.lcd_cfg_base + i * 4), 0xB9); } CLOCK_EnableClock(lcd_config.apd_clk_name); @@ -144,10 +169,10 @@ int rt_hw_elcd_init(void) lcd_obj.fb_virt = rt_pages_alloc(rt_page_bits(LCD_BUF_SIZE)); lcd_obj.fb_phy = lcd_obj.fb_virt + PV_OFFSET; - rt_kprintf("fb address => 0x%08x\n", lcd_obj.fb_phy); + LOG_D("fb address => 0x%08x\n", lcd_obj.fb_phy); if(lcd_obj.fb_phy == RT_NULL) { - rt_kprintf("initialize frame buffer failed!\n"); + LOG_E("initialize frame buffer failed!\n"); return -RT_ERROR; } @@ -156,7 +181,7 @@ int rt_hw_elcd_init(void) lcd_obj.info.pixel_format = RTGRAPHIC_PIXEL_FORMAT_RGB565; lcd_obj.info.bits_per_pixel = LCD_BITS_PER_PIXEL; lcd_obj.info.framebuffer = (void *)lcd_obj.fb_virt; - + lcd_obj.parent.type = RT_Device_Class_Graphic; #ifdef RT_USING_DEVICE_OPS @@ -175,7 +200,7 @@ int rt_hw_elcd_init(void) ret = rt_device_register(&lcd_obj.parent, lcd_obj.config->name, RT_DEVICE_FLAG_RDWR); /* LCD_BL */ - rt_pin_mode (IMX6ULL_LCD_BL_PIN, PIN_MODE_OUTPUT); + rt_pin_mode (IMX6ULL_LCD_BL_PIN, PIN_MODE_OUTPUT); rt_pin_write(IMX6ULL_LCD_BL_PIN, PIN_HIGH); rt_memset((rt_uint8_t *)lcd_obj.fb_virt, 0xff, LCD_BUF_SIZE); diff --git a/bsp/imx6ull-artpi-smart/drivers/drv_wdt.c b/bsp/imx6ull-artpi-smart/drivers/drv_wdt.c new file mode 100644 index 0000000000..331b813c2f --- /dev/null +++ b/bsp/imx6ull-artpi-smart/drivers/drv_wdt.c @@ -0,0 +1,204 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-07-28 songchao first version + */ + +#include + +#ifdef RT_USING_WDT +#include +#include +#include "drv_wdt.h" +#include "fsl_wdog.h" +#include "imx6ull.h" + +enum +{ + #ifdef RT_USING_WDT1 + eDevWdt_WDT1, + #endif + + #ifdef RT_USING_WDT2 + eDevWdt_WDT2, + #endif + + #ifdef RT_USING_WDT3 + eDevWdt_WDT3, + #endif + + eDevWdt_Max, +}; + +#ifdef RT_USING_WDT1 +static wdog_config_t WDOG_1_config = +{ + .timeoutValue = 0xffu, + .enablePowerDown = false, + .softwareResetExtension = false, + .softwareAssertion= true, + .softwareResetSignal = true, + .enableWdog = true, + .workMode = + { + .enableWait = false, + .enableStop = false, + .enableDebug = false, + }, + .enableInterrupt = false, + .interruptTimeValue = 0x04u, +}; +#endif + +#ifdef RT_USING_WDT2 +static wdog_config_t WDOG_2_config = +{ + .timeoutValue = 0xffu, + .enablePowerDown = false, + .softwareResetExtension = false, + .softwareAssertion= true, + .softwareResetSignal = true, + .enableWdog = true, + .workMode = + { + .enableWait = false, + .enableStop = false, + .enableDebug = false, + }, + .enableInterrupt = false, + .interruptTimeValue = 0x04u, +}; +#endif + +#ifdef RT_USING_WDT3 +static wdog_config_t WDOG_3_config = +{ + .timeoutValue = 0xffu, + .enablePowerDown = false, + .softwareResetExtension = false, + .softwareAssertion= true, + .softwareResetSignal = true, + .enableWdog = true, + .workMode = + { + .enableWait = false, + .enableStop = false, + .enableDebug = false, + }, + .enableInterrupt = false, + .interruptTimeValue = 0x04u, +}; +#endif + +static rt_watchdog_t imx6ull_watchdog[eDevWdt_Max] = +{ + #ifdef RT_USING_WDT1 + { + .name = "wdt1", + .paddr = IMX6ULL_WATCHDOG1_BASE, + .config = &WDOG_1_config, + }, + #endif + + #ifdef RT_USING_WDT2 + { + .name = "wdt2", + .paddr = IMX6ULL_WATCHDOG2_BASE, + .config = &WDOG_2_config, + }, + #endif + + #ifdef RT_USING_WDT3 + { + .name = "wdt3", + .paddr = IMX6ULL_WATCHDOG3_BASE, + .config = &WDOG_3_config, + }, + #endif + +}; + +static rt_err_t imx6ull_wdog_init(rt_watchdog_t *wdt) +{ + WDOG_Type *base; + base = (WDOG_Type *)wdt->vaddr; + WDOG_Init(base, wdt->config); + WDOG_Disable(base); + + return RT_EOK; +} + +static rt_err_t imx6ull_wdog_control(rt_watchdog_t *wdt, int cmd, void *args) +{ + RT_ASSERT(wdt != NULL); + + WDOG_Type *base; + base = (WDOG_Type *)wdt->vaddr; + + switch(cmd) + { + case RT_DEVICE_CTRL_WDT_GET_TIMEOUT: + { + *(uint16_t *)args = (base->WCR >> 8) / 2; + } + break; + case RT_DEVICE_CTRL_WDT_SET_TIMEOUT: + { + RT_ASSERT(*(uint16_t *)args != 0); + WDOG_SetTimeoutValue(base, (*(uint16_t *)args) * 2); + WDOG_Disable(base); + } + break; + case RT_DEVICE_CTRL_WDT_KEEPALIVE: + { + WDOG_Refresh(base); + } + break; + case RT_DEVICE_CTRL_WDT_START: + { + WDOG_Enable(base); + } + break; + case RT_DEVICE_CTRL_WDT_STOP: + { + WDOG_Disable(base); + } + break; + default: + return RT_EINVAL; + } + + return RT_EOK; +} + +static struct rt_watchdog_ops imx6ull_wdog_ops = +{ + .init = imx6ull_wdog_init, + .control = imx6ull_wdog_control, +}; + +int rt_hw_wdt_init(void) +{ + rt_err_t ret = RT_EOK; + for (int idx=0; idx +#include "fsl_wdog.h" + +#define RT_DEVICE_CTRL_WDT_GET_TIMEOUT (1) /* get timeout(in seconds) */ +#define RT_DEVICE_CTRL_WDT_SET_TIMEOUT (2) /* set timeout(in seconds) */ +#define RT_DEVICE_CTRL_WDT_GET_TIMELEFT (3) /* get the left time before reboot(in seconds) */ +#define RT_DEVICE_CTRL_WDT_KEEPALIVE (4) /* refresh watchdog */ +#define RT_DEVICE_CTRL_WDT_START (5) /* start watchdog */ +#define RT_DEVICE_CTRL_WDT_STOP (6) /* stop watchdog */ + +struct rt_watchdog_ops; +struct rt_watchdog_device +{ + struct rt_device parent; + const struct rt_watchdog_ops *ops; + const char *name; + rt_uint32_t paddr; + rt_uint32_t vaddr; + rt_uint32_t irqno; + wdog_config_t *config; +}; +typedef struct rt_watchdog_device rt_watchdog_t; + +struct rt_watchdog_ops +{ + rt_err_t (*init)(rt_watchdog_t *wdt); + rt_err_t (*control)(rt_watchdog_t *wdt, int cmd, void *arg); +}; + +rt_err_t rt_hw_watchdog_register(rt_watchdog_t *wdt, + const char *name, + rt_uint32_t flag, + void *data); + +#endif /* __WATCHDOG_H__ */ diff --git a/bsp/imx6ull-artpi-smart/rtconfig.h b/bsp/imx6ull-artpi-smart/rtconfig.h index e0287f7c0a..1691b40b6a 100644 --- a/bsp/imx6ull-artpi-smart/rtconfig.h +++ b/bsp/imx6ull-artpi-smart/rtconfig.h @@ -124,6 +124,7 @@ #define RT_MMCSD_THREAD_PREORITY 22 #define RT_MMCSD_MAX_PARTITION 16 #define RT_USING_SPI +#define RT_USING_WDT /* Using USB */ @@ -267,9 +268,6 @@ /* Micrium: Micrium software products porting for RT-Thread */ -#define PKG_USING_LWEXT4 -#define RT_USING_DFS_LWEXT4 -#define PKG_USING_LWEXT4_LATEST_VERSION /* peripheral libraries and drivers */ @@ -310,16 +308,20 @@ /* Select LCD Driver */ #define BSP_USING_LCD -#define BSP_LCD_WIDTH 1024 +#define BSP_LCD_WIDTH 1000 #define BSP_LCD_HEIGHT 600 /* Select SDHC Driver */ #define RT_USING_SDIO1 -#define RT_USING_SDIO2 /* Select RTC Driver */ #define BSP_USING_ONCHIP_RTC +/* Select WDT Driver */ + +#define RT_USING_WDT1 +#define RT_USING_WDT2 + #endif -- Gitee From d6332576e98d1db83c844a62fa9a416496e8359d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E8=B6=85?= Date: Wed, 28 Jul 2021 17:27:20 +0800 Subject: [PATCH 2/7] update code style --- bsp/imx6ull-artpi-smart/drivers/drv_lcd.c | 68 ++++++++++++----------- bsp/imx6ull-artpi-smart/drivers/drv_wdt.c | 48 ++++++++-------- 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c b/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c index 681204eb66..1f7e562274 100644 --- a/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c +++ b/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c @@ -24,8 +24,8 @@ #include #include "rt_lcd.h" -struct imx6ull_lcd_config lcd_config = LCD_BUS_CONFIG; -struct imx6ull_lcd_bus lcd_obj; +static struct imx6ull_lcd_config g_lcd_config = LCD_BUS_CONFIG; +static struct imx6ull_lcd_bus g_lcd_obj; static rt_err_t imx6ull_elcd_init(rt_device_t device) { @@ -80,7 +80,7 @@ static rt_err_t imx6ull_elcd_control(rt_device_t device, int cmd, void *args) { case RTGRAPHIC_CTRL_RECT_UPDATE: { - rt_hw_cpu_dcache_clean((void *)(lcd_obj.info.framebuffer), + rt_hw_cpu_dcache_clean((void *)(g_lcd_obj.info.framebuffer), elcd_dev->info.width * elcd_dev->info.height * elcd_dev->info.bits_per_pixel/8); break; } @@ -115,7 +115,7 @@ static rt_err_t imx6ull_elcd_control(rt_device_t device, int cmd, void *args) { struct fb_fix_screeninfo *info = (struct fb_fix_screeninfo *)args; strncpy(info->id, elcd_dev->config->name, (strlen(elcd_dev->config->name)+1)); - info->smem_len = elcd_dev->info.width * elcd_dev->info.height * 2;; + info->smem_len = elcd_dev->info.width * elcd_dev->info.height * 2; info->smem_start = (rt_uint32_t)lwp_map_user_phy(lwp_self(), RT_NULL, elcd_dev->fb_phy, info->smem_len, 1); @@ -151,59 +151,61 @@ int rt_hw_elcd_init(void) { rt_err_t ret = 0; - lcd_config.ELCDIF = (LCDIF_Type *)imx6ull_get_periph_vaddr((rt_uint32_t)(lcd_config.ELCDIF)); - lcd_config.lcd_mux_base = (rt_uint32_t)imx6ull_get_periph_vaddr((rt_uint32_t)(lcd_config.lcd_mux_base)); - lcd_config.lcd_cfg_base = (rt_uint32_t)imx6ull_get_periph_vaddr((rt_uint32_t)(lcd_config.lcd_cfg_base)); + g_lcd_config.ELCDIF = (LCDIF_Type *)imx6ull_get_periph_vaddr((rt_uint32_t)(g_lcd_config.ELCDIF)); + g_lcd_config.lcd_mux_base = (rt_uint32_t)imx6ull_get_periph_vaddr((rt_uint32_t)(g_lcd_config.lcd_mux_base)); + g_lcd_config.lcd_cfg_base = (rt_uint32_t)imx6ull_get_periph_vaddr((rt_uint32_t)(g_lcd_config.lcd_cfg_base)); for(int i = 0; i < LCD_GPIO_MAX; i++) { - IOMUXC_SetPinMux((lcd_config.lcd_mux_base + i * 4), 0x0U, 0x00000000U, 0x0U, (lcd_config.lcd_cfg_base + i * 4), 0); - IOMUXC_SetPinConfig((lcd_config.lcd_mux_base + i * 4), 0x0U, 0x00000000U, 0x0U, (lcd_config.lcd_cfg_base + i * 4), 0xB9); + IOMUXC_SetPinMux((g_lcd_config.lcd_mux_base + i * 4), + 0x0U, 0x0U, 0x0U, (g_lcd_config.lcd_cfg_base + i * 4), 0); + IOMUXC_SetPinConfig((g_lcd_config.lcd_mux_base + i * 4), + 0x0U, 0x0U, 0x0U, (g_lcd_config.lcd_cfg_base + i * 4), 0xB9); } - CLOCK_EnableClock(lcd_config.apd_clk_name); - CLOCK_EnableClock(lcd_config.pix_clk_name); + CLOCK_EnableClock(g_lcd_config.apd_clk_name); + CLOCK_EnableClock(g_lcd_config.pix_clk_name); - lcd_obj.config = &lcd_config; + g_lcd_obj.config = &g_lcd_config; - lcd_obj.fb_virt = rt_pages_alloc(rt_page_bits(LCD_BUF_SIZE)); - lcd_obj.fb_phy = lcd_obj.fb_virt + PV_OFFSET; + g_lcd_obj.fb_virt = rt_pages_alloc(rt_page_bits(LCD_BUF_SIZE)); + g_lcd_obj.fb_phy = g_lcd_obj.fb_virt + PV_OFFSET; - LOG_D("fb address => 0x%08x\n", lcd_obj.fb_phy); - if(lcd_obj.fb_phy == RT_NULL) + LOG_D("fb address => 0x%08x\n", g_lcd_obj.fb_phy); + if(g_lcd_obj.fb_phy == RT_NULL) { LOG_E("initialize frame buffer failed!\n"); return -RT_ERROR; } - lcd_obj.info.width = LCD_WIDTH; - lcd_obj.info.height = LCD_HEIGHT; - lcd_obj.info.pixel_format = RTGRAPHIC_PIXEL_FORMAT_RGB565; - lcd_obj.info.bits_per_pixel = LCD_BITS_PER_PIXEL; - lcd_obj.info.framebuffer = (void *)lcd_obj.fb_virt; + g_lcd_obj.info.width = LCD_WIDTH; + g_lcd_obj.info.height = LCD_HEIGHT; + g_lcd_obj.info.pixel_format = RTGRAPHIC_PIXEL_FORMAT_RGB565; + g_lcd_obj.info.bits_per_pixel = LCD_BITS_PER_PIXEL; + g_lcd_obj.info.framebuffer = (void *)g_lcd_obj.fb_virt; - lcd_obj.parent.type = RT_Device_Class_Graphic; + g_lcd_obj.parent.type = RT_Device_Class_Graphic; #ifdef RT_USING_DEVICE_OPS - lcd_obj.parent.ops = &elcd_ops; + g_lcd_obj.parent.ops = &elcd_ops; #else - lcd_obj.parent.init = imx6ull_elcd_init; - lcd_obj.parent.open = RT_NULL; - lcd_obj.parent.close = RT_NULL; - lcd_obj.parent.read = RT_NULL; - lcd_obj.parent.write = RT_NULL; - lcd_obj.parent.control = imx6ull_elcd_control; + g_lcd_obj.parent.init = imx6ull_elcd_init; + g_lcd_obj.parent.open = RT_NULL; + g_lcd_obj.parent.close = RT_NULL; + g_lcd_obj.parent.read = RT_NULL; + g_lcd_obj.parent.write = RT_NULL; + g_lcd_obj.parent.control = imx6ull_elcd_control; #endif - lcd_obj.parent.user_data = (void *)&lcd_obj.info; + g_lcd_obj.parent.user_data = (void *)&g_lcd_obj.info; - ret = rt_device_register(&lcd_obj.parent, lcd_obj.config->name, RT_DEVICE_FLAG_RDWR); + ret = rt_device_register(&g_lcd_obj.parent, g_lcd_obj.config->name, RT_DEVICE_FLAG_RDWR); /* LCD_BL */ - rt_pin_mode (IMX6ULL_LCD_BL_PIN, PIN_MODE_OUTPUT); + rt_pin_mode(IMX6ULL_LCD_BL_PIN, PIN_MODE_OUTPUT); rt_pin_write(IMX6ULL_LCD_BL_PIN, PIN_HIGH); - rt_memset((rt_uint8_t *)lcd_obj.fb_virt, 0xff, LCD_BUF_SIZE); + rt_memset((rt_uint8_t *)g_lcd_obj.fb_virt, 0xff, LCD_BUF_SIZE); return ret; } diff --git a/bsp/imx6ull-artpi-smart/drivers/drv_wdt.c b/bsp/imx6ull-artpi-smart/drivers/drv_wdt.c index 331b813c2f..5a544dc093 100644 --- a/bsp/imx6ull-artpi-smart/drivers/drv_wdt.c +++ b/bsp/imx6ull-artpi-smart/drivers/drv_wdt.c @@ -19,19 +19,19 @@ enum { - #ifdef RT_USING_WDT1 - eDevWdt_WDT1, - #endif +#ifdef RT_USING_WDT1 + DEV_WDT1, +#endif - #ifdef RT_USING_WDT2 - eDevWdt_WDT2, - #endif +#ifdef RT_USING_WDT2 + DEV_WDT2, +#endif - #ifdef RT_USING_WDT3 - eDevWdt_WDT3, - #endif +#ifdef RT_USING_WDT3 + DEV_WDT3, +#endif - eDevWdt_Max, + DEV_MAX, }; #ifdef RT_USING_WDT1 @@ -40,7 +40,7 @@ static wdog_config_t WDOG_1_config = .timeoutValue = 0xffu, .enablePowerDown = false, .softwareResetExtension = false, - .softwareAssertion= true, + .softwareAssertion = true, .softwareResetSignal = true, .enableWdog = true, .workMode = @@ -60,7 +60,7 @@ static wdog_config_t WDOG_2_config = .timeoutValue = 0xffu, .enablePowerDown = false, .softwareResetExtension = false, - .softwareAssertion= true, + .softwareAssertion = true, .softwareResetSignal = true, .enableWdog = true, .workMode = @@ -80,7 +80,7 @@ static wdog_config_t WDOG_3_config = .timeoutValue = 0xffu, .enablePowerDown = false, .softwareResetExtension = false, - .softwareAssertion= true, + .softwareAssertion = true, .softwareResetSignal = true, .enableWdog = true, .workMode = @@ -94,41 +94,40 @@ static wdog_config_t WDOG_3_config = }; #endif -static rt_watchdog_t imx6ull_watchdog[eDevWdt_Max] = +static rt_watchdog_t imx6ull_watchdog[DEV_MAX] = { - #ifdef RT_USING_WDT1 +#ifdef RT_USING_WDT1 { .name = "wdt1", .paddr = IMX6ULL_WATCHDOG1_BASE, .config = &WDOG_1_config, }, - #endif +#endif - #ifdef RT_USING_WDT2 +#ifdef RT_USING_WDT2 { .name = "wdt2", .paddr = IMX6ULL_WATCHDOG2_BASE, .config = &WDOG_2_config, }, - #endif +#endif - #ifdef RT_USING_WDT3 +#ifdef RT_USING_WDT3 { .name = "wdt3", .paddr = IMX6ULL_WATCHDOG3_BASE, .config = &WDOG_3_config, }, - #endif +#endif }; static rt_err_t imx6ull_wdog_init(rt_watchdog_t *wdt) { - WDOG_Type *base; + WDOG_Type *base = RT_NULL; base = (WDOG_Type *)wdt->vaddr; WDOG_Init(base, wdt->config); WDOG_Disable(base); - return RT_EOK; } @@ -136,7 +135,7 @@ static rt_err_t imx6ull_wdog_control(rt_watchdog_t *wdt, int cmd, void *args) { RT_ASSERT(wdt != NULL); - WDOG_Type *base; + WDOG_Type *base = RT_NULL; base = (WDOG_Type *)wdt->vaddr; switch(cmd) @@ -184,11 +183,10 @@ static struct rt_watchdog_ops imx6ull_wdog_ops = int rt_hw_wdt_init(void) { rt_err_t ret = RT_EOK; - for (int idx=0; idx Date: Wed, 28 Jul 2021 17:37:13 +0800 Subject: [PATCH 3/7] update code style again --- bsp/imx6ull-artpi-smart/drivers/drv_lcd.c | 2 +- bsp/imx6ull-artpi-smart/drivers/drv_wdt.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c b/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c index 1f7e562274..593a1660fa 100644 --- a/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c +++ b/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c @@ -115,7 +115,7 @@ static rt_err_t imx6ull_elcd_control(rt_device_t device, int cmd, void *args) { struct fb_fix_screeninfo *info = (struct fb_fix_screeninfo *)args; strncpy(info->id, elcd_dev->config->name, (strlen(elcd_dev->config->name)+1)); - info->smem_len = elcd_dev->info.width * elcd_dev->info.height * 2; + info->smem_len = elcd_dev->info.width * elcd_dev->info.height * 2; info->smem_start = (rt_uint32_t)lwp_map_user_phy(lwp_self(), RT_NULL, elcd_dev->fb_phy, info->smem_len, 1); diff --git a/bsp/imx6ull-artpi-smart/drivers/drv_wdt.c b/bsp/imx6ull-artpi-smart/drivers/drv_wdt.c index 5a544dc093..763b6526da 100644 --- a/bsp/imx6ull-artpi-smart/drivers/drv_wdt.c +++ b/bsp/imx6ull-artpi-smart/drivers/drv_wdt.c @@ -183,11 +183,12 @@ static struct rt_watchdog_ops imx6ull_wdog_ops = int rt_hw_wdt_init(void) { rt_err_t ret = RT_EOK; - for(int idx=0; idx Date: Wed, 28 Jul 2021 17:44:33 +0800 Subject: [PATCH 4/7] update code style again --- bsp/imx6ull-artpi-smart/drivers/drv_lcd.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c b/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c index 593a1660fa..c0560e737f 100644 --- a/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c +++ b/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c @@ -81,7 +81,7 @@ static rt_err_t imx6ull_elcd_control(rt_device_t device, int cmd, void *args) case RTGRAPHIC_CTRL_RECT_UPDATE: { rt_hw_cpu_dcache_clean((void *)(g_lcd_obj.info.framebuffer), - elcd_dev->info.width * elcd_dev->info.height * elcd_dev->info.bits_per_pixel/8); + elcd_dev->info.width * elcd_dev->info.height * elcd_dev->info.bits_per_pixel/8); break; } case RTGRAPHIC_CTRL_POWERON: @@ -101,7 +101,7 @@ static rt_err_t imx6ull_elcd_control(rt_device_t device, int cmd, void *args) rt_memcpy(&info->graphic, &elcd_dev->info, sizeof(struct rt_device_graphic_info)); - info->screen.shamem_len = elcd_dev->info.width * elcd_dev->info.height * elcd_dev->info.bits_per_pixel/8; + info->screen.shamem_len = elcd_dev->info.width * elcd_dev->info.height * elcd_dev->info.bits_per_pixel/8; info->screen.shamem_start = (rt_uint32_t)lwp_map_user_phy(lwp_self(), RT_NULL, elcd_dev->fb_phy, info->screen.shamem_len, 1); @@ -157,9 +157,9 @@ int rt_hw_elcd_init(void) for(int i = 0; i < LCD_GPIO_MAX; i++) { - IOMUXC_SetPinMux((g_lcd_config.lcd_mux_base + i * 4), + IOMUXC_SetPinMux((g_lcd_config.lcd_mux_base + i * 4), 0x0U, 0x0U, 0x0U, (g_lcd_config.lcd_cfg_base + i * 4), 0); - IOMUXC_SetPinConfig((g_lcd_config.lcd_mux_base + i * 4), + IOMUXC_SetPinConfig((g_lcd_config.lcd_mux_base + i * 4), 0x0U, 0x0U, 0x0U, (g_lcd_config.lcd_cfg_base + i * 4), 0xB9); } -- Gitee From 12f51ba17557db9dcb9e0a875ac92d675ced67b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E8=B6=85?= Date: Wed, 28 Jul 2021 17:54:52 +0800 Subject: [PATCH 5/7] update code style again --- bsp/imx6ull-artpi-smart/drivers/drv_lcd.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c b/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c index c0560e737f..1979b2ce32 100644 --- a/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c +++ b/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c @@ -71,6 +71,7 @@ void rt_hw_cpu_dcache_clean(void *addr, int size); static rt_err_t imx6ull_elcd_control(rt_device_t device, int cmd, void *args) { struct imx6ull_lcd_bus *elcd_dev = RT_NULL; + int mem_size = 0; RT_ASSERT(device != RT_NULL); @@ -80,8 +81,8 @@ static rt_err_t imx6ull_elcd_control(rt_device_t device, int cmd, void *args) { case RTGRAPHIC_CTRL_RECT_UPDATE: { - rt_hw_cpu_dcache_clean((void *)(g_lcd_obj.info.framebuffer), - elcd_dev->info.width * elcd_dev->info.height * elcd_dev->info.bits_per_pixel/8); + mem_size = elcd_dev->info.width * elcd_dev->info.height * elcd_dev->info.bits_per_pixel/8; + rt_hw_cpu_dcache_clean((void *)(g_lcd_obj.info.framebuffer), mem_size); break; } case RTGRAPHIC_CTRL_POWERON: @@ -100,7 +101,6 @@ static rt_err_t imx6ull_elcd_control(rt_device_t device, int cmd, void *args) RT_ASSERT(info != RT_NULL); rt_memcpy(&info->graphic, &elcd_dev->info, sizeof(struct rt_device_graphic_info)); - info->screen.shamem_len = elcd_dev->info.width * elcd_dev->info.height * elcd_dev->info.bits_per_pixel/8; info->screen.shamem_start = (rt_uint32_t)lwp_map_user_phy(lwp_self(), RT_NULL, elcd_dev->fb_phy, -- Gitee From 003d3716c0ef1f61453f286094d3fdea83c9e16e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E8=B6=85?= Date: Wed, 28 Jul 2021 17:56:47 +0800 Subject: [PATCH 6/7] update code style again --- bsp/imx6ull-artpi-smart/drivers/drv_lcd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c b/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c index 1979b2ce32..4a86e13390 100644 --- a/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c +++ b/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c @@ -81,7 +81,7 @@ static rt_err_t imx6ull_elcd_control(rt_device_t device, int cmd, void *args) { case RTGRAPHIC_CTRL_RECT_UPDATE: { - mem_size = elcd_dev->info.width * elcd_dev->info.height * elcd_dev->info.bits_per_pixel/8; + mem_size = elcd_dev->info.width * elcd_dev->info.height * elcd_dev->info.bits_per_pixel / 8; rt_hw_cpu_dcache_clean((void *)(g_lcd_obj.info.framebuffer), mem_size); break; } @@ -101,7 +101,7 @@ static rt_err_t imx6ull_elcd_control(rt_device_t device, int cmd, void *args) RT_ASSERT(info != RT_NULL); rt_memcpy(&info->graphic, &elcd_dev->info, sizeof(struct rt_device_graphic_info)); - info->screen.shamem_len = elcd_dev->info.width * elcd_dev->info.height * elcd_dev->info.bits_per_pixel/8; + info->screen.shamem_len = elcd_dev->info.width * elcd_dev->info.height * elcd_dev->info.bits_per_pixel / 8; info->screen.shamem_start = (rt_uint32_t)lwp_map_user_phy(lwp_self(), RT_NULL, elcd_dev->fb_phy, info->screen.shamem_len, 1); -- Gitee From e5d00155131f6f628d62fa827725ca1ca84acbed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E8=B6=85?= Date: Thu, 29 Jul 2021 17:25:10 +0800 Subject: [PATCH 7/7] update code style again --- bsp/imx6ull-artpi-smart/drivers/drv_lcd.c | 79 +++++++++++------------ bsp/imx6ull-artpi-smart/drivers/drv_wdt.h | 6 +- 2 files changed, 41 insertions(+), 44 deletions(-) diff --git a/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c b/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c index 4a86e13390..aac324f1d5 100644 --- a/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c +++ b/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c @@ -24,8 +24,8 @@ #include #include "rt_lcd.h" -static struct imx6ull_lcd_config g_lcd_config = LCD_BUS_CONFIG; -static struct imx6ull_lcd_bus g_lcd_obj; +static struct imx6ull_lcd_config _lcd_config = LCD_BUS_CONFIG; +static struct imx6ull_lcd_bus _lcd_obj; static rt_err_t imx6ull_elcd_init(rt_device_t device) { @@ -67,7 +67,6 @@ static rt_err_t imx6ull_elcd_init(rt_device_t device) return RT_EOK; } -void rt_hw_cpu_dcache_clean(void *addr, int size); static rt_err_t imx6ull_elcd_control(rt_device_t device, int cmd, void *args) { struct imx6ull_lcd_bus *elcd_dev = RT_NULL; @@ -76,13 +75,12 @@ static rt_err_t imx6ull_elcd_control(rt_device_t device, int cmd, void *args) RT_ASSERT(device != RT_NULL); elcd_dev = (struct imx6ull_lcd_bus *)device; - switch(cmd) { case RTGRAPHIC_CTRL_RECT_UPDATE: { mem_size = elcd_dev->info.width * elcd_dev->info.height * elcd_dev->info.bits_per_pixel / 8; - rt_hw_cpu_dcache_clean((void *)(g_lcd_obj.info.framebuffer), mem_size); + rt_hw_cpu_dcache_ops(RT_HW_CACHE_FLUSH, (void *)(_lcd_obj.info.framebuffer), mem_size); break; } case RTGRAPHIC_CTRL_POWERON: @@ -99,7 +97,6 @@ static rt_err_t imx6ull_elcd_control(rt_device_t device, int cmd, void *args) { struct lcd_info *info = (struct lcd_info *)args; RT_ASSERT(info != RT_NULL); - rt_memcpy(&info->graphic, &elcd_dev->info, sizeof(struct rt_device_graphic_info)); info->screen.shamem_len = elcd_dev->info.width * elcd_dev->info.height * elcd_dev->info.bits_per_pixel / 8; info->screen.shamem_start = (rt_uint32_t)lwp_map_user_phy(lwp_self(), RT_NULL, @@ -114,11 +111,11 @@ static rt_err_t imx6ull_elcd_control(rt_device_t device, int cmd, void *args) case FBIOGET_FSCREENINFO: { struct fb_fix_screeninfo *info = (struct fb_fix_screeninfo *)args; - strncpy(info->id, elcd_dev->config->name, (strlen(elcd_dev->config->name)+1)); - info->smem_len = elcd_dev->info.width * elcd_dev->info.height * 2; - info->smem_start = (rt_uint32_t)lwp_map_user_phy(lwp_self(), RT_NULL, - elcd_dev->fb_phy, - info->smem_len, 1); + rt_memcpy(info->id, elcd_dev->config->name, (strlen(elcd_dev->config->name)+1)); + info->smem_len = elcd_dev->info.width * elcd_dev->info.height * elcd_dev->info.bits_per_pixel / 8; + info->smem_start = (rt_uint32_t)lwp_map_user_phy(lwp_self(), RT_NULL, + elcd_dev->fb_phy, + info->smem_len, 1); info->line_length = elcd_dev->info.width * 2; break; } @@ -151,61 +148,61 @@ int rt_hw_elcd_init(void) { rt_err_t ret = 0; - g_lcd_config.ELCDIF = (LCDIF_Type *)imx6ull_get_periph_vaddr((rt_uint32_t)(g_lcd_config.ELCDIF)); - g_lcd_config.lcd_mux_base = (rt_uint32_t)imx6ull_get_periph_vaddr((rt_uint32_t)(g_lcd_config.lcd_mux_base)); - g_lcd_config.lcd_cfg_base = (rt_uint32_t)imx6ull_get_periph_vaddr((rt_uint32_t)(g_lcd_config.lcd_cfg_base)); + _lcd_config.ELCDIF = (LCDIF_Type *)imx6ull_get_periph_vaddr((rt_uint32_t)(_lcd_config.ELCDIF)); + _lcd_config.lcd_mux_base = (rt_uint32_t)imx6ull_get_periph_vaddr((rt_uint32_t)(_lcd_config.lcd_mux_base)); + _lcd_config.lcd_cfg_base = (rt_uint32_t)imx6ull_get_periph_vaddr((rt_uint32_t)(_lcd_config.lcd_cfg_base)); for(int i = 0; i < LCD_GPIO_MAX; i++) { - IOMUXC_SetPinMux((g_lcd_config.lcd_mux_base + i * 4), - 0x0U, 0x0U, 0x0U, (g_lcd_config.lcd_cfg_base + i * 4), 0); - IOMUXC_SetPinConfig((g_lcd_config.lcd_mux_base + i * 4), - 0x0U, 0x0U, 0x0U, (g_lcd_config.lcd_cfg_base + i * 4), 0xB9); + IOMUXC_SetPinMux((_lcd_config.lcd_mux_base + i * 4), + 0x0U, 0x0U, 0x0U, (_lcd_config.lcd_cfg_base + i * 4), 0); + IOMUXC_SetPinConfig((_lcd_config.lcd_mux_base + i * 4), + 0x0U, 0x0U, 0x0U, (_lcd_config.lcd_cfg_base + i * 4), 0xB9); } - CLOCK_EnableClock(g_lcd_config.apd_clk_name); - CLOCK_EnableClock(g_lcd_config.pix_clk_name); + CLOCK_EnableClock(_lcd_config.apd_clk_name); + CLOCK_EnableClock(_lcd_config.pix_clk_name); - g_lcd_obj.config = &g_lcd_config; + _lcd_obj.config = &_lcd_config; - g_lcd_obj.fb_virt = rt_pages_alloc(rt_page_bits(LCD_BUF_SIZE)); - g_lcd_obj.fb_phy = g_lcd_obj.fb_virt + PV_OFFSET; + _lcd_obj.fb_virt = rt_pages_alloc(rt_page_bits(LCD_BUF_SIZE)); + _lcd_obj.fb_phy = _lcd_obj.fb_virt + PV_OFFSET; - LOG_D("fb address => 0x%08x\n", g_lcd_obj.fb_phy); - if(g_lcd_obj.fb_phy == RT_NULL) + LOG_D("fb address => 0x%08x\n", _lcd_obj.fb_phy); + if(_lcd_obj.fb_phy == RT_NULL) { LOG_E("initialize frame buffer failed!\n"); return -RT_ERROR; } - g_lcd_obj.info.width = LCD_WIDTH; - g_lcd_obj.info.height = LCD_HEIGHT; - g_lcd_obj.info.pixel_format = RTGRAPHIC_PIXEL_FORMAT_RGB565; - g_lcd_obj.info.bits_per_pixel = LCD_BITS_PER_PIXEL; - g_lcd_obj.info.framebuffer = (void *)g_lcd_obj.fb_virt; + _lcd_obj.info.width = LCD_WIDTH; + _lcd_obj.info.height = LCD_HEIGHT; + _lcd_obj.info.pixel_format = RTGRAPHIC_PIXEL_FORMAT_RGB565; + _lcd_obj.info.bits_per_pixel = LCD_BITS_PER_PIXEL; + _lcd_obj.info.framebuffer = (void *)_lcd_obj.fb_virt; - g_lcd_obj.parent.type = RT_Device_Class_Graphic; + _lcd_obj.parent.type = RT_Device_Class_Graphic; #ifdef RT_USING_DEVICE_OPS - g_lcd_obj.parent.ops = &elcd_ops; + _lcd_obj.parent.ops = &elcd_ops; #else - g_lcd_obj.parent.init = imx6ull_elcd_init; - g_lcd_obj.parent.open = RT_NULL; - g_lcd_obj.parent.close = RT_NULL; - g_lcd_obj.parent.read = RT_NULL; - g_lcd_obj.parent.write = RT_NULL; - g_lcd_obj.parent.control = imx6ull_elcd_control; + _lcd_obj.parent.init = imx6ull_elcd_init; + _lcd_obj.parent.open = RT_NULL; + _lcd_obj.parent.close = RT_NULL; + _lcd_obj.parent.read = RT_NULL; + _lcd_obj.parent.write = RT_NULL; + _lcd_obj.parent.control = imx6ull_elcd_control; #endif - g_lcd_obj.parent.user_data = (void *)&g_lcd_obj.info; + _lcd_obj.parent.user_data = (void *)&_lcd_obj.info; - ret = rt_device_register(&g_lcd_obj.parent, g_lcd_obj.config->name, RT_DEVICE_FLAG_RDWR); + ret = rt_device_register(&_lcd_obj.parent, _lcd_obj.config->name, RT_DEVICE_FLAG_RDWR); /* LCD_BL */ rt_pin_mode(IMX6ULL_LCD_BL_PIN, PIN_MODE_OUTPUT); rt_pin_write(IMX6ULL_LCD_BL_PIN, PIN_HIGH); - rt_memset((rt_uint8_t *)g_lcd_obj.fb_virt, 0xff, LCD_BUF_SIZE); + rt_memset((rt_uint8_t *)_lcd_obj.fb_virt, 0xff, LCD_BUF_SIZE); return ret; } diff --git a/bsp/imx6ull-artpi-smart/drivers/drv_wdt.h b/bsp/imx6ull-artpi-smart/drivers/drv_wdt.h index e7fbfa39fb..54b49b7300 100644 --- a/bsp/imx6ull-artpi-smart/drivers/drv_wdt.h +++ b/bsp/imx6ull-artpi-smart/drivers/drv_wdt.h @@ -1,11 +1,11 @@ /* - * COPYRIGHT (C) 2018, Real-Thread Information Technology Ltd + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: - * Date Author Notes - * 2012-09-12 heyuanjie87 first version. + * Date Author Notes + * 2021-07-28 songchao first version */ #ifndef __WATCHDOG_H__ -- Gitee