SPRD芯片安卓平台屏幕调试笔记
本文档以展锐平台SC9863A1为基础,屏幕以FT8057S为基础,点亮屏幕示例
本文档以展锐平台SC9863A1为基础,屏幕以FT8057S为基础。
一、原理图

以上图纸主要关注:reset引脚对应的GPIO
以上图纸关注:偏压IC型号、I2C接口、avdd&dvdd使用的GPIO口
以上图纸关注:IC型号、flash_en的GPIO、PWM控制是由GPIO还是由CABC
二、LCD信号要求

LCD信号要求参考《FT8057S_Data_Sheet_V0.1 .pdf》中的4.1节。
主要关注:avdd、avee、vddi的电压要求,芯片的mipi line数,以及其他特殊要求。
三、GPIO口配置
3.1使用工具配置初始化

使用以上工具设置GPIO,主要配置:gpio属性
根据以上原理图可知需要配置以下IO
AVDD:RFCTL16(GPIO7)
AVEE:U0CTS(GPIO62)
LCM_RESET:LCM_RSTN(GPIO50)
TP_RESET:EXTINT1(GPIO145) (TP的reset在incell屏幕中,会影响屏幕点亮,故也需要配置)I2C4:SIMCLK2(SCL4),SIMDAT2(SDA4) :默认已经设置
FLASH_EN:GPIO32
{REG_PIN_U0CTS, BITS_PIN_AF(3)},
{REG_MISC_PIN_U0CTS, BITS_PIN_DS(1)|BIT_PIN_NULL|BIT_PIN_NUL|BIT_PIN_SLP_AP|BIT_PIN_SLP_WPD|BIT_PIN_SLP_OE},//LCM_AVEE
...
{REG_PIN_GPIO32, BITS_PIN_AF(3)},
{REG_MISC_PIN_GPIO32, BITS_PIN_DS(1)|BIT_PIN_NULL|BIT_PIN_NUL|BIT_PIN_SLP_AP|BIT_PIN_SLP_NUL|BIT_PIN_SLP_OE},//LCM_BL_EN
...
{REG_PIN_RFCTL16, BITS_PIN_AF(3)},
{REG_MISC_PIN_RFCTL16, BITS_PIN_DS(1)|BIT_PIN_NULL|BIT_PIN_NUL|BIT_PIN_SLP_AP|BIT_PIN_SLP_WPD|BIT_PIN_SLP_OE},//LCM_AVDD
3.2将IO口信息配置到代码中
该项目通过原理图识别为使用屏幕的CABC控制背光
修改以下文件:bsp\bootloader\lk\project\sp9863a_1h10.mk
CONFIG_LCM_GPIO_RSTN=50 \
CONFIG_LCM_GPIO_AVDDEN=7 \
CONFIG_LCM_GPIO_AVEEEN=62 \
CONFIG_LCM_GPIO_TP_RESET=145 \
LCD_I2C_BUS_NUM=4 \
LCD_I2C_SLAVER_ADDR=0X3E
修改以下文件:bsp\kernel5.15\kernel5.15\arch\arm64\boot\dts\sprd\sp9863a-1h10-overlay.dts
&dpu {
//sprd,backlight = <&pwm_backlight>;
};
&panel {
//sprd,backlight = <&pwm_backlight>;
avdd-gpio = <&ap_gpio 7 GPIO_ACTIVE_HIGH>;
avee-gpio = <&ap_gpio 62 GPIO_ACTIVE_HIGH>;
reset-gpio = <&ap_gpio 50 GPIO_ACTIVE_HIGH>;
};
四、初始化时序
屏幕上电时序参考《FT8057S_Data_Sheet_V0.1 .pdf》中的4.2.1.4节
根据以上信息我们可以修改init文件内的.power函数为
static int esky_ft8057s_vdo_hdp_boe_hy_power(int on)
{
int i, ret = 0;
u8 bias_config[7][2] = {{0x61, 0x2C}, {0x44, 0x96}, {0x61, 0x00},{0x00, 0x14},{0x01, 0x14},{0x03, 0x43},{0xff, 0x80}};
if (on) {
for (i = 0; i < sizeof(bias_config)/sizeof(bias_config[0]); i++) {
ret = i2c_send(LCD_I2C_BUS_NUM, LCD_I2C_SLAVER_ADDR, (unsigned char *)bias_config[i], ARRAY_SIZE(bias_config[i]));
if (ret < 0) {
pr_err("config lcd i2c bias power failed\n");
break;
}
}
sprd_gpio_request(CONFIG_LCM_GPIO_RSTN);
sprd_gpio_direction_output(CONFIG_LCM_GPIO_RSTN, 0);
#ifdef CONFIG_LCM_GPIO_TP_RESET
sprd_gpio_request(CONFIG_LCM_GPIO_TP_RESET);
sprd_gpio_direction_output(CONFIG_LCM_GPIO_TP_RESET, 1);
mdelay(5);
#endif
#ifdef CONFIG_LCM_GPIO_AVDDEN
sprd_gpio_request(CONFIG_LCM_GPIO_AVDDEN);
sprd_gpio_direction_output(CONFIG_LCM_GPIO_AVDDEN, 1);
mdelay(2);
#endif
#ifdef CONFIG_LCM_GPIO_AVEEEN
sprd_gpio_request(CONFIG_LCM_GPIO_AVEEEN);
sprd_gpio_direction_output(CONFIG_LCM_GPIO_AVEEEN, 1);
mdelay(2);
#endif
sprd_gpio_request(CONFIG_LCM_GPIO_RSTN);
sprd_gpio_direction_output(CONFIG_LCM_GPIO_RSTN, 1);
mdelay(5);
sprd_gpio_direction_output(CONFIG_LCM_GPIO_RSTN, 0);
mdelay(10);
sprd_gpio_direction_output(CONFIG_LCM_GPIO_RSTN, 1);
mdelay(20);
pr_err("ft8057s power no\n");
} else {
sprd_gpio_direction_output(CONFIG_LCM_GPIO_RSTN, 0);
mdelay(5);
}
return 0;
}
以上代码中,先使用I2C设置偏压IC的偏压电压,然后在将reset引脚设置为低电平,TPreset设置为高电平,设置avdd上电延时后设置avee上电,最后在设置reset高低高。
五、修改代码
5.1 设置mipi时序
在原厂给的代码中一般会给一个mipi的proch时序如下图,其中需要重点关注的信息有
VFP
VBP
HFP
HBP
HSYNC
VSYNC
line number(有的没有直接给出,需要向fae询问)
一般我们将上图给的推介时序填入《unisoc lcd(mipi) fps-phy_feq计算_c_v1.05.xlsm》文档中会生成一个适合芯片的时序如下:
从以上参数可以看出,计算的帧率不能满足60fps故我们需要将以上文档发给FAE或者直接与FAE沟通修改proch参数达到要求(点亮时可以先不要求proch参数)
将以上结果填入init文件
bsp\bootloader\lk\platform\sprd_shared\driver\video\sprd\lcd\lcd_ft8057s_ztd_mipi_hd.c
static struct panel_info lcd_ft8057s_mipi_hd_info = {
/* common parameters */
.lcd_name = "lcd_ft8057s_mipi_hd",
.type = SPRD_PANEL_TYPE_MIPI,
.bpp = 24,
// .fps = 60,
.width = 720,
.height = 1612,
/* DPI specific parameters */
.pixel_clk = 96000000, /*Hz*/
.rgb_timing = {
.hfp = 26,
.hbp = 14,
.hsync = 4,
.vfp = 445,
.vbp = 28,
.vsync = 6,
},
/* MIPI DSI specific parameters */
.phy_freq = 691000,
.lane_num = 4,
.work_mode = SPRD_MIPI_MODE_VIDEO,
.burst_mode = PANEL_VIDEO_BURST_MODE,
.bl_type = BL_TYPE_MIPI,
.bl_config_bit = 12,
.nc_clk_en = false,
};
5.2 设置init code
在通常的mipi屏幕,都需要下init code,以初始化屏幕的各种参数,通常fae会给类似以下文件的参数
23 00 00 02 00 00
39 00 00 04 FF 80 57 01
00 80
FF 80 57
00 00
2A 00 00 02 CF
00 00
2B 00 00 06 4B
00 A3
B3 06 4C 00 18
00 93
C5 75
00 97
C5 75
00 9A
C5 C1
00 9C
C5 41
00 B6
C5 61 61
00 B8
C5 37 37
00 00
D8 33 33
00 00
D9 00 F5
00 07
D9 00 F5 F5 F5
00 82
C5 55
00 83
C5 07
00 96
f5 0d
00 86
f5 0d
00 94
C5 25
00 9B
C5 51
00 A3
A5 04
00 99
CF 56
00 86
B7 80
00 A5
B0 1D
00 90
FF 00
00 00
E1 0C 10 1A 26 2D 36 44 52 53 60 64 7B 86 70 6F 62
00 10
E1 59 4D 3D 33 2B 1D 13 12
00 00
E2 0C 0F 1A 26 2D 36 44 52 53 60 64 7B 86 70 6F 62
00 10
E2 59 4D 3D 33 2B 1D 13 12
00 80
C0 00 D2 00 2E 00 1C
00 90
C0 00 7F 00 2E 00 1C
00 A0
C0 00 D2 00 2E 00 1C
00 B0
C0 01 0F 00 2E 1C
00 C1
C0 01 33 01 0A 00 CD 01 8F
00 70
C0 00 7F 00 2E 00 1C
00 A3
C1 00 33 00 3C 00 02
00 B7
C1 00 33
00 73
CE 09 09
00 80
CE 01 81 09 09 00 78 00 96 00 78 00 96 00 78 00 96
00 90
CE 00 A5 16 8F 00 A5 80 09 09 00 07 D0 16 16 17
00 A0
CE 20 00 00
00 B0
CE 87 00 00
00 D1
CE 00 00 01 00 00 00 00
00 E1
CE 08 03 C3 03 C3 02 B0 00 00 00 00
00 F1
CE 14 14 1E 01 52 01 52 01 53
00 B0
CF 00 00 6D 71
00 B5
CF 03 03 5B 5F
00 C0
CF 06 06 47 4B
00 C5
CF 06 06 4B 4F
00 60
CF 00 00 6D 71 03 03 5B 5F
00 70
CF 00 00 65 69 03 03 53 57
00 AA
CF 80 80 1C 18
00 D1
C1 03 AA 05 22 09 59 05 87 08 23 0F AC
00 E1
C1 05 22
00 E2
CF 06 DE 06 DD 06 DD 06 DD 06 DD 06 DD
00 80
C1 22 22
00 90
C1 02
00 F5
CF 00
00 F6
CF 5A
00 F1
CF 5A
00 F7
CF 71
00 00
1F 78 78
00 D1
CE 00 0A 01 01 00 A4 01
00 E8
CE 00 A4 00 A4
00 80
CC 26 26 1C 1C 26 26 1D 26 26 26 1D 07 09 0B 0D 0F
00 90
CC 11 25 05 03 00 00 00 00
00 80
CD 26 26 1C 1C 26 26 1D 26 26 26 1D 06 08 0A 0C 0E
00 90
CD 10 01 04 02 00 00 00 00
00 80
CB C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1
00 ED
CB C1
00 90
CB 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 EE
CB 00
00 90
C3 00
00 A0
CB 00 00 00 00 00 00 00 00
00 B0
CB 55 55 55 55
00 C0
CB 55 55 55 55
00 D2
CB 83 00 83 83 00 83 83 00 83 83 00
00 E0
CB 83 83 00 83 83 00 83 83 00 83 83 00 83
00 FA
CB 83 00
00 EF
CB 00
00 68
C2 8E 05 8E C4
00 6C
C2 8D 05 8E C4
00 70
C2 8C 05 8E C4
00 74
C2 8B 05 8E C4
00 8C
C2 8D 05 38 8E C4
00 91
C2 8C 06 38 8E C4
00 96
C2 8B 07 38 8E C4
00 9B
C2 8A 08 38 8E C4
00 A0
C2 89 09 38 8E C4
00 A5
C2 88 0A 38 8E C4
00 AA
C2 87 0B 38 8E C4
00 AF
C2 86 0C 38 8E C4
00 B4
C2 85 0D 38 8E C4
00 B9
C2 84 0E 38 8E C4
00 BE
C2 83 0F 38 8E C4
00 C3
C2 82 10 38 8E C4
00 dc
C2 bb bb bb bb bb bb 00 00
00 EA
C2 0B 00 0A 04 8E C4
00 60
C2 8B 00 09 03 8E C4
00 FC
CB 08 40
00 FB
C3 8F 14 8F 14
00 98
C4 08
00 91
E9 FF FF FF 00
00 85
C4 80
00 86
A4 B6
00 95
C4 80
00 CA
C0 90 11
00 B7
F5 1D
00 90
C3 00
00 B1
F5 11
00 B0
C5 00
00 B3
C5 00
00 B2
C5 0D
00 B5
C5 02
00 C2
F5 42
00 80
CE 00
00 D0
CE 01
00 E0
CE 00
00 A1
C1 CC
00 A6
C1 10
00 71
C0 C7 01 2B 00 22
00 00
FF 00 00 00
00 80
FF 00 00
00 86
C3 FF F0 00
00 81
A4 73
//----------------------LCD initial code End----------------------//
//SLPOUT and DISPON
11
delayms_pc(120
29
35 00
delayms_pc(300
以上文件需要转换为dsi_cmd_desc结构体形式(参考文档《103188__Kernel 5.15 LCD配置指导手册V1.4.pdf》)
并将修改后的参数写入(static uint8_t init_data[])数组内,完整代码如下(由于init代码经过多次修改,故可能init代码可能有差异)
/*
* Copyright (C) 2018 Spreadtrum Communications Inc.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <gpio.h>
#include "../sprd_panel.h"
#include "../sprd_dsi.h"
#include "../dsi/mipi_dsi_api.h"
#include "../sprd_dphy.h"
#include "gpio_plus.h"
#include <i2c.h>
#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
static uint8_t init_data[] = {
0x23,0x00,0x00,0x02,0x00,0x00,
0x39,0x00,0x00,0x04,0xFF,0x80,0x57,0x01,
0x23,0x00,0x00,0x02,0x00,0x80,
0x39,0x00,0x00,0x03,0xFF,0x80,0x57,
0x23,0x00,0x00,0x02,0x00,0x00,
0x39,0x00,0x00,0x05,0x2A,0x00,0x00,0x02,0xCF,
0x23,0x00,0x00,0x02,0x00,0x00,
0x39,0x00,0x00,0x05,0x2B,0x00,0x00,0x06,0x4B,
0x23,0x00,0x00,0x02,0x00,0xA3,
0x39,0x00,0x00,0x05,0xB3,0x06,0x4C,0x00,0x18,
0x23,0x00,0x00,0x02,0x00,0x93,
0x23,0x00,0x00,0x02,0xC5,0x75,
0x23,0x00,0x00,0x02,0x00,0x97,
0x23,0x00,0x00,0x02,0xC5,0x75,
0x23,0x00,0x00,0x02,0x00,0x9A,
0x23,0x00,0x00,0x02,0xC5,0xC1,
0x23,0x00,0x00,0x02,0x00,0x9C,
0x23,0x00,0x00,0x02,0xC5,0x41,
0x23,0x00,0x00,0x02,0x00,0xB6,
0x39,0x00,0x00,0x03,0xC5,0x61,0x61,
0x23,0x00,0x00,0x02,0x00,0xB8,
0x39,0x00,0x00,0x03,0xC5,0x37,0x37,
0x23,0x00,0x00,0x02,0x00,0x00,
0x39,0x00,0x00,0x03,0xD8,0x33,0x33,
0x23,0x00,0x00,0x02,0x00,0x82,
0x23,0x00,0x00,0x02,0xC5,0x55,
0x23,0x00,0x00,0x02,0x00,0x83,
0x23,0x00,0x00,0x02,0xC5,0x07,
0x23,0x00,0x00,0x02,0x00,0x96,
0x23,0x00,0x00,0x02,0xf5,0x0d,
0x23,0x00,0x00,0x02,0x00,0x86,
0x23,0x00,0x00,0x02,0xf5,0x0d,
0x23,0x00,0x00,0x02,0x00,0x94,
0x23,0x00,0x00,0x02,0xC5,0x25,
0x23,0x00,0x00,0x02,0x00,0x9B,
0x23,0x00,0x00,0x02,0xC5,0x51,
0x23,0x00,0x00,0x02,0x00,0xA3,
0x23,0x00,0x00,0x02,0xA5,0x04,
0x23,0x00,0x00,0x02,0x00,0x99,
0x23,0x00,0x00,0x02,0xCF,0x56,
0x23,0x00,0x00,0x02,0x00,0x86,
0x23,0x00,0x00,0x02,0xB7,0x80,
0x23,0x00,0x00,0x02,0x00,0xA5,
0x23,0x00,0x00,0x02,0xB0,0x1D,
0x23,0x00,0x00,0x02,0x00,0x90,
0x23,0x00,0x00,0x02,0xFF,0x00,
0x23,0x00,0x00,0x02,0x00,0x00,
0x39,0x00,0x00,0x11,0xE1,0x0C,0x10,0x1A,0x26,0x2D,0x36,0x44,0x52,0x53,0x60,0x64,0x7B,0x86,0x70,0x6F,0x62,
0x23,0x00,0x00,0x02,0x00,0x10,
0x39,0x00,0x00,0x09,0xE1,0x59,0x4D,0x3D,0x33,0x2B,0x1D,0x13,0x12,
0x23,0x00,0x00,0x02,0x00,0x00,
0x39,0x00,0x00,0x11,0xE2,0x0C,0x0F,0x1A,0x26,0x2D,0x36,0x44,0x52,0x53,0x60,0x64,0x7B,0x86,0x70,0x6F,0x62,
0x23,0x00,0x00,0x02,0x00,0x10,
0x39,0x00,0x00,0x09,0xE2,0x59,0x4D,0x3D,0x33,0x2B,0x1D,0x13,0x12,
0x23,0x00,0x00,0x02,0x00,0x80,
0x39,0x00,0x00,0x07,0xC0,0x00,0xD2,0x00,0x2E,0x00,0x1C,
0x23,0x00,0x00,0x02,0x00,0x90,
0x39,0x00,0x00,0x07,0xC0,0x00,0x7F,0x00,0x2E,0x00,0x1C,
0x23,0x00,0x00,0x02,0x00,0xA0,
0x39,0x00,0x00,0x07,0xC0,0x00,0xD2,0x00,0x2E,0x00,0x1C,
0x23,0x00,0x00,0x02,0x00,0xB0,
0x39,0x00,0x00,0x06,0xC0,0x01,0x0F,0x00,0x2E,0x1C,
0x23,0x00,0x00,0x02,0x00,0xC1,
0x39,0x00,0x00,0x09,0xC0,0x01,0x33,0x01,0x0A,0x00,0xCD,0x01,0x8F,
0x23,0x00,0x00,0x02,0x00,0x70,
0x39,0x00,0x00,0x07,0xC0,0x00,0x7F,0x00,0x2E,0x00,0x1C,
0x23,0x00,0x00,0x02,0x00,0xA3,
0x39,0x00,0x00,0x07,0xC1,0x00,0x33,0x00,0x3C,0x00,0x02,
0x23,0x00,0x00,0x02,0x00,0xB7,
0x39,0x00,0x00,0x03,0xC1,0x00,0x33,
0x23,0x00,0x00,0x02,0x00,0x73,
0x39,0x00,0x00,0x03,0xCE,0x09,0x09,
0x23,0x00,0x00,0x02,0x00,0x80,
0x39,0x00,0x00,0x11,0xCE,0x01,0x81,0x09,0x09,0x00,0x78,0x00,0x96,0x00,0x78,0x00,0x96,0x00,0x78,0x00,0x96,
0x23,0x00,0x00,0x02,0x00,0x90,
0x39,0x00,0x00,0x10,0xCE,0x00,0xA5,0x16,0x8F,0x00,0xA5,0x80,0x09,0x09,0x00,0x07,0xD0,0x16,0x16,0x17,
0x23,0x00,0x00,0x02,0x00,0xA0,
0x39,0x00,0x00,0x04,0xCE,0x20,0x00,0x00,
0x23,0x00,0x00,0x02,0x00,0xB0,
0x39,0x00,0x00,0x04,0xCE,0x87,0x00,0x00,
0x23,0x00,0x00,0x02,0x00,0xD1,
0x39,0x00,0x00,0x08,0xCE,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x23,0x00,0x00,0x02,0x00,0xE1,
0x39,0x00,0x00,0x0C,0xCE,0x08,0x03,0xC3,0x03,0xC3,0x02,0xB0,0x00,0x00,0x00,0x00,
0x23,0x00,0x00,0x02,0x00,0xF1,
0x39,0x00,0x00,0x0A,0xCE,0x14,0x14,0x1E,0x01,0x52,0x01,0x52,0x01,0x53,
0x23,0x00,0x00,0x02,0x00,0xB0,
0x39,0x00,0x00,0x05,0xCF,0x00,0x00,0x6D,0x71,
0x23,0x00,0x00,0x02,0x00,0xB5,
0x39,0x00,0x00,0x05,0xCF,0x03,0x03,0x5B,0x5F,
0x23,0x00,0x00,0x02,0x00,0xC0,
0x39,0x00,0x00,0x05,0xCF,0x06,0x06,0x47,0x4B,
0x23,0x00,0x00,0x02,0x00,0xC5,
0x39,0x00,0x00,0x05,0xCF,0x06,0x06,0x4B,0x4F,
0x23,0x00,0x00,0x02,0x00,0x60,
0x39,0x00,0x00,0x09,0xCF,0x00,0x00,0x6D,0x71,0x03,0x03,0x5B,0x5F,
0x23,0x00,0x00,0x02,0x00,0x70,
0x39,0x00,0x00,0x09,0xCF,0x00,0x00,0x65,0x69,0x03,0x03,0x53,0x57,
0x23,0x00,0x00,0x02,0x00,0xAA,
0x39,0x00,0x00,0x05,0xCF,0x80,0x80,0x1C,0x18,
0x23,0x00,0x00,0x02,0x00,0xD1,
0x39,0x00,0x00,0x0D,0xC1,0x03,0xAA,0x05,0x22,0x09,0x59,0x05,0x87,0x08,0x23,0x0F,0xAC,
0x23,0x00,0x00,0x02,0x00,0xE1,
0x39,0x00,0x00,0x03,0xC1,0x05,0x22,
0x23,0x00,0x00,0x02,0x00,0xE2,
0x39,0x00,0x00,0x0D,0xCF,0x06,0xDE,0x06,0xDD,0x06,0xDD,0x06,0xDD,0x06,0xDD,0x06,0xDD,
0x23,0x00,0x00,0x02,0x00,0x80,
0x39,0x00,0x00,0x03,0xC1,0x22,0x22,
0x23,0x00,0x00,0x02,0x00,0x90,
0x23,0x00,0x00,0x02,0xC1,0x02,
0x23,0x00,0x00,0x02,0x00,0xF5,
0x23,0x00,0x00,0x02,0xCF,0x00,
0x23,0x00,0x00,0x02,0x00,0xF6,
0x23,0x00,0x00,0x02,0xCF,0x5A,
0x23,0x00,0x00,0x02,0x00,0xF1,
0x23,0x00,0x00,0x02,0xCF,0x5A,
0x23,0x00,0x00,0x02,0x00,0xF7,
0x23,0x00,0x00,0x02,0xCF,0x71,
0x23,0x00,0x00,0x02,0x00,0x00,
0x39,0x00,0x00,0x03,0x1f,0x3c,0x3c,
0x23,0x00,0x00,0x02,0x00,0xD1,
0x39,0x00,0x00,0x08,0xCE,0x00,0x0A,0x01,0x01,0x00,0xA4,0x01,
0x23,0x00,0x00,0x02,0x00,0xE8,
0x39,0x00,0x00,0x05,0xCE,0x00,0xA4,0x00,0xA4,
0x23,0x00,0x00,0x02,0x00,0x80,
0x39,0x00,0x00,0x11,0xCC,0x26,0x26,0x1C,0x1C,0x26,0x26,0x1D,0x26,0x26,0x26,0x1D,0x07,0x09,0x0B,0x0D,0x0F,
0x23,0x00,0x00,0x02,0x00,0x90,
0x39,0x00,0x00,0x09,0xCC,0x11,0x25,0x05,0x03,0x00,0x00,0x00,0x00,
0x23,0x00,0x00,0x02,0x00,0x80,
0x39,0x00,0x00,0x11,0xCD,0x26,0x26,0x1C,0x1C,0x26,0x26,0x1D,0x26,0x26,0x26,0x1D,0x06,0x08,0x0A,0x0C,0x0E,
0x23,0x00,0x00,0x02,0x00,0x90,
0x39,0x00,0x00,0x09,0xCD,0x10,0x01,0x04,0x02,0x00,0x00,0x00,0x00,
0x23,0x00,0x00,0x02,0x00,0x80,
0x39,0x00,0x00,0x11,0xCB,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,
0x23,0x00,0x00,0x02,0x00,0xED,
0x23,0x00,0x00,0x02,0xCB,0xC1,
0x23,0x00,0x00,0x02,0x00,0x90,
0x39,0x00,0x00,0x11,0xCB,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x23,0x00,0x00,0x02,0x00,0xEE,
0x23,0x00,0x00,0x02,0xCB,0x00,
0x23,0x00,0x00,0x02,0x00,0x90,
0x23,0x00,0x00,0x02,0xC3,0x00,
0x23,0x00,0x00,0x02,0x00,0xA0,
0x39,0x00,0x00,0x09,0xCB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x23,0x00,0x00,0x02,0x00,0xB0,
0x39,0x00,0x00,0x05,0xCB,0x55,0x55,0x55,0x55,
0x23,0x00,0x00,0x02,0x00,0xC0,
0x39,0x00,0x00,0x05,0xCB,0x55,0x55,0x55,0x55,
0x23,0x00,0x00,0x02,0x00,0xD2,
0x39,0x00,0x00,0x0C,0xCB,0x83,0x00,0x83,0x83,0x00,0x83,0x83,0x00,0x83,0x83,0x00,
0x23,0x00,0x00,0x02,0x00,0xE0,
0x39,0x00,0x00,0x0E,0xCB,0x83,0x83,0x00,0x83,0x83,0x00,0x83,0x83,0x00,0x83,0x83,0x00,0x83,
0x23,0x00,0x00,0x02,0x00,0xFA,
0x39,0x00,0x00,0x03,0xCB,0x83,0x00,
0x23,0x00,0x00,0x02,0x00,0xEF,
0x23,0x00,0x00,0x02,0xCB,0x00,
0x23,0x00,0x00,0x02,0x00,0x68,
0x39,0x00,0x00,0x05,0xC2,0x8E,0x05,0x8E,0xC4,
0x23,0x00,0x00,0x02,0x00,0x6C,
0x39,0x00,0x00,0x05,0xC2,0x8D,0x05,0x8E,0xC4,
0x23,0x00,0x00,0x02,0x00,0x70,
0x39,0x00,0x00,0x05,0xC2,0x8C,0x05,0x8E,0xC4,
0x23,0x00,0x00,0x02,0x00,0x74,
0x39,0x00,0x00,0x05,0xC2,0x8B,0x05,0x8E,0xC4,
0x23,0x00,0x00,0x02,0x00,0x8C,
0x39,0x00,0x00,0x06,0xC2,0x8D,0x05,0x38,0x8E,0xC4,
0x23,0x00,0x00,0x02,0x00,0x91,
0x39,0x00,0x00,0x06,0xC2,0x8C,0x06,0x38,0x8E,0xC4,
0x23,0x00,0x00,0x02,0x00,0x96,
0x39,0x00,0x00,0x06,0xC2,0x8B,0x07,0x38,0x8E,0xC4,
0x23,0x00,0x00,0x02,0x00,0x9B,
0x39,0x00,0x00,0x06,0xC2,0x8A,0x08,0x38,0x8E,0xC4,
0x23,0x00,0x00,0x02,0x00,0xA0,
0x39,0x00,0x00,0x06,0xC2,0x89,0x09,0x38,0x8E,0xC4,
0x23,0x00,0x00,0x02,0x00,0xA5,
0x39,0x00,0x00,0x06,0xC2,0x88,0x0A,0x38,0x8E,0xC4,
0x23,0x00,0x00,0x02,0x00,0xAA,
0x39,0x00,0x00,0x06,0xC2,0x87,0x0B,0x38,0x8E,0xC4,
0x23,0x00,0x00,0x02,0x00,0xAF,
0x39,0x00,0x00,0x06,0xC2,0x86,0x0C,0x38,0x8E,0xC4,
0x23,0x00,0x00,0x02,0x00,0xB4,
0x39,0x00,0x00,0x06,0xC2,0x85,0x0D,0x38,0x8E,0xC4,
0x23,0x00,0x00,0x02,0x00,0xB9,
0x39,0x00,0x00,0x06,0xC2,0x84,0x0E,0x38,0x8E,0xC4,
0x23,0x00,0x00,0x02,0x00,0xBE,
0x39,0x00,0x00,0x06,0xC2,0x83,0x0F,0x38,0x8E,0xC4,
0x23,0x00,0x00,0x02,0x00,0xC3,
0x39,0x00,0x00,0x06,0xC2,0x82,0x10,0x38,0x8E,0xC4,
0x23,0x00,0x00,0x02,0x00,0xdc,
0x39,0x00,0x00,0x09,0xC2,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0x00,0x00,
0x23,0x00,0x00,0x02,0x00,0x86,
0x39,0x00,0x00,0x04,0xC3,0xFF,0xF0,0x00,
0x23,0x00,0x00,0x02,0x00,0xEA,
0x39,0x00,0x00,0x07,0xC2,0x0B,0x00,0x0A,0x04,0x8E,0xC4,
0x23,0x00,0x00,0x02,0x00,0x60,
0x39,0x00,0x00,0x07,0xC2,0x8B,0x00,0x09,0x03,0x8E,0xC4,
0x23,0x00,0x00,0x02,0x00,0xFC,
0x39,0x00,0x00,0x03,0xCB,0x08,0x40,
0x23,0x00,0x00,0x02,0x00,0xFB,
0x39,0x00,0x00,0x05,0xC3,0x8F,0x14,0x8F,0x14,
0x23,0x00,0x00,0x02,0x00,0x98,
0x23,0x00,0x00,0x02,0xC4,0x08,
0x23,0x00,0x00,0x02,0x00,0x91,
0x39,0x00,0x00,0x05,0xE9,0xFF,0xFF,0xFF,0x00,
0x23,0x00,0x00,0x02,0x00,0x85,
0x23,0x00,0x00,0x02,0xC4,0x80,
0x23,0x00,0x00,0x02,0x00,0x81,
0x23,0x00,0x00,0x02,0xA4,0x73,
0x23,0x00,0x00,0x02,0x00,0x86,
0x23,0x00,0x00,0x02,0xA4,0xB6,
0x23,0x00,0x00,0x02,0x00,0x95,
0x23,0x00,0x00,0x02,0xC4,0x80,
0x23,0x00,0x00,0x02,0x00,0xCA,
0x39,0x00,0x00,0x03,0xC0,0x90,0x11,
0x23,0x00,0x00,0x02,0x00,0xB7,
0x23,0x00,0x00,0x02,0xF5,0x1D,
0x23,0x00,0x00,0x02,0x00,0x90,
0x23,0x00,0x00,0x02,0xC3,0x00,
0x23,0x00,0x00,0x02,0x00,0xB1,
0x23,0x00,0x00,0x02,0xF5,0x11,
0x23,0x00,0x00,0x02,0x00,0xB0,
0x23,0x00,0x00,0x02,0xC5,0x00,
0x23,0x00,0x00,0x02,0x00,0xB3,
0x23,0x00,0x00,0x02,0xC5,0x00,
0x23,0x00,0x00,0x02,0x00,0xB2,
0x23,0x00,0x00,0x02,0xC5,0x0D,
0x23,0x00,0x00,0x02,0x00,0xB5,
0x23,0x00,0x00,0x02,0xC5,0x02,
0x23,0x00,0x00,0x02,0x00,0xC2,
0x23,0x00,0x00,0x02,0xF5,0x42,
0x23,0x00,0x00,0x02,0x00,0x80,
0x23,0x00,0x00,0x02,0xCE,0x00,
0x23,0x00,0x00,0x02,0x00,0xD0,
0x23,0x00,0x00,0x02,0xCE,0x01,
0x23,0x00,0x00,0x02,0x00,0xE0,
0x23,0x00,0x00,0x02,0xCE,0x00,
0x23,0x00,0x00,0x02,0x00,0xA1,
0x23,0x00,0x00,0x02,0xC1,0xCC,
0x23,0x00,0x00,0x02,0x00,0xA6,
0x23,0x00,0x00,0x02,0xC1,0x10,
0x23,0x00,0x00,0x02,0x00,0x71,
0x39,0x00,0x00,0x06,0xC0,0xC7,0x01,0x2B,0x00,0x22,
0x23,0x00,0x00,0x02,0x00,0x00,
0x39,0x00,0x00,0x04,0xFF,0x00,0x00,0x00,
0x23,0x00,0x00,0x02,0x00,0x80,
0x39,0x00,0x00,0x03,0xFF,0x00,0x00,
0x23,0x00,0x00,0x02,0x51,0x00,
0x23,0x00,0x00,0x02,0x53,0x24,
0x23,0x78,0x00,0x02,0x35,0x00,
0x23,0x78,0x00,0x02,0x11,0x00,
0x23,0x0A,0x00,0x02,0x29,0x00,
CMD_END
};
static int mipi_dsi_send_cmds(struct sprd_dsi *dsi, void *data)
{
uint16_t len;
struct dsi_cmd_desc *cmds = data;
if ((cmds == NULL) || (dsi == NULL))
return -1;
for (; cmds->data_type != CMD_END;) {
len = (cmds->wc_h << 8) | cmds->wc_l;
mipi_dsi_gen_write(dsi, cmds->payload, len);
if (cmds->wait)
msleep(cmds->wait);
cmds = (struct dsi_cmd_desc *)(cmds->payload + len);
}
return 0;
}
static int lcd_ft8057s_mipi_hd_init(void)
{
struct sprd_dsi *dsi = &dsi_device;
struct sprd_dphy *dphy = &dphy_device;
pr_err("ft8057s init\n");
mipi_dsi_lp_cmd_enable(dsi, true);
mipi_dsi_send_cmds(dsi, init_data);
mipi_dsi_set_work_mode(dsi, SPRD_MIPI_MODE_VIDEO);
mipi_dsi_state_reset(dsi);
mipi_dphy_hs_clk_en(dphy, true);
return 0;
}
static int lcd_ft8057s_mipi_hd_readid(struct panel_info *info)
{
struct sprd_dsi *dsi = &dsi_device;
uint8_t read_buf[4] = {0};
mipi_dsi_lp_cmd_enable(dsi, true);
mipi_dsi_set_max_return_size(dsi, 1);
mipi_dsi_dcs_read(dsi, 0xda, read_buf, 1);
pr_err("ft8057s read id: 0x%x 0x%x\n",read_buf[0],read_buf[1]);
//修改VSP 0x00 VSN 0x01 为 5.8V
if(read_buf[0] ==0x40 || read_buf[0] ==0x82)
{
return 0;
}
return -1;
}
static int esky_ft8057s_vdo_hdp_boe_hy_power(int on)
{
int i, ret = 0;
u8 bias_config[7][2] = {{0x61, 0x2C}, {0x44, 0x96}, {0x61, 0x00},{0x00, 0x14},{0x01, 0x14},{0x03, 0x43},{0xff, 0x80}};
if (on) {
for (i = 0; i < sizeof(bias_config)/sizeof(bias_config[0]); i++) {
ret = i2c_send(LCD_I2C_BUS_NUM, LCD_I2C_SLAVER_ADDR, (unsigned char *)bias_config[i], ARRAY_SIZE(bias_config[i]));
if (ret < 0) {
pr_err("config lcd i2c bias power failed\n");
break;
}
}
sprd_gpio_request(CONFIG_LCM_GPIO_RSTN);
sprd_gpio_direction_output(CONFIG_LCM_GPIO_RSTN, 0);
#ifdef CONFIG_LCM_GPIO_TP_RESET
sprd_gpio_request(CONFIG_LCM_GPIO_TP_RESET);
sprd_gpio_direction_output(CONFIG_LCM_GPIO_TP_RESET, 1);
mdelay(5);
#endif
#ifdef CONFIG_LCM_GPIO_AVDDEN
sprd_gpio_request(CONFIG_LCM_GPIO_AVDDEN);
sprd_gpio_direction_output(CONFIG_LCM_GPIO_AVDDEN, 1);
mdelay(2);
#endif
#ifdef CONFIG_LCM_GPIO_AVEEEN
sprd_gpio_request(CONFIG_LCM_GPIO_AVEEEN);
sprd_gpio_direction_output(CONFIG_LCM_GPIO_AVEEEN, 1);
mdelay(2);
#endif
sprd_gpio_request(CONFIG_LCM_GPIO_RSTN);
sprd_gpio_direction_output(CONFIG_LCM_GPIO_RSTN, 1);
mdelay(5);
sprd_gpio_direction_output(CONFIG_LCM_GPIO_RSTN, 0);
mdelay(10);
sprd_gpio_direction_output(CONFIG_LCM_GPIO_RSTN, 1);
mdelay(20);
pr_err("ft8057s power no\n");
} else {
sprd_gpio_direction_output(CONFIG_LCM_GPIO_RSTN, 0);
mdelay(5);
}
return 0;
}
static struct panel_ops lcd_ft8057s_mipi_hd_ops = {
.init = lcd_ft8057s_mipi_hd_init,
.read_id = lcd_ft8057s_mipi_hd_readid,
.power = esky_ft8057s_vdo_hdp_boe_hy_power,
};
static struct panel_info lcd_ft8057s_mipi_hd_info = {
/* common parameters */
.lcd_name = "lcd_ft8057s_mipi_hd",
.type = SPRD_PANEL_TYPE_MIPI,
.bpp = 24,
// .fps = 60,
.width = 720,
.height = 1612,
/* DPI specific parameters */
.pixel_clk = 96000000, /*Hz*/
.rgb_timing = {
.hfp = 26,
.hbp = 14,
.hsync = 4,
.vfp = 445,
.vbp = 28,
.vsync = 6,
},
/* MIPI DSI specific parameters */
.phy_freq = 691000,
.lane_num = 4,
.work_mode = SPRD_MIPI_MODE_VIDEO,
.burst_mode = PANEL_VIDEO_BURST_MODE,
.bl_type = BL_TYPE_MIPI,
.bl_config_bit = 12,
.nc_clk_en = false,
};
struct panel_driver ft8057s_mipi_hd_driver = {
.info = &lcd_ft8057s_mipi_hd_info,
.ops = &lcd_ft8057s_mipi_hd_ops,
};
其中要注意lcd_ft8057s_mipi_hd_info数组中的name一定要与kernel中对应
将以上代码对应修改到kernel代码内
/ {
fragment {
target-path = "/";
__overlay__ {
lcds {
lcd_ft8057s_mipi_hd:lcd_ft8057s_mipi_hd{
sprd,dsi-work-mode = <1>; /* video burst mode*/
sprd,dsi-lane-number = <4>;
sprd,dsi-color-format = "rgb888";
sprd,phy-bit-clock = <691000>;
sprd,phy-escape-clock = <20000>;/* kHz */
sprd,width-mm = <68>;
sprd,height-mm = <121>;
sprd,esd-check-enable = <1>;
sprd,esd-check-mode = <1>;
sprd,esd-check-period = <2000>;
sprd,reset-on-sequence = <1 5>, <0 5>, <1 20>;
sprd,reset-off-sequence = <1 20>;
sprd,initial-command = [
23 00 00 02 00 00
39 00 00 04 FF 80 57 01
23 00 00 02 00 80
39 00 00 03 FF 80 57
23 00 00 02 00 00
39 00 00 05 2A 00 00 02 CF
23 00 00 02 00 00
39 00 00 05 2B 00 00 06 4B
23 00 00 02 00 A3
39 00 00 05 B3 06 4C 00 18
23 00 00 02 00 93
23 00 00 02 C5 75
23 00 00 02 00 97
23 00 00 02 C5 75
23 00 00 02 00 9A
23 00 00 02 C5 C1
23 00 00 02 00 9C
23 00 00 02 C5 41
23 00 00 02 00 B6
39 00 00 03 C5 61 61
23 00 00 02 00 B8
39 00 00 03 C5 37 37
23 00 00 02 00 00
39 00 00 03 D8 33 33
//23 00 00 02 00 00
//39 00 00 03 D9 00 F5
//23 00 00 02 00 07
//39 00 00 05 D9 00 F5 F5 F5
23 00 00 02 00 82
23 00 00 02 C5 55
23 00 00 02 00 83
23 00 00 02 C5 07
23 00 00 02 00 96
23 00 00 02 f5 0d
23 00 00 02 00 86
23 00 00 02 f5 0d
23 00 00 02 00 94
23 00 00 02 C5 25
23 00 00 02 00 9B
23 00 00 02 C5 51
23 00 00 02 00 A3
23 00 00 02 A5 04
23 00 00 02 00 99
23 00 00 02 CF 56
23 00 00 02 00 86
23 00 00 02 B7 80
23 00 00 02 00 A5
23 00 00 02 B0 1D
23 00 00 02 00 90
23 00 00 02 FF 00
23 00 00 02 00 00
39 00 00 11 E1 0C 10 1A 26 2D 36 44 52 53 60 64 7B 86 70 6F 62
23 00 00 02 00 10
39 00 00 09 E1 59 4D 3D 33 2B 1D 13 12
23 00 00 02 00 00
39 00 00 11 E2 0C 0F 1A 26 2D 36 44 52 53 60 64 7B 86 70 6F 62
23 00 00 02 00 10
39 00 00 09 E2 59 4D 3D 33 2B 1D 13 12
23 00 00 02 00 80
39 00 00 07 C0 00 D2 00 2E 00 1C
23 00 00 02 00 90
39 00 00 07 C0 00 7F 00 2E 00 1C
23 00 00 02 00 A0
39 00 00 07 C0 00 D2 00 2E 00 1C
23 00 00 02 00 B0
39 00 00 06 C0 01 0F 00 2E 1C
23 00 00 02 00 C1
39 00 00 09 C0 01 33 01 0A 00 CD 01 8F
23 00 00 02 00 70
39 00 00 07 C0 00 7F 00 2E 00 1C
23 00 00 02 00 A3
39 00 00 07 C1 00 33 00 3C 00 02
23 00 00 02 00 B7
39 00 00 03 C1 00 33
23 00 00 02 00 73
39 00 00 03 CE 09 09
23 00 00 02 00 80
39 00 00 11 CE 01 81 09 09 00 78 00 96 00 78 00 96 00 78 00 96
23 00 00 02 00 90
39 00 00 10 CE 00 A5 16 8F 00 A5 80 09 09 00 07 D0 16 16 17
23 00 00 02 00 A0
39 00 00 04 CE 20 00 00
23 00 00 02 00 B0
39 00 00 04 CE 87 00 00
23 00 00 02 00 D1
39 00 00 08 CE 00 00 01 00 00 00 00
23 00 00 02 00 E1
39 00 00 0C CE 08 03 C3 03 C3 02 B0 00 00 00 00
23 00 00 02 00 F1
39 00 00 0A CE 14 14 1E 01 52 01 52 01 53
23 00 00 02 00 B0
39 00 00 05 CF 00 00 6D 71
23 00 00 02 00 B5
39 00 00 05 CF 03 03 5B 5F
23 00 00 02 00 C0
39 00 00 05 CF 06 06 47 4B
23 00 00 02 00 C5
39 00 00 05 CF 06 06 4B 4F
23 00 00 02 00 60
39 00 00 09 CF 00 00 6D 71 03 03 5B 5F
23 00 00 02 00 70
39 00 00 09 CF 00 00 65 69 03 03 53 57
23 00 00 02 00 AA
39 00 00 05 CF 80 80 1C 18
23 00 00 02 00 D1
39 00 00 0D C1 03 AA 05 22 09 59 05 87 08 23 0F AC
23 00 00 02 00 E1
39 00 00 03 C1 05 22
23 00 00 02 00 E2
39 00 00 0D CF 06 DE 06 DD 06 DD 06 DD 06 DD 06 DD
23 00 00 02 00 80
39 00 00 03 C1 22 22
23 00 00 02 00 90
23 00 00 02 C1 02
23 00 00 02 00 F5
23 00 00 02 CF 00
23 00 00 02 00 F6
23 00 00 02 CF 5A
23 00 00 02 00 F1
23 00 00 02 CF 5A
23 00 00 02 00 F7
23 00 00 02 CF 71
23 00 00 02 00 00
39 00 00 03 1F 3c 3c
23 00 00 02 00 D1
39 00 00 08 CE 00 0A 01 01 00 A4 01
23 00 00 02 00 E8
39 00 00 05 CE 00 A4 00 A4
23 00 00 02 00 80
39 00 00 11 CC 26 26 1C 1C 26 26 1D 26 26 26 1D 07 09 0B 0D 0F
23 00 00 02 00 90
39 00 00 09 CC 11 25 05 03 00 00 00 00
23 00 00 02 00 80
39 00 00 11 CD 26 26 1C 1C 26 26 1D 26 26 26 1D 06 08 0A 0C 0E
23 00 00 02 00 90
39 00 00 09 CD 10 01 04 02 00 00 00 00
23 00 00 02 00 80
39 00 00 11 CB C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1
23 00 00 02 00 ED
23 00 00 02 CB C1
23 00 00 02 00 90
39 00 00 11 CB 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
23 00 00 02 00 EE
23 00 00 02 CB 00
23 00 00 02 00 90
23 00 00 02 C3 00
23 00 00 02 00 A0
39 00 00 09 CB 00 00 00 00 00 00 00 00
23 00 00 02 00 B0
39 00 00 05 CB 55 55 55 55
23 00 00 02 00 C0
39 00 00 05 CB 55 55 55 55
23 00 00 02 00 D2
39 00 00 0C CB 83 00 83 83 00 83 83 00 83 83 00
23 00 00 02 00 E0
39 00 00 0E CB 83 83 00 83 83 00 83 83 00 83 83 00 83
23 00 00 02 00 FA
39 00 00 03 CB 83 00
23 00 00 02 00 EF
23 00 00 02 CB 00
23 00 00 02 00 68
39 00 00 05 C2 8E 05 8E C4
23 00 00 02 00 6C
39 00 00 05 C2 8D 05 8E C4
23 00 00 02 00 70
39 00 00 05 C2 8C 05 8E C4
23 00 00 02 00 74
39 00 00 05 C2 8B 05 8E C4
23 00 00 02 00 8C
39 00 00 06 C2 8D 05 38 8E C4
23 00 00 02 00 91
39 00 00 06 C2 8C 06 38 8E C4
23 00 00 02 00 96
39 00 00 06 C2 8B 07 38 8E C4
23 00 00 02 00 9B
39 00 00 06 C2 8A 08 38 8E C4
23 00 00 02 00 A0
39 00 00 06 C2 89 09 38 8E C4
23 00 00 02 00 A5
39 00 00 06 C2 88 0A 38 8E C4
23 00 00 02 00 AA
39 00 00 06 C2 87 0B 38 8E C4
23 00 00 02 00 AF
39 00 00 06 C2 86 0C 38 8E C4
23 00 00 02 00 B4
39 00 00 06 C2 85 0D 38 8E C4
23 00 00 02 00 B9
39 00 00 06 C2 84 0E 38 8E C4
23 00 00 02 00 BE
39 00 00 06 C2 83 0F 38 8E C4
23 00 00 02 00 C3
39 00 00 06 C2 82 10 38 8E C4
23 00 00 02 00 dc
39 00 00 09 C2 bb bb bb bb bb bb 00 00
23 00 00 02 00 86
39 00 00 04 C3 FF F0 00
23 00 00 02 00 EA
39 00 00 07 C2 0B 00 0A 04 8E C4
23 00 00 02 00 60
39 00 00 07 C2 8B 00 09 03 8E C4
23 00 00 02 00 FC
39 00 00 03 CB 08 40
23 00 00 02 00 FB
39 00 00 05 C3 8F 14 8F 14
23 00 00 02 00 98
23 00 00 02 C4 08
23 00 00 02 00 91
39 00 00 05 E9 FF FF FF 00
23 00 00 02 00 85
23 00 00 02 C4 80
23 00 00 02 00 81
23 00 00 02 A4 73
23 00 00 02 00 86
23 00 00 02 A4 B6
23 00 00 02 00 95
23 00 00 02 C4 80
23 00 00 02 00 CA
39 00 00 03 C0 90 11
23 00 00 02 00 B7
23 00 00 02 F5 1D
23 00 00 02 00 90
23 00 00 02 C3 00
23 00 00 02 00 B1
23 00 00 02 F5 11
23 00 00 02 00 B0
23 00 00 02 C5 00
23 00 00 02 00 B3
23 00 00 02 C5 00
23 00 00 02 00 B2
23 00 00 02 C5 0D
23 00 00 02 00 B5
23 00 00 02 C5 02
23 00 00 02 00 C2
23 00 00 02 F5 42
23 00 00 02 00 80
23 00 00 02 CE 00
23 00 00 02 00 D0
23 00 00 02 CE 01
23 00 00 02 00 E0
23 00 00 02 CE 00
23 00 00 02 00 A1
23 00 00 02 C1 CC
23 00 00 02 00 A6
23 00 00 02 C1 10
23 00 00 02 00 71
39 00 00 06 C0 C7 01 2B 00 22
23 00 00 02 00 00
39 00 00 04 FF 00 00 00
23 00 00 02 00 80
39 00 00 03 FF 00 00
//23 00 00 02 00 86
//39 00 00 04 C3 FF F0 00
//23 00 00 02 00 81
//23 00 00 02 A4 73
23 00 00 02 51 70
23 00 00 02 53 2C
23 78 00 02 35 00
23 78 00 02 11 00
23 0A 00 02 29 00
];
sprd,sleep-in-command = [
13 78 00 01 28
13 96 00 01 10
23 00 00 02 00 00
39 3C 00 05 F7 5A A5 95 27
];
sprd,sleep-out-command = [
13 78 00 01 11
13 64 00 01 29
];
oled-backlight {
default-brightness = <33>;
sprd,max-level = <255>;
brightness-levels = [
39 00 00 03 51 00 00
39 00 00 03 51 02 00
39 00 00 03 51 03 00
39 00 00 03 51 04 00
39 00 00 03 51 05 00
39 00 00 03 51 06 00
39 00 00 03 51 07 00
39 00 00 03 51 08 00
39 00 00 03 51 09 00
39 00 00 03 51 0A 00
39 00 00 03 51 0B 00
39 00 00 03 51 0C 00
39 00 00 03 51 0D 00
39 00 00 03 51 0E 00
39 00 00 03 51 0F 00
39 00 00 03 51 10 00
39 00 00 03 51 11 10
39 00 00 03 51 12 10
39 00 00 03 51 13 10
39 00 00 03 51 14 10
39 00 00 03 51 15 10
39 00 00 03 51 16 10
39 00 00 03 51 17 10
39 00 00 03 51 18 10
39 00 00 03 51 19 10
39 00 00 03 51 1A 10
39 00 00 03 51 1B 10
39 00 00 03 51 1C 10
39 00 00 03 51 1D 10
39 00 00 03 51 1E 10
39 00 00 03 51 1F 10
39 00 00 03 51 20 10
39 00 00 03 51 21 10
39 00 00 03 51 22 20
39 00 00 03 51 23 20
39 00 00 03 51 24 20
39 00 00 03 51 25 20
39 00 00 03 51 26 20
39 00 00 03 51 27 20
39 00 00 03 51 28 20
39 00 00 03 51 29 20
39 00 00 03 51 2A 20
39 00 00 03 51 2B 20
39 00 00 03 51 2C 20
39 00 00 03 51 2D 20
39 00 00 03 51 2E 20
39 00 00 03 51 2F 20
39 00 00 03 51 30 20
39 00 00 03 51 31 20
39 00 00 03 51 32 20
39 00 00 03 51 33 20
39 00 00 03 51 34 30
39 00 00 03 51 35 30
39 00 00 03 51 36 30
39 00 00 03 51 37 30
39 00 00 03 51 38 30
39 00 00 03 51 39 30
39 00 00 03 51 3A 30
39 00 00 03 51 3B 30
39 00 00 03 51 3C 30
39 00 00 03 51 3D 30
39 00 00 03 51 3E 30
39 00 00 03 51 3F 30
39 00 00 03 51 40 30
39 00 00 03 51 41 30
39 00 00 03 51 42 30
39 00 00 03 51 43 30
39 00 00 03 51 44 30
39 00 00 03 51 45 40
39 00 00 03 51 46 40
39 00 00 03 51 47 40
39 00 00 03 51 48 40
39 00 00 03 51 49 40
39 00 00 03 51 4A 40
39 00 00 03 51 4B 40
39 00 00 03 51 4C 40
39 00 00 03 51 4D 40
39 00 00 03 51 4E 40
39 00 00 03 51 4F 40
39 00 00 03 51 50 40
39 00 00 03 51 51 40
39 00 00 03 51 52 40
39 00 00 03 51 53 40
39 00 00 03 51 54 40
39 00 00 03 51 55 40
39 00 00 03 51 56 50
39 00 00 03 51 57 50
39 00 00 03 51 58 50
39 00 00 03 51 59 50
39 00 00 03 51 5A 50
39 00 00 03 51 5B 50
39 00 00 03 51 5C 50
39 00 00 03 51 5D 50
39 00 00 03 51 5E 50
39 00 00 03 51 5F 50
39 00 00 03 51 60 50
39 00 00 03 51 61 50
39 00 00 03 51 62 50
39 00 00 03 51 63 50
39 00 00 03 51 64 50
39 00 00 03 51 65 50
39 00 00 03 51 66 50
39 00 00 03 51 67 60
39 00 00 03 51 68 60
39 00 00 03 51 69 60
39 00 00 03 51 6A 60
39 00 00 03 51 6B 60
39 00 00 03 51 6C 60
39 00 00 03 51 6D 60
39 00 00 03 51 6E 60
39 00 00 03 51 6F 60
39 00 00 03 51 70 60
39 00 00 03 51 71 60
39 00 00 03 51 72 60
39 00 00 03 51 73 60
39 00 00 03 51 74 60
39 00 00 03 51 75 60
39 00 00 03 51 76 60
39 00 00 03 51 77 60
39 00 00 03 51 78 70
39 00 00 03 51 79 70
39 00 00 03 51 7A 70
39 00 00 03 51 7B 70
39 00 00 03 51 7C 70
39 00 00 03 51 7D 70
39 00 00 03 51 7E 70
39 00 00 03 51 7F 70
39 00 00 03 51 80 70
39 00 00 03 51 81 70
39 00 00 03 51 82 70
39 00 00 03 51 83 70
39 00 00 03 51 84 70
39 00 00 03 51 85 70
39 00 00 03 51 86 70
39 00 00 03 51 87 70
39 00 00 03 51 88 70
39 00 00 03 51 89 80
39 00 00 03 51 8A 80
39 00 00 03 51 8B 80
39 00 00 03 51 8C 80
39 00 00 03 51 8D 80
39 00 00 03 51 8E 80
39 00 00 03 51 8F 80
39 00 00 03 51 90 80
39 00 00 03 51 91 80
39 00 00 03 51 92 80
39 00 00 03 51 93 80
39 00 00 03 51 94 80
39 00 00 03 51 95 80
39 00 00 03 51 96 80
39 00 00 03 51 97 80
39 00 00 03 51 98 80
39 00 00 03 51 99 80
39 00 00 03 51 9A 90
39 00 00 03 51 9B 90
39 00 00 03 51 9C 90
39 00 00 03 51 9D 90
39 00 00 03 51 9E 90
39 00 00 03 51 9F 90
39 00 00 03 51 A0 90
39 00 00 03 51 A1 90
39 00 00 03 51 A2 90
39 00 00 03 51 A3 90
39 00 00 03 51 A4 90
39 00 00 03 51 A5 90
39 00 00 03 51 A6 90
39 00 00 03 51 A7 90
39 00 00 03 51 A8 90
39 00 00 03 51 A9 90
39 00 00 03 51 AA 90
39 00 00 03 51 AB A0
39 00 00 03 51 AC A0
39 00 00 03 51 AD A0
39 00 00 03 51 AE A0
39 00 00 03 51 AF A0
39 00 00 03 51 B0 A0
39 00 00 03 51 B1 A0
39 00 00 03 51 B2 A0
39 00 00 03 51 B3 A0
39 00 00 03 51 B4 A0
39 00 00 03 51 B5 A0
39 00 00 03 51 B6 A0
39 00 00 03 51 B7 A0
39 00 00 03 51 B8 A0
39 00 00 03 51 B9 A0
39 00 00 03 51 BA A0
39 00 00 03 51 BB A0
39 00 00 03 51 BC B0
39 00 00 03 51 BD B0
39 00 00 03 51 BE B0
39 00 00 03 51 BF B0
39 00 00 03 51 C0 B0
39 00 00 03 51 C1 B0
39 00 00 03 51 C2 B0
39 00 00 03 51 C3 B0
39 00 00 03 51 C4 B0
39 00 00 03 51 C5 B0
39 00 00 03 51 C6 B0
39 00 00 03 51 C7 B0
39 00 00 03 51 C8 B0
39 00 00 03 51 C9 B0
39 00 00 03 51 CA B0
39 00 00 03 51 CB B0
39 00 00 03 51 CC B0
39 00 00 03 51 CD C0
39 00 00 03 51 CE C0
39 00 00 03 51 CF C0
39 00 00 03 51 D0 C0
39 00 00 03 51 D1 C0
39 00 00 03 51 D2 C0
39 00 00 03 51 D3 C0
39 00 00 03 51 D4 C0
39 00 00 03 51 D5 C0
39 00 00 03 51 D6 C0
39 00 00 03 51 D7 C0
39 00 00 03 51 D8 C0
39 00 00 03 51 D9 C0
39 00 00 03 51 DA C0
39 00 00 03 51 DB C0
39 00 00 03 51 DC C0
39 00 00 03 51 DD C0
39 00 00 03 51 DE D0
39 00 00 03 51 DF D0
39 00 00 03 51 E0 D0
39 00 00 03 51 E1 D0
39 00 00 03 51 E2 D0
39 00 00 03 51 E3 D0
39 00 00 03 51 E4 D0
39 00 00 03 51 E5 D0
39 00 00 03 51 E6 D0
39 00 00 03 51 E7 D0
39 00 00 03 51 E8 D0
39 00 00 03 51 E9 D0
39 00 00 03 51 EA D0
39 00 00 03 51 EB D0
39 00 00 03 51 EC D0
39 00 00 03 51 EC E0
39 00 00 03 51 EC F0
39 00 00 03 51 ED 00
39 00 00 03 51 ED 10
39 00 00 03 51 ED 20
39 00 00 03 51 ED 30
39 00 00 03 51 ED 40
39 00 00 03 51 ED 50
39 00 00 03 51 ED 60
39 00 00 03 51 ED 70
39 00 00 03 51 ED 80
39 00 00 03 51 ED 90
39 00 00 03 51 ED A0
39 00 00 03 51 ED B0
39 00 00 03 51 ED C0
39 00 00 03 51 ED E0
39 00 00 03 51 FF F0
39 00 00 03 51 FF F0
39 00 00 03 51 FF F0
39 00 00 03 51 FF F0
];
};
display-timings {
native-mode = <&lcd_ft8057s_mipi_hd_timing0>;
lcd_ft8057s_mipi_hd_timing0: timing0 {
clock-frequency = <96000000>;
hactive = <720>;
vactive = <1612>;
hback-porch = <14>;
hfront-porch = <26>;
vback-porch = <28>;
vfront-porch = <445>;
hsync-len = <4>;
vsync-len = <6>;
};
};
};
};
};
};
};
六、将文件合入代码编译
6.1lk阶段
在文件bsp\bootloader\lk\platform\sprd_shared\driver\video\sprd\lcd\panel_cfg.h 内添加panel_driver类型的外部变量(名称与之前修改的驱动文件内的一致)
extern struct panel_driver ft8057s_mipi_hd_driver;
并且在数组supported_panel[]内添加屏幕的指针
#ifdef CONFIG_LCD_FT8057S_MIPI_HD
{
.lcd_id = 0x8057,
.drv = &ft8057s_mipi_hd_driver,
},
#endif
在文件bsp\bootloader\lk\platform\sprd_shared\driver\video\sprd\rules.mk中添加驱动文件的编译规则,并使用宏控
ifeq ($(LCD_FT8057S_MIPI_HD),1)
GLOBAL_DEFINES += CONFIG_LCD_FT8057S_MIPI_HD
MODULE_SRCS += \
$(LOCAL_DIR)/esky_lcd/lcd_ft8057s_mipi_hd.c
endif
其中LCD_FT8057S_MIPI_HD为宏控名称,MODULE_SRCS为源码路径
在文件bsp\bootloader\lk\project\sp9863a_1h10.mk内添加
LCD_HX105FN01_IPS_HLX_MIPI_FHD := 1
使驱动文件编译进LK内
同时在bsp\kernel5.15\kernel5.15\arch\arm64\boot\dts\sprd\sp9863a-1h10-overlay.dts文件内添加
#include "lcd/lcd_ft8057s_mipi_hd.dtsi"
使驱动文件编译进dtb内
参考文献
103188《Kernel 5.15 LCD配置指导手册V1.4.pdf》
FT8057S_Data_Sheet_V0.1 .pdf
103002 《LCD新屏移植.mp4》
33340《unisoc lcd(mipi) fps-phy_feq计算_c_v1.05.xlsm》
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)