LCDµ÷ÊÔÁ÷³Ì×ܽá ÏÂÔØ±¾ÎÄ

LCDµ÷ÊÔÁ÷³Ì×ܽá

¡ª¡ª360OS_8909-la30·ÖÖ§ÉÏmsm8909_x26m_q3ÏîÄ¿µ÷ÊÔ

Ò»¡¢Ç°ÆÚ×¼±¸¹¤×÷£º

a¡¢ÆÁÄ» b¡¢spec

´òÑù£¬ datasheet»á½²½â¸ÃÆÁÄ»µÄÒ»Ð©ÌØÐÔ

»ñȡ·¾¶£ºPM

c¡¢init´úÂë

»ñȡ·¾¶£ºPM---->¼¼ÊõÖ§³Ö

d¡¢Ô­Àíͼ

»ñȡ·¾¶£ºPM---->»ù´ø---->ÎÄ¿Ø

e¡¢¼¼ÊõÖ§³Ö

£¨IC¹Ì¶¨£©µç»°¹µÍ¨---->£¨IC²»¹Ì¶¨£© ѰÇóPM°ïÖú

¶þ¡¢´úÂ벿·Ö

LK ²¿·Ö

Óõ½µÄÎļþ·¾¶

bootable/bootloader/lk /

dev/gcdb/display/include/panel_ili9806e_fwvga_cpt_kelai_video.h bootable/bootloader/lk / target/msm8909_x26m_q3/oem_panel.c 1¡¢oem_panel.c

Ö÷ÒªÊÇʶ±ð²»Í¬IC£¬¸³Öµ¸ø²ÎÊýpanel_id£¬panel_idµÄʹÓÃÔÚͬһÎļþÖÐµÄ init_panel_data()º¯ÊýÖС£

a. int oem_panel_select()º¯Êý:Ñ¡ÔñʹÓÃµÄÆÁ

panel_id = ILI9806E_FWVGA_CPT_KELAI_VIDEO_PANEL ; ×¢£º hw_id Ϊ board id£º

uint32_t hw_id = board_hardware_id(); ÕâÀï¶ÔÓ¦µÄΪ HW_PLATFORM_QRD

platform_subtype = board_hardware_subtype(); ÕâÀï¶ÔÓ¦µÄΪQRD_SKUC

¸ù¾Ýlcm_pin_id²»Í¬À´¸øpanel_id¸³Öµ¡£ lcm_pin_id = mipi_get_lcm_pin_id();

case QRD_SKUC:

if(lcm_pin_id) //¸ù¾Ýlcm_pin_id²»Í¬À´¸øpanel_id¸³Öµ¡£

panel_id = ILI9806E_FWVGA_CPT_KELAI_VIDEO_PANEL;//´Ë´¦ÎªÎÒÃÇÐèÒªÅäÖÃµÄÆÁ

else

panel_id = ILI9881C_720P_HSD_HUASHI_VIDEO_PANEL; break;

Ìí¼Ó·½·¨ mipi_get_lcm_pin_id£¨void£©

#define LCD_HW_GPIO_ID 8 static uint8_t lcm_pin_id;

uint8_t mipi_get_lcm_pin_id(void) {

uint8_t pin_status = 0;

gpio_tlmm_config(LCD_HW_GPIO_ID, 0, GPIO_INPUT, GPIO_PULL_UP, GPIO_2MA, GPIO_ENABLE);

/* Wait for the configuration to complete.*/ thread_sleep(1);

/* Get status of GPIO */

pin_status = gpio_status(LCD_HW_GPIO_ID);

dprintf(INFO,\mipi_get_lcm_pin_id(). pin[%d]_status = %d\\n\pin_status);

return pin_status; }

b. static int init_panel_dataº¯Êý£º³õʼ»¯panelµÄһЩÊý¾Ý£¬Í¨¹ýµ÷ÓÃhÎļþµÄÊý¾Ý

ÔÚÕâÀïÌí¼Ó¶ÔÓ¦µÄ ILI9806E ¶ÔÓ¦µÄÉèÖÃÑ¡Ïî

switch (panel_id) {

case ILI9806E_FWVGA_CPT_KELAI_VIDEO_PANEL:

panelstruct->paneldata = &ili9806e_fwvga_cpt_kelai_video_panel_data;

panelstruct->panelres = &ili9806e_fwvga_cpt_kelai_video_panel_res;

panelstruct->color = &ili9806e_fwvga_cpt_kelai_video_color;

panelstruct->videopanel = &ili9806e_fwvga_cpt_kelai_video_panel;

panelstruct->commandpanel = &ili9806e_fwvga_cpt_kelai_video_command_panel;

panelstruct->state = &ili9806e_fwvga_cpt_kelai_video_state;

panelstruct->laneconfig = &ili9806e_fwvga_cpt_kelai_video_lane_config;

panelstruct->paneltiminginfo = &ili9806e_fwvga_cpt_kelai_video_timing_info;

panelstruct->panelresetseq = &ili9806e_fwvga_cpt_kelai_video_reset_seq;

panelstruct->backlightinfo = &ili9806e_fwvga_cpt_kelai_video_backlight;

pinfo->mipi.panel_cmds = ili9806e_fwvga_cpt_kelai_video_on_command;

pinfo->mipi.num_of_panel_cmds = ARRAY_SIZE(ili9806e_fwvga_cpt_kelai_video_on_command);

memcpy(phy_db->timing,ili9806e_fwvga_cpt_kelai_video_timings, TIMING_SIZE);

pinfo->mipi.signature = ILI9806E_FWVGA_CPT_KELAI_VIDEO_SIGNATURE; break; }

c. Ìí¼ÓÍ·Îļþ£º#include \

d. Ìí¼Ó¶ÔÓ¦µÄ enum:

enum {

HX8394D_480P_VIDEO_PANEL, HX8394D_720P_VIDEO_PANEL, SHARP_QHD_VIDEO_PANEL, TRULY_WVGA_CMD_PANEL,

HX8379A_FWVGA_SKUA_VIDEO_PANEL, ILI9806E_FWVGA_VIDEO_PANEL, HX8394D_QHD_VIDEO_PANEL, HX8379C_FWVGA_VIDEO_PANEL, FL10802_FWVGA_VIDEO_PANEL, AUO_QVGA_CMD_PANEL, AUO_CX_QVGA_CMD_PANEL, HX8394F_720P_VIDEO_PANEL,

ILI9881C_720P_HSD_HUASHI_VIDEO_PANEL,

ILI9806E_FWVGA_CPT_KELAI_VIDEO_PANEL,//´Ë´¦Ìí¼Ó UNKNOWN_PANEL };

2¡¢bootable/bootloader/lk/dev/gcdb/display/include/ Ŀ¼ÏÂÌí¼Ó¶ÔÓ¦µÄ .h Îļþ

ÔÚÕâÀïÌí¼Ópanel_ili9806e_fwvga_cpt_kelai_video.hÎļþ£¬×öÈçÏÂÉèÖãº

panel_config¡¢panel_reslution¡¢panel on/off ¡¢panel color¡¢panel lane config¡¢timing config¡¢ reset config¡¢backlight config µÈ

KERNEL ²¿·Ö Ïà¹ØÎļþ·¾¶

kernel / arch/arm/boot/dts/msm8909_x26m_q3/msm8909-qrd-skuc.dtsi kernel /

arch/arm/boot/dts/msm8909_x26m_q3/dsi-panel-ili9806e-fwvga-cpt-kelai-video.dtsi

1¡¢kernel / arch/arm/boot/dts/msm8909_x26m_q3/Ŀ¼ÏÂÌí¼Ó dsi-panel-ili9806e-fwvga-cpt-kelai-video.dtsiÎļþ 2¡¢msm8909-qrd-skuc.dtsi Ìí¼ÓÍ·Îļþ

#include \ Ìí¼Ó½Úµã

&dsi_ili9806e_fwvga_cpt_kelai_video { qcom,cont-splash-enabled; };

×¢Ò⣺.hºÍ.dtsiÃüÃû¹æÔò£º

IC+²£Á§ÆÁ+Ä£×é+·Ö±æÂÊ+Êý¾Ý´«Êäģʽ

¾ÙÀý£ºpanel_ili9806e_fwvga_cpt_kelai_video.h

dsi-panel-ili9806e-fwvga-cpt-kelai-video.dtsi IC£ºili9806e ²£Á§ÆÁ£ºcpt Ä£×飺kelai ·Ö±æÂÊ£ºfwvga Êý¾Ý´«Êäģʽ£ºvideo

Êý¾Ý´«ÊäģʽÓÐÁ½ÖÖ£ºvedioºÍcommand

DSI(Video Mode)ÊÓÆµÄ£Ê½.

ÕâÖÖ¹¤×÷ģʽÓ봫ͳRGB½Ó¿ÚÏàËÆ£¬Ö÷»úÐèÒª³ÖÐøË¢ÐÂÏÔʾÆ÷¡£ÓÉÓÚ²»Ê¹ÓÃרÓõÄÊý¾ÝÐźŴ«Êäͬ²½ÐÅÏ¢£¬¿ØÖÆÐźźÍRGBÊý¾ÝÊÇÒÔ±¨ÎĵÄÐÎʽͨ¹ýMIPI×ÜÏß´«ÊäµÄ¡£ÒòΪÖ÷»úÐèÒª¶¨ÆÚË¢ÐÂÏÔʾÆ÷£¬ÏÔʾÆ÷¾Í²»ÐèÒªÖ¡»º³åÆ÷¡£Õâ²ÅMX LCD²»ÐèÒªRAMµÄ¹Ø¼üÔ­Òò¡£ DCS(Command mode)ÃüÁîģʽ

MIPI×ÜÏß¿ØÖÆÆ÷ʹÓÃÏÔʾÃüÁÎÄÀ´ÏòÏÔʾÆ÷·¢ËÍÏñËØÊý¾ÝÁ÷¡£ÏÔʾÆ÷Ó¦¸ÃÓÐÒ»¸öȫ֡³¤µÄÖ¡»º³åÆ÷À´´æ´¢ËùÓеÄÏñËØÊý¾Ý¡£Ò»µ©Êý¾Ý±»·ÅÔÚÏÔʾÆ÷µÄÖ¡»º³åÆ÷ÖУ¬¶¨Ê±¿ØÖÆÆ÷¾Í´ÓÖ¡»º³åÆ÷ÖÐÈ¡³öÊý¾Ý£¬²¢×Ô¶¯°ÑËüÃÇÏÔʾÔÚÆÁÄ»ÉÏ¡£MIPI×ÜÏß¿ØÖÆÆ÷²»ÐèÒª¶¨ÆÚË¢ÐÂÏÔʾÆ÷¡£

Èý¡¢±àÒë

ÔÚ¸ùĿ¼Ï·ֱðmake abootºÍmake bootimageºó£¬ÔÚoutĿ¼Ï»áÉú³É boot.imgºÍemmc_appsboot.mbnÁ½¸öÎļþ¡£

ËÄ¡¢ÉÕ¼°æ±¾

ÕâÀïÓÃÊÖ»úµ½·þÎñÆ÷ÉÏÓÃÏÂÔØÒ»¸ö·ÇÈÛ¶Ï·ÇÇ©ÃûµÄuserdebug°æ±¾£¬È»ºófastboot½«ÉÏÃæÄÇÁ½¸öÎļþÉÕ½øÈ¥¡£Èç¹ûfastbootģʽ²»ÄܽøÈë¿ÉÒԲο¼ÌïÅô֮ǰ·¢¹ýµÄÉÕдµ¥¸ö¾µÏñÎļþÎĵµ¡£

Îå¡¢²ð»ú»»ÆÁÑéÖ¤

ÐèÒªÂÝË¿µ¶ºÍÄ÷×ÓСÐIJ𿪺ó¿Çºó£¬½«ÐèÒªµ÷ÊÔµÄÆÁÄ»²åÈë½Ó¿ÚÈ»ºóͨµç¿ª»ú£¬ÆÁÄ»¿ÉÒÔÕý³£µãÁÁ½øÈ뿪»ú¶¯»­Õý³£¿ª»úÁË¡£