展銳Android Q LCD除錯

2021-10-02 07:14:16 字數 4870 閱讀 6681

配置kernel

問題總結

lcd模組功能主要是lcd液晶顯示

以 skyworth ili9881c hd為例,首先需要準備東西如下:

1、屏ic data sheet

2、初始化** —>獲得初始化螢幕ic的命令,用於編寫u-boot初始化檔案和.dtsi檔案(kernel)

首先從data sheet或者初始化**中可以獲得以下一些資訊:

1、水平脈衝寬度(qcom,mdss-dsi-h-pulse-width,hsync)為68

2、水平後沿值(qcom,mdss-dsi-h-back-porch,hbp)為120

3、水平前沿值(qcom,mdss-dsi-h-front-porch,hfp)為88

4、垂直脈衝寬度(qcom,mdss-dsi-v-pulse-width,vsync)為8

5、垂直後沿值(qcom,mdss-dsi-v-back-porch,vbp)為24

6、垂直前沿值(qcom,mdss-dsi-v-front-porch,vfp)為16

7、面板高度(qcom,mdss-dsi-panel-height,vadr)為1280

8、面板寬度(qcom,mdss-dsi-panel-width,hadr)為720

參考已有lcd驅動檔案,新增要增加lcd的驅動檔案,命名規則panel_ic_vendor_platform_res_mod.c

從原理圖中獲取gpio lcm_gpio_vcc和lcm_gpio_power

#include "sprd_panel.h"

#include "sprd_dsi.h"

#include "dsi/mipi_dsi_api.h"

#include "sprd_dphy.h"

static uint8_t init_data=

;//傳送命令

static int mipi_dsi_send_cmds

(struct sprd_dsi *dsi,

void

*data)

return0;

}static int ili9881c_init

(void

)//讀取lcd屏id

static int ili9881c_readid

(void);

uint8_t read_buf[4]

=;mipi_dsi_lp_cmd_enable

(dsi,

true);

mipi_dsi_gen_write

(dsi, cmd,

array_size

(cmd));

mipi_dsi_set_max_return_size

(dsi,1)

;mipi_dsi_dcs_read

(dsi,

0xda

,&read_buf[0]

,1);

//mipi_dsi_dcs_read(dsi, 0x01, &read_buf[1], 1);

printk

("lcd_ili9881c_mipi read id 0xda value is 0x%x !\n"

, read_buf[0]

);if(

(0x05

== read_buf[0]

))pr_err

("ili9881c read id failed!\n");

return-1

;}static int ili9881c_power

(int on)

else

return0;

}/*static int ili9881c_set_brightness(int brightness)

; struct sprd_dsi *dsi = &dsi_device;

set_bl_seq[1] = brightness >> 4 & 0x0f;

set_bl_seq[2] = brightness;

mipi_dsi_gen_write(dsi,&set_bl_seq[0], 3);

return 0;}*/

static struct panel_ops ili9881c_ops =

;static struct panel_info ili9881c_info =

,/* mipi dsi specific parameters */

.phy_freq =

552*

1000

,.lane_num =4,

.work_mode =

sprd_mipi_mode_video

,.burst_mode =

panel_video_burst_mode

,.nc_clk_en =

false,}

;struct panel_driver lcd_ili9881c_skyworth_hd_mipi_driver =

;

在bsp/bootloader/u-boot15/drivers/video/sprd/lcd/makefile中新增

obj-$(

config_fb_lcd_ili9881c_skyworth_hd_mipi

)+= lcd_ili9881c_skyworth_hd_mipi.o

在bsp//bootloader/u-boot15/include/configs/8541e_1h10.h

#define lcm_gpio_vcc

72#define lcm_gpio_power

73#define config_fb_lcd_ili9881c_skyworth_hd_mipi

在bsp/bootloader/u-boot15/drivers/video/sprd/lcd/panel_cfg.h中修改

extern struct panel_driver lcd_ili9881c_skyworth_hd_mipi_driver;

static struct panel_cfg supported_panel=

}

在bsp/bootloader/u-boot15/board/spreadtrum/8541e_1h10/ldo_sleep.c是能ldo

void

dcdc_ldo_power_on()

在bspbootloader/u-boot15/board/spreadtrum/8541e_1h10/regulator_init.c中設定ldo電流強度

static int power_on_voltage_init

(void

)

編譯uboot並燒錄,檢視lcd是否被點亮。如果沒有,新增適當log檢視,同時檢視porch值、clk、freq是否配置正確。

arch/arm/boot/dts/lcd/lcd_ili9881c_mipi_skyworth_hd.dtsi

/;}

; oled-backlight ;}

;};}

;

在bsp/kernel/kernel4.14/arch/arm/boot/dts/8541e-1h10.dts中新增

#include "lcd/lcd_ili9881c_mipi_skyworth_hd.dtsi"
編譯kernel並燒錄,檢視lcd是否被點亮。如果沒有,新增適當log檢視,同時檢視porch值、clk、freq是否配置正確。

問題1:u-boot階段lcd未被點亮

解決方法:

1、新增log,檢視lcd id是否讀取正常,保證走正常的init流程

2、檢視porch值、clk、freq是否正常,

phy_feq 理論計算

(pixelclk * 24 * 1.2)/lane_num

pixelclk理論計算

(width+hfp +hbp +hsync )*(height +vfp +vbp +vsync )*fps

問題2:kernel階段lcd未被點亮

解決方案:

檢視porch值、clk、freq是否正常,

phy_feq 理論計算

(pixelclk * 24 * 1.2)/lane_num

pixelclk理論計算

(width+hfp +hbp +hsync )*(height +vfp +vbp +vsync )*fps

問題3:背光調節有問題

解決方案

1、現有lcd背光調節方式為發命令給ic,ic自己調節,展銳預設背光調節為pwm調節,

2、修改kernel/kernel4.14/arch/arm/boot/dts/8541e-1h10-overlay.dts

將 pwm_backlight: sprd_backlight 修改為 pwm_backlight: sprd_pwm_backlight

問題3:調節背光值到最大,宕機

解決方案:

背光調節時,呼叫的為/kernel/kernel4.14/drivers/gpu/drm/sprd/sprd_panel.c中的static int sprd_oled_set_brightness(struct backlight_device *bdev)函式,新增log發現,背光為最大值時,資料溢位,檢視,發現背光brightness-levels個數為255,而struct sprd_oled中定義struct dsi_cmd_desc *cmds[255],當背光為255時,確實溢位了,因此,修改struct dsi_cmd_desc *cmds[255]為struct dsi_cmd_desc *cmds[256].

展銳NB IoT賦能 突破千萬 NB

據最新統計資料顯示,2019 年 nb iot使用者數已經突破 6000 萬,其中nb iot智慧型水表使用者數均超過 1000 萬大關,月增量已經超過2g。隨著物聯網的發展,我國在大力推進智慧型城市的建設。智慧型水務作為智www.cppcns.com慧城市的重要組成部分,已成為中國水務物聯公升級的...

展訊camera驅動除錯

camera驅動目錄 vendor sprd modules libcamera sensor sensor drv classic galaxycore gc030a kernel drivers misc sprd camera sensor csi2 csi sprd r2p0 csi dri...

紫光展銳秋招筆試 錯題筆記

此為我在作完紫光筆試後的錯題記錄與查詢,知識點涉及題目但不包含題目,是自己在考試過程中記錄暴露出來的知識盲區,考試後查的。聊作記錄,避免再犯。iqr中斷過程 mmu ddr cache 彙編arm wfi和wfe指令 arm 使用什麼技術來支援記憶體越界訪問檢測 記憶體顆粒 linux核心驅動dev...