LVDS 24Bit 1920*1080 kernel階段極化問題

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

LVDS 24Bit 1920*1080 kernel階段極化問題

2,653 Views
frankweng
Contributor III

hi 您好

使用MX6點panel AUO21.5" 1920*1080 遇到在開機過程中極化的問題,但進到OS之後畫面正常

按照iMX6QD How to Add 24-bit LVDS Support in Android 的說明

請問是那裡還需要在作設定,在setenv 中ldb=spl0 就不會有任何輸出,如果是ldb=spl1會有時出現freescale loge,但顏色及解析度都不對,後來show freescale logo就變成極化現象在也看不到logo。

下面是提供的相關資訊,已卡很久請求協助,謝謝

90564.jpg開機過程中(ldb_disp_init 設定spl/dul..)發生極化

90563.jpg進到OS的畫面

uboot env set:

setenv bootargs console=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb,LDB-XGA,bpp=32,if=RGB24 ldb=spl1 video=mxcfb1:off video=mxcfb2:off fbmem=10M fb0base=0x27b00000 vmalloc=400M androidboot.console=ttymxc0 androidboot.hardware=FA33 ldo_active=on

  • kernel_imx/arch/arm/mach-mx6/board-FA33.c

static struct ipuv3_fb_platform_data sabresd_fb_data[] = {

         { /*fb0*/

         .disp_dev = "ldb",

         .interface_pix_fmt = IPU_PIX_FMT_RGB24,

         .mode_str = "LDB-XGA",

         .default_bpp = 24,

         .int_clk = false,

         .late_init = false,

     },

};

static struct fsl_mxc_ldb_platform_data ldb_data = {

         .ipu_id = 0,

         .disp_id = 1,

         .ext_ref = 1,

         .mode =  LDB_SPL_DI1,

         .sec_ipu_id = 0,

         .sec_disp_id = 0,

};

  • kernel_imx/drivers/video/mxc/ldb.c

static struct fb_videomode ldb_modedb[] = {

         {

          "LDB-WXGA", 60, 1280, 800, 14065,

          40, 40,

          10, 3,

          80, 10,

          0,

          FB_VMODE_NONINTERLACED,

          FB_MODE_IS_DETAILED,},

          {//for auo 21.5

           "LDB-XGA",60,1920,1080,13899,

            70,90,

            10,30,

             20,10

             0,

              FB_VMODE_NONINTERLACED,

             0,},

};

static int ldb_disp_init(struct mxc_dispdrv_handle *disp,

  struct mxc_dispdrv_setting *setting)

{.................

                    reg = readl(ldb->control_reg);

644                 if ((lvds_channel == 0) && (setting->disp_id == 0))

645                         reg |= LDB_CH0_MODE_EN_TO_DI0;

646                 else if ((lvds_channel == 0) && (setting->disp_id == 1))

647                         reg |= LDB_CH0_MODE_EN_TO_DI1;

648                 else if ((lvds_channel == 1) && (setting->disp_id == 0))

649                         reg |= LDB_CH1_MODE_EN_TO_DI0;

650                 else

651                         reg |= LDB_CH1_MODE_EN_TO_DI1;

652                 ch_mask = lvds_channel ?  LDB_CH1_MODE_MASK :

653                                 LDB_CH0_MODE_MASK;

654                 ch_val = reg & ch_mask;

655

656                 if (bits_per_pixel(setting->if_fmt) == 24) {

657                         if (lvds_channel == 0)

658                                 reg |= LDB_DATA_WIDTH_CH0_24;

659                         else

660                                 reg |= LDB_DATA_WIDTH_CH1_24;

661                 } else {

662                         if (lvds_channel == 0)

663                                 reg |= LDB_DATA_WIDTH_CH0_18;

664                         else

665                                 reg |= LDB_DATA_WIDTH_CH1_18;

666                 }

667                 writel(reg, ldb->control_reg);<----設定完就極化

...............................................

}

Labels (4)
0 Kudos
9 Replies

1,172 Views
jimmychan
NXP TechSupport
NXP TechSupport

Seems your display is working when kernel is up. Do you modify the code in u-boot so it can support your display?

0 Kudos

1,171 Views
frankweng
Contributor III

按照iMX6QD How to Add 24-bit LVDS Support in Android 的說明作設定,uboot 也有作設定

0 Kudos

1,171 Views
jimmychan
NXP TechSupport
NXP TechSupport

could you show me what you change in u-boot?

0 Kudos

1,172 Views
frankweng
Contributor III

Dear Jimmychan

還有一個問題發現與點panel 有關,會產生"kernel panic" 問題(LVDS+HDMI ,當插上HDMI 也會出現),原本的code 所點的panel , 並沒有看到此問題。

比較詳細的log在附件

  1. 1.740282] ldb_disp_init(481) winmate frank  ldb->mode=[2],reg=[1200]

[ 1.747043] ldb_disp_init(482) winmate frank wait setting->disp_id=[-1072170984]

[ 1.754660] ldb_disp_init(552) winmate frank  writel to ldb reg=[4BF]--->writel(reg, ldb->control_reg);//<----設完極化(Polarization)

..........................以下開始panel極化現象.............................................

[ 13.717018] Freeing init memory: 240K

erfd_create failed

[ 15.674006] healthd: BatteryTemperaturePath not found

[ 15.674779] init: cannot find '/system/etc/install-recovery.sh', disabling 'flash_recovery'

[ 15.687890] healthd: BatteryTechnologyPath not found

[ 15.693080] binder: 2302:2302 transaction failed 29189, size 0-0

[ 15.722454] init: using deprecated syntax for specifying property 'ro.serialno', use ${name} instead

[ 15.728810] scsi 0:0:0:0: Direct-Access    JetFlash Transcend 16GB  1100 PQ: 0 ANSI: 0 CCS

[ 15.740610] init: property 'ro.serialno' doesn't exist while expanding '$ro.serialno'

[ 15.741718] sd 0:0:0:0: [sda] 31703040 512-byte logical blocks: (16.2 GB/15.1 GiB)

[ 15.742605] sd 0:0:0:0: [sda] Write Protect is off

[ 15.742619] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00

[ 15.743335] sd 0:0:0:0: [sda] No Caching mode page present

[ 15.743344] sd 0:0:0:0: [sda] Assuming drive cache: write through

[ 15.747831] sd 0:0:0:0: [sda] No Caching mode page present

[ 15.747840] sd 0:0:0:0: [sda] Assuming drive cache: write through

[ 15.749712]  sda: sda1

[ 15.792583] init: cannot expand '$ro.serialno' while writing to '/sys/class/android_usb/android0/iSerial'

[ 15.795745] usb 2-1.2.4: device not accepting address 8, error -32

[ 15.798084] sd 0:0:0:0: [sda] No Caching mode page present

[ 15.798093] sd 0:0:0:0: [sda] Assuming drive cache: write through

[ 15.798103] sd 0:0:0:0: [sda] Attached SCSI removable disk

[ 15.826053] init: using deprecated syntax for specifying property 'ro.product.manufacturer', use ${name} instead

[ 15.836478] init: using deprecated syntax for specifying property 'ro.product.model', use ${name} instead

root@FA33:/ # [  15.896096] usb 2-1.2.4: new low speed USB device number 9 using fsl-ehci

[ 15.929890] init: property 'sys.powerctl' doesn't exist while expanding '${sys.powerctl}'

[ 15.938328] init: powerctl: cannot expand '${sys.powerctl}'

[ 15.944245] init: property 'sys.sysctl.extra_free_kbytes' doesn't exist while expanding '${sys.sysctl.extra_free_kbytes}'

[ 15.955381] init: cannot expand '${sys.sysctl.extra_free_kbytes}' while writing to '/proc/sys/vm/extra_free_kbytes'

[ 15.966185] android_usb: already disabled

[ 15.970542] mtp_bind_config

[ 15.973513] adb_bind_config

[ 15.993002] adb_open

[ 16.091731] android_work: sent uevent USB_STATE=DISCONNECTED

[ 16.206488] android_work: sent uevent USB_STATE=CONNECTED

[ 16.308990] android_usb gadget: high speed config #1: android

[ 16.315209] android_work: sent uevent USB_STATE=CONFIGURED

[ 16.325762] usb 2-1.2.4: device not accepting address 9, error -32

[ 16.332568] hub 2-1.2:1.0: unable to enumerate USB device on port 4

.....出現..kernel panic.........

[ 16.718890] ldb_disp_setup(222) winmate frank

[ 16.718903] find_ldb_setting(206) winmate frank id=[DISP3 BG - DI1]

[ 16.718914] ldb_disp_setup(252) winmate frank pixel_clk=[71999000]

[ 16.735843] drivers/mxc/ipu3/ipu_disp.c__ipu_dmfc_init(251) winmate frank

[ 16.735856] imx-ipuv3 imx-ipuv3.0: IPU DMFC DP HIGH RESOLUTION: 1(0,1), 5B(2~5), 5F(6,7)

[ 16.735865] _ipu_dmfc_init(327) winmate frank wait 2s

[ 16.735903] find_ldb_setting(206) winmate frank id=[DISP3 BG - DI1]

..........................以上的過程panel極化現象.............................................

[ 16.735910] ldb_disp_enable(273) winmate frank index=[0]

[ 18.740289] ldb_disp_enable(280) winmate frank reg=[4bf]

[ 18.740297] ldb_disp_enable(282) winmate frank<--------------------開始出顯 android logo(畫面正常)

0 Kudos

1,172 Views
尚飞汤
Contributor IV

Dear frank:

          I meet the same question like you,do you solve your question?can you tell me how to deal with that。

0 Kudos

1,172 Views
frankweng
Contributor III

Hi Jimmychan

謝謝你的協助。

1:定義一個paneltype.h,並且在mx6q_sabresd.c  include paneltype

  • paneltype.h, 定義各種不同panel 參數

/*winmate frank Maintenance panel parameters table*/

#ifndef _PANEL_TYEP_

#define _PANEL_TYEP_

#if defined(AUO_M215HTN0) || defined(HANNSTAR_HSD100IFW4)

  #include <ipu.h>

  #include <linux/fb.h>

#elif defined(CONFIG_PANEL_AUO_M215HTN0) ||defined(CONFIG_PANEL_HANNSTAR_HSD100IFW4)

  #include <linux/ipu.h>

  #include <linux/fb.h>

  #include <linux/fsl_devices.h>

#endif

#if defined(AUO_M215HTN0) || defined(CONFIG_PANEL_AUO_M215HTN0)

  #define PANEL_REFRESH           60

  #define PANEL_XRES                   1920

  #define PANEL_YRES                    1080

  #define PANEL_PIXCLOCK      13889

  #define PANEL_LEFT_MARGIN 70

  #define PANEL_RIGHT_MARGIN 90

  #define PANEL_UPPER_MARGIN 10

  #define PANEL_LOWER_MARGIN 30

  #define PANEL_HSYNC_LEN 20

  #define PANEL_VSYNC_LEN 10

  #define PANEL_SYNC FB_SYNC_EXT

  #define PANEL_VMODE       FB_VMODE_NONINTERLACED//FB_VMODE_DOUBLE

  #define PANEL_FLAG 0

  #define PANEL_FREQ 72000000

  #define PANEL_PIX_FMT IPU_PIX_FMT_RGB24

  #define PANEL_PWM_PERIOD 5000000 //pwm Feq 200Hz

  #if !defined(CONFIG_PANEL_AUO_M215HTN0)

  #define PANEL_PCLK_LDB DI_PCLK_LDB

  #else

  #define PANEL_LDB_MODE LDB_SPL_DI0

  #endif

#endif

#if defined(HANNSTAR_HSD100IFW4) ||defined(CONFIG_PANEL_HANNSTAR_HSD100IFW4)

  #define PANEL_REFRESH 60

  #define PANEL_XRES 1024

  #define PANEL_YRES 600

  #define PANEL_PIXCLOCK 15385

  #define PANEL_LEFT_MARGIN 220

  #define PANEL_RIGHT_MARGIN 40

  #define PANEL_UPPER_MARGIN 21

  #define PANEL_LOWER_MARGIN 7

  #define PANEL_HSYNC_LEN 60

  #define PANEL_VSYNC_LEN 10

  #define PANEL_SYNC FB_SYNC_EXT

  #define PANEL_VMODE       FB_VMODE_NONINTERLACED

  #define PANEL_FLAG 0

  #define PANEL_FREQ 65000000

  #define PANEL_PIX_FMT IPU_PIX_FMT_RGB666

  #define PANEL_PWM_PERIOD 50000

  #if !defined(CONFIG_PANEL_HANNSTAR_HSD100IFW4)

  #define PANEL_PCLK_LDB DI_PCLK_LDB

  #else

  #define PANEL_LDB_MODE LDB_SEP0

  #endif

#endif

#endif//#ifndef _PANEL_TYEP_

  • 修改 mx6q_sabresd.c(FA33.c for 專案)

static struct fb_videomode lvds_xga = {

  "LDB-XGA",PANEL_REFRESH,

  PANEL_XRES,PANEL_YRES,PANEL_PIXCLOCK,

  PANEL_LEFT_MARGIN,PANEL_RIGHT_MARGIN,

  PANEL_UPPER_MARGIN,PANEL_LOWER_MARGIN,

  PANEL_HSYNC_LEN,PANEL_VSYNC_LEN,

  PANEL_SYNC,

  PANEL_VMODE,   

  PANEL_FLAG,

};

void lcd_enable(void)

{

.....

if (di == 1) {

  reg = readl(CCM_BASE_ADDR + CLKCTL_CCGR3);

  reg |= 0xC033;-->修改成 0x0F3F,不管是原本的0xC033 Or 0XF3F 都是一樣

     writel(reg, CCM_BASE_ADDR + CLKCTL_CCGR3);

  } else {

  reg = readl(CCM_BASE_ADDR + CLKCTL_CCGR3);

  reg |= 0x300F;

  writel(reg, CCM_BASE_ADDR + CLKCTL_CCGR3);

  }

  ret = ipuv3_fb_init(&lvds_xga, di,PANEL_PIX_FMT, DI_PCLK_LDB,PANEL_FREQ);<----修改

  if (ret)

  puts("LCD cannot be configured\n");

......

}

  • uboot env set:

setenv bootargs console=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb,LDB-XGA,bpp=32,if=RGB24 ldb=spl1 video=mxcfb1:off video=mxcfb2:off fbmem=10M fb0base=0x27b00000 vmalloc=400M androidboot.console=ttymxc0 androidboot.hardware=FA33 ldo_active=on

以上是修改uboot for LVDS

0 Kudos

1,172 Views
jim_lin
NXP Employee
NXP Employee

jimmychan

Hello Jimmy,

thank you for the help, one more update here, Frank has tried to disabled the splash screen in u-boot by comment-out "#define CONFIG_SPLASH_SCREEN", after this modification there is no display at all(even in Android).

by the way, I have found a post below:

https://community.freescale.com/docs/DOC-98109

which might be helpful to this issue but that is for 4.2.2 only, so far the development is based on KK4.4.2, not easy to use as reference.

could you help to check if there is something wrong with the setting in u-boot?

Thank you,

Jim.

0 Kudos

1,172 Views
jimmychan
NXP TechSupport
NXP TechSupport

I think customer can try the modification in https://community.freescale.com/docs/DOC-98109

Although it is for JB4.2.2, the u-boot is basically the same source code as KK4.4.2.

0 Kudos

1,172 Views
frankweng
Contributor III

Have tried, can not boot

0 Kudos