mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-11-09 20:45:41 +08:00
add raspi4 lcd driver
This commit is contained in:
1 parent
f8c8bc1c41
commit
5bcf84edcb
15 files changed
+3133
-20
No files matched your search
@@ -142,7 +142,9 @@ CONFIG_RT_USING_DFS_DEVFS=y
|
||||
#
|
||||
CONFIG_RT_USING_DEVICE_IPC=y
|
||||
CONFIG_RT_PIPE_BUFSZ=512
|
||||
# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set
|
||||
CONFIG_RT_USING_SYSTEM_WORKQUEUE=y
|
||||
CONFIG_RT_SYSTEM_WORKQUEUE_STACKSIZE=2048
|
||||
CONFIG_RT_SYSTEM_WORKQUEUE_PRIORITY=23
|
||||
CONFIG_RT_USING_SERIAL=y
|
||||
CONFIG_RT_SERIAL_USING_DMA=y
|
||||
CONFIG_RT_SERIAL_RB_BUFSZ=64
|
||||
@@ -175,7 +177,7 @@ CONFIG_RT_USING_SPI=y
|
||||
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
|
||||
CONFIG_RT_USING_TOUCH=y
|
||||
# CONFIG_RT_USING_HWCRYPTO is not set
|
||||
# CONFIG_RT_USING_PULSE_ENCODER is not set
|
||||
# CONFIG_RT_USING_INPUT_CAPTURE is not set
|
||||
@@ -206,7 +208,13 @@ CONFIG_RT_USING_POSIX=y
|
||||
#
|
||||
# Socket abstraction layer
|
||||
#
|
||||
# CONFIG_RT_USING_SAL is not set
|
||||
CONFIG_RT_USING_SAL=y
|
||||
|
||||
#
|
||||
# protocol stack implement
|
||||
#
|
||||
CONFIG_SAL_USING_LWIP=y
|
||||
CONFIG_SAL_USING_POSIX=y
|
||||
|
||||
#
|
||||
# Network interface device
|
||||
@@ -616,8 +624,8 @@ CONFIG_BSP_USING_UART=y
|
||||
CONFIG_RT_USING_UART0=y
|
||||
# CONFIG_RT_USING_UART1 is not set
|
||||
CONFIG_RT_USING_UART3=y
|
||||
CONFIG_RT_USING_UART4=y
|
||||
# CONFIG_RT_USING_UART5 is not set
|
||||
# CONFIG_RT_USING_UART4 is not set
|
||||
CONFIG_RT_USING_UART5=y
|
||||
CONFIG_BSP_USING_GIC=y
|
||||
CONFIG_BSP_USING_GIC400=y
|
||||
# CONFIG_BSP_USING_GIC500 is not set
|
||||
@@ -625,10 +633,11 @@ CONFIG_BSP_USING_PIN=y
|
||||
CONFIG_BSP_USING_SPI=y
|
||||
CONFIG_BSP_USING_SPI0_BUS=y
|
||||
CONFIG_BSP_USING_SPI0_DEVICE0=y
|
||||
# CONFIG_BSP_USING_SPI0_DEVICE1 is not set
|
||||
CONFIG_BSP_USING_SPI0_DEVICE1=y
|
||||
CONFIG_BSP_USING_CORETIMER=y
|
||||
# CONFIG_BSP_USING_SYSTIMER is not set
|
||||
CONFIG_BSP_USING_WDT=y
|
||||
CONFIG_BSP_USING_ETH=y
|
||||
# CONFIG_BSP_USING_RTC is not set
|
||||
CONFIG_BSP_USING_SDIO=y
|
||||
CONFIG_BSP_USING_SDIO0=y
|
||||
@@ -636,5 +645,11 @@ CONFIG_BSP_USING_SDIO0=y
|
||||
#
|
||||
# Board Peripheral Drivers
|
||||
#
|
||||
CONFIG_BSP_USING_HDMI=y
|
||||
CONFIG_BSP_USING_HDMI_DISPLAY=y
|
||||
CONFIG_BSP_USING_LCD=y
|
||||
# CONFIG_BSP_USING_HDMI_DISPLAY is not set
|
||||
CONFIG_BSP_USING_DSI_DISPLAY=y
|
||||
# CONFIG_BSP_USING_ILI9486 is not set
|
||||
CONFIG_BSP_USING_TOUCH=y
|
||||
CONFIG_BSP_USING_DSI_TOUCH_DEV=y
|
||||
# CONFIG_BSP_USING_XPT_TOUCH_DEV is not set
|
||||
# CONFIG_USING_LCD_CONSOLE is not set
|
||||
@@ -93,6 +93,10 @@ menu "Hardware Drivers Config"
|
||||
select RT_USING_WDT
|
||||
default n
|
||||
|
||||
config BSP_USING_ETH
|
||||
bool "Enable ETH"
|
||||
default n
|
||||
|
||||
menuconfig BSP_USING_RTC
|
||||
bool "Enable RTC"
|
||||
select RT_USING_RTC
|
||||
@@ -119,14 +123,37 @@ menu "Hardware Drivers Config"
|
||||
endmenu
|
||||
|
||||
menu "Board Peripheral Drivers"
|
||||
menuconfig BSP_USING_HDMI
|
||||
bool "Enable HDMI"
|
||||
menuconfig BSP_USING_LCD
|
||||
bool "Enable LCD"
|
||||
default n
|
||||
|
||||
if BSP_USING_HDMI
|
||||
if BSP_USING_LCD
|
||||
config BSP_USING_HDMI_DISPLAY
|
||||
bool "HDMI DISPLAY"
|
||||
default n
|
||||
config BSP_USING_DSI_DISPLAY
|
||||
bool "DSI DISPLAY"
|
||||
default n
|
||||
config BSP_USING_ILI9486
|
||||
bool "ILI9486 DISPLAY"
|
||||
default n
|
||||
endif
|
||||
|
||||
menuconfig BSP_USING_TOUCH
|
||||
bool "Enable Touch"
|
||||
default n
|
||||
|
||||
if BSP_USING_TOUCH
|
||||
config BSP_USING_DSI_TOUCH_DEV
|
||||
bool "DSI TOUCH"
|
||||
default n
|
||||
config BSP_USING_XPT_TOUCH_DEV
|
||||
bool "XPT TOUCH"
|
||||
default n
|
||||
endif
|
||||
|
||||
config USING_LCD_CONSOLE
|
||||
bool "LCD CONSOLE"
|
||||
default n
|
||||
endmenu
|
||||
endmenu
|
||||
@@ -1,9 +1,17 @@
|
||||
# RT-Thread building script for component
|
||||
from building import *
|
||||
|
||||
cwd = GetCurrentDir()
|
||||
src = Glob('*.c') + Glob('*.cpp')
|
||||
CPPPATH = [cwd, str(Dir('#'))]
|
||||
|
||||
if not GetDepend('BSP_USING_ETH'):
|
||||
SrcRemove(src, ['drv_eth.c'])
|
||||
if not GetDepend('BSP_USING_SPI'):
|
||||
SrcRemove(src, ['drv_spi.c'])
|
||||
if not GetDepend('BSP_USING_WDT'):
|
||||
SrcRemove(src, ['drv_wdt.c'])
|
||||
|
||||
group = DefineGroup('driver', src, depend = [''], CPPPATH = CPPPATH)
|
||||
|
||||
# build for sub-directory
|
||||
|
||||
@@ -21,7 +21,8 @@
|
||||
struct mem_desc platform_mem_desc[] = {
|
||||
{0x0, 0x6400000, 0x0, NORMAL_MEM},
|
||||
{0x8000000, 0x8800000, 0x8000000, DEVICE_MEM}, //mbox msg
|
||||
{0x0EA00000, 0x0EE00000, 0x0EA00000, DEVICE_MEM}, //framebuffer
|
||||
{0x0E000000, 0x0EE00000, 0x0E000000, DEVICE_MEM}, //framebuffer
|
||||
{0x0F400000, 0x0FA00000, 0x0F400000, DEVICE_MEM}, //dsi_touch
|
||||
{0xFD500000, 0xFDA00000, 0xFD500000, DEVICE_MEM}, //gmac
|
||||
{0xFE000000, 0xFE400000, 0xFE000000, DEVICE_MEM}, //peripheral
|
||||
{0xFF800000, 0xFFA00000, 0xFF800000, DEVICE_MEM} //gic
|
||||
|
||||
@@ -75,7 +75,6 @@ static rt_err_t raspi_spi_configure(struct rt_spi_device *device, struct rt_spi_
|
||||
{
|
||||
RT_ASSERT(cfg != RT_NULL);
|
||||
RT_ASSERT(device != RT_NULL);
|
||||
rt_uint16_t divider;
|
||||
struct raspi_spi_device* hw_config = (struct raspi_spi_device *)(device->parent.user_data);
|
||||
struct raspi_spi_hw_config *hwcfg = (struct raspi_spi_hw_config *)hw_config->spi_hw_config;
|
||||
// spi clear fifo
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
# RT-Thread building script for component
|
||||
|
||||
from building import *
|
||||
|
||||
cwd = GetCurrentDir()
|
||||
src = Glob('*.c') + Glob('*.cpp')
|
||||
CPPPATH = [cwd]
|
||||
|
||||
if not (GetDepend('BSP_USING_HDMI_DISPLAY') or GetDepend('BSP_USING_DSI_DISPLAY')):
|
||||
SrcRemove(src, ['drv_hdmi.c'])
|
||||
if not GetDepend('BSP_USING_ILI9486'):
|
||||
SrcRemove(src, ['drv_ili9486.c'])
|
||||
if not GetDepend('USING_LCD_CONSOLE'):
|
||||
SrcRemove(src, ['lcd_console.c'])
|
||||
|
||||
group = DefineGroup('drv_lcd', src, depend = ['BSP_USING_LCD'], CPPPATH = CPPPATH)
|
||||
|
||||
Return('group')
|
||||
+18
-4
@@ -13,10 +13,14 @@
|
||||
#include "mbox.h"
|
||||
#include "drv_hdmi.h"
|
||||
|
||||
#ifdef BSP_USING_HDMI
|
||||
#ifdef USING_LCD_CONSOLE
|
||||
#include "lcd_console.h"
|
||||
#endif
|
||||
|
||||
#if defined(BSP_USING_HDMI_DISPLAY) || defined(BSP_USING_DSI_DISPLAY)
|
||||
#define LCD_WIDTH (800)
|
||||
#define LCD_HEIGHT (480)
|
||||
#define LCD_DEPTH (32)
|
||||
#define LCD_DEPTH (4)
|
||||
#define LCD_BPP (32)
|
||||
|
||||
#define TAG_ALLOCATE_BUFFER 0x00040001
|
||||
@@ -84,6 +88,9 @@ rt_size_t hdmi_fb_read(rt_device_t dev, rt_off_t pos, void *buf, rt_size_t size)
|
||||
|
||||
rt_size_t hdmi_fb_write(rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size)
|
||||
{
|
||||
#ifdef USING_LCD_CONSOLE
|
||||
fb_print((char*)buffer);
|
||||
#endif
|
||||
return size;
|
||||
}
|
||||
|
||||
@@ -105,7 +112,7 @@ rt_err_t hdmi_fb_control(rt_device_t dev, int cmd, void *args)
|
||||
|
||||
RT_ASSERT(info != RT_NULL);
|
||||
info->pixel_format = RTGRAPHIC_PIXEL_FORMAT_RGB888;
|
||||
info->bits_per_pixel= LCD_DEPTH;
|
||||
info->bits_per_pixel= 32;
|
||||
info->width = lcd->width;
|
||||
info->height = lcd->height;
|
||||
info->framebuffer = lcd->fb;
|
||||
@@ -285,12 +292,18 @@ void *bcm271x_mbox_fb_alloc(int width, int height, int bpp, int nrender)
|
||||
mbox[34] = TAG_END;
|
||||
|
||||
mbox_call(8, MMU_DISABLE);
|
||||
|
||||
return (void *)((rt_uint32_t)(mbox[5] & 0x3fffffff));
|
||||
}
|
||||
|
||||
int hdmi_fb_init(void)
|
||||
{
|
||||
_hdmi.fb = (rt_uint8_t *)bcm271x_mbox_fb_alloc(LCD_WIDTH, LCD_HEIGHT, LCD_BPP, 1);
|
||||
if(_hdmi.fb == RT_NULL)
|
||||
{
|
||||
rt_kprintf("init dsi or hdmi err!\n");
|
||||
return 0;
|
||||
}
|
||||
bcm271x_mbox_fb_setoffset(0, 0);
|
||||
bcm271x_mbox_fb_set_porder(0);
|
||||
_hdmi.width = LCD_WIDTH;
|
||||
@@ -299,8 +312,9 @@ int hdmi_fb_init(void)
|
||||
_hdmi.pitch = 0;
|
||||
_hdmi.pixel_format = RTGRAPHIC_PIXEL_FORMAT_RGB888;
|
||||
|
||||
rt_memset(_hdmi.fb, 0, LCD_WIDTH*LCD_HEIGHT*(LCD_BPP/8));
|
||||
//rt_kprintf("_hdmi.fb is %p\n", _hdmi.fb);
|
||||
rt_hdmi_fb_device_init(&_hdmi, "lcd");
|
||||
rt_hdmi_fb_device_init(&_hdmi, "hdmi");
|
||||
|
||||
return 0;
|
||||
}
|
||||
File renamed without changes.
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,13 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2020, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2020-11-08 bigmagic first version
|
||||
*/
|
||||
#ifndef __DRV_ILI9486_H__
|
||||
#define __DRV_ILI9486_H__
|
||||
|
||||
#endif//ILI9486
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,59 @@
|
||||
|
||||
/*
|
||||
* Copyright (c) 2006-2020, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2020-11-09 bigmagic first version
|
||||
*/
|
||||
#ifndef __LCD_CONSOLE_H__
|
||||
#define __LCD_CONSOLE_H__
|
||||
|
||||
#include <rtthread.h>
|
||||
|
||||
#define RGB(r, g, b) ((((r))<<16) | (((g))<<8) | ((b)))
|
||||
#define COLOR_BLACK RGB(0, 0, 0)
|
||||
#define COLOR_GREEN RGB(0, 255, 0)
|
||||
#define COLOR_CYAN RGB(0, 255, 255)
|
||||
#define COLOR_RED RGB(255, 0, 0)
|
||||
#define COLOR_YELLOW RGB(255, 255, 0)
|
||||
#define COLOR_WHITE RGB(255, 255, 255)
|
||||
|
||||
#define CONSOLE_WHITE_32 COLOR_WHITE
|
||||
#define CONSOLE_BLACK_32 COLOR_BLACK
|
||||
#define CONSOLE_GREEN_32 COLOR_GREEN
|
||||
#define CONSOLE_CYAN_32 COLOR_CYAN
|
||||
#define CONSOLE_RED_32 COLOR_RED
|
||||
|
||||
|
||||
#define RGB16(r, g, b) ((((r))<<11) | (((g))<<5) | ((b)))
|
||||
#define CONSOLE_YELLOW_16 RGB16(0x1f,0x3f,0)
|
||||
#define CONSOLE_WHITE_16 RGB16(0x1f,0x3f,0x1f)
|
||||
#define CONSOLE_BLACK_16 RGB16(0,0,0)
|
||||
#define CONSOLE_GREEN_16 RGB16(0,0x3f,0)
|
||||
#define CONSOLE_CYAN_16 RGB16(0,0x3f,0x1f)
|
||||
#define CONSOLE_RED_16 RGB16(0x1f,0,0)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
rt_uint32_t width;
|
||||
rt_uint32_t height;
|
||||
rt_uint32_t vwidth;
|
||||
rt_uint32_t vheight;
|
||||
rt_uint32_t pitch;
|
||||
rt_uint32_t depth;
|
||||
rt_uint32_t fore;
|
||||
rt_uint32_t back;
|
||||
rt_uint32_t x;
|
||||
rt_uint32_t y;
|
||||
rt_uint32_t vaddr;
|
||||
rt_uint32_t paddr;
|
||||
rt_uint32_t size;
|
||||
} fb_t;
|
||||
|
||||
void fb_print(char *s);
|
||||
int lcd_console_init(void);
|
||||
|
||||
#endif//CONSOLE
|
||||
File diff suppressed because it is too large.
Load diff
@@ -52,6 +52,13 @@ static void dsi_touch_thread_entry(void *param)
|
||||
{
|
||||
static volatile uint32_t touchbuf;
|
||||
touchbuf = bcm271x_mbox_get_touch(); //0x0f436000
|
||||
|
||||
if(touchbuf == RT_NULL)
|
||||
{
|
||||
rt_kprintf("init dsi touch err!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
while (1)
|
||||
{
|
||||
struct touch_regs *regs = (struct touch_regs *)touchbuf;
|
||||
|
||||
@@ -94,6 +94,9 @@
|
||||
|
||||
#define RT_USING_DEVICE_IPC
|
||||
#define RT_PIPE_BUFSZ 512
|
||||
#define RT_USING_SYSTEM_WORKQUEUE
|
||||
#define RT_SYSTEM_WORKQUEUE_STACKSIZE 2048
|
||||
#define RT_SYSTEM_WORKQUEUE_PRIORITY 23
|
||||
#define RT_USING_SERIAL
|
||||
#define RT_SERIAL_USING_DMA
|
||||
#define RT_SERIAL_RB_BUFSZ 64
|
||||
@@ -106,6 +109,7 @@
|
||||
#define RT_MMCSD_MAX_PARTITION 16
|
||||
#define RT_USING_SPI
|
||||
#define RT_USING_WDT
|
||||
#define RT_USING_TOUCH
|
||||
|
||||
/* Using USB */
|
||||
|
||||
@@ -119,6 +123,12 @@
|
||||
|
||||
/* Socket abstraction layer */
|
||||
|
||||
#define RT_USING_SAL
|
||||
|
||||
/* protocol stack implement */
|
||||
|
||||
#define SAL_USING_LWIP
|
||||
#define SAL_USING_POSIX
|
||||
|
||||
/* Network interface device */
|
||||
|
||||
@@ -240,21 +250,25 @@
|
||||
#define BSP_USING_UART
|
||||
#define RT_USING_UART0
|
||||
#define RT_USING_UART3
|
||||
#define RT_USING_UART4
|
||||
#define RT_USING_UART5
|
||||
#define BSP_USING_GIC
|
||||
#define BSP_USING_GIC400
|
||||
#define BSP_USING_PIN
|
||||
#define BSP_USING_SPI
|
||||
#define BSP_USING_SPI0_BUS
|
||||
#define BSP_USING_SPI0_DEVICE0
|
||||
#define BSP_USING_SPI0_DEVICE1
|
||||
#define BSP_USING_CORETIMER
|
||||
#define BSP_USING_WDT
|
||||
#define BSP_USING_ETH
|
||||
#define BSP_USING_SDIO
|
||||
#define BSP_USING_SDIO0
|
||||
|
||||
/* Board Peripheral Drivers */
|
||||
|
||||
#define BSP_USING_HDMI
|
||||
#define BSP_USING_HDMI_DISPLAY
|
||||
#define BSP_USING_LCD
|
||||
#define BSP_USING_DSI_DISPLAY
|
||||
#define BSP_USING_TOUCH
|
||||
#define BSP_USING_DSI_TOUCH_DEV
|
||||
|
||||
#endif
|
||||
Reference in new issue
Block a user