Linux 下 LCD 屏CPU接口驱动方法
这个资料不好找!刚开个头,不断尝试中,耐心等待。
https://github.com/notro/fbtft/wiki/fbtft_device
上面这个地方基本上解决了我的问题,只是需要理解它。
我的Lcd是240 X 320的,8080接口, 16bit 数据位,RGB 565模式。驱动芯片是ST7789V,如果用SPI接口方式,或许方便一些,但是这里要用8080的CPU并行接口,除了16条数据线,还要接reset、cs、dc、wr、rd、led这些引脚。
1、新增 LCD 屏的设备定义
编辑 /linux/drivers/staging/fbtft/fbtft_device.c文件,增加对目标lcd的驱动定义。参考已有的代码,新增一个lcd定义,原有的长这样
{
.name = "itdb24",
.pdev = &(struct platform_device) {
.name = "fb_s6d1121",
.id = 0,
.dev = {
.release = fbtft_device_pdev_release,
.platform_data = &(struct fbtft_platform_data) {
.display = {
.buswidth = 8,
.backlight = 1,
},
.bgr = false,
.gpios = (const struct fbtft_gpio []) {
/* Wiring for LCD adapter kit */
{ "reset", 7 },
{ "dc", 0 }, /* rev 2: 2 */
{ "wr", 1 }, /* rev 2: 3 */
{ "cs", 8 },
{ "db00", 17 },
{ "db01", 18 },
{ "db02", 21 }, /* rev 2: 27 */
{ "db03", 22 },
{ "db04", 23 },
{ "db05", 24 },
{ "db06", 25 },
{ "db07", 4 },
{}
},
},
}
}
},
一些细节参数还没搞明白,新增加的大概这样
{
.name = "xcre24", /*我的2.4“ TFT , 240 X 320 彩屏,定义一个名字*/
.pdev = &(struct platform_device) {
.name = "fb_st7789v",
/*这个名字是驱动的name,#define DRVNAME "fb_st7789v",必须已经存在*/
/*也就是说linux已经有支持这个设备,或者你自己写好驱动了*/
/*屏幕参数已经在fb_st7789v.C中定义好了*/
.id = 0,
.dev = {
.release = fbtft_device_pdev_release,
.platform_data = &(struct fbtft_platform_data) {
.display = {
.buswidth = 16, /*数据位宽度*/
.backlight = 1,
},
.bgr = false,
.gpios = (const struct fbtft_gpio []) {
/* Wiring for LCD adapter kit */
/* 这里根据实际电路图修改 */
{ "reset", 7 },
{ "dc", 0 }, /* rev 2: 2 */
{ "wr", 1 }, /* rev 2: 3 */
{ "cs", 8 },
{ "db00", 17 },
{ "db01", 18 },
{ "db02", 21 }, /* rev 2: 27 */
{ "db03", 22 },
{ "db04", 23 },
{ "db05", 24 },
{ "db06", 25 },
{ "db07", 4 },
{}
},
},
}
}
},
2 、下一步?
还不知道怎么弄