Hi all,
I am working on custom Beagleboneblack board. There is an issue with AM335x silicon errata expained in 3.1.1(attached here). I have taken care in the kenel. The read and blue colors are swaped in the kernel. I have done below changes in the kernel and it is working fine, means kernel logo colors are displayed properly. Now issue with bootanmation and application images colors are not displayed properly. Looks like kernel driver code changes are not effected in the rootfs. Please let me know if anyone know where to fix this issue in the rootfs or any pointers to advise.
Here is the kernel code changes.
--- a/kernel/drivers/video/da8xx-fb.c
+++ b/kernel/drivers/video/da8xx-fb.c
@@ -1104,12 +1104,20 @@ static int fb_check_var(struct fb_var_screeninfo *var,
case 32:
var->transp.offset = 24;
var->transp.length = 8;
- var->red.offset = 16;
+/* var->red.offset = 16;
var->red.length = 8;
var->green.offset = 8;
var->green.length = 8;
var->blue.offset = 0;
+ var->blue.length = 8; */
+//Fix for 3.1.1 am335x silicon errata , bpp=32 from the board file
+ var->red.offset = 0;
+ var->red.length = 8;
+ var->green.offset = 8;
+ var->green.length = 8;
+ var->blue.offset = 16;
var->blue.length = 8;
+
break;
default:
err = -EINVAL;
***********************************************************************
Here is the board file changes.
/* LCD */
static const struct display_panel disp_panel = {
WVGA,
32,
32,
COLOR_ACTIVE,
};
static struct lcd_ctrl_config lcd_cfg = {
&disp_panel,
.ac_bias = 255,
.ac_bias_intrpt = 0,
.dma_burst_sz = 16,
.bpp = 32,
.fdd = 0x80,
/* .tft_alt_mode = 0,*/ /*to fix swap issue mentioned in the am335x silicon errata*/
.tft_alt_mode = 1,
.stn_565_mode = 0,
.mono_8bit_mode = 0,
.invert_line_clock = 1,
.invert_frm_clock = 1,
.sync_edge = 0,
.sync_ctrl = 1,
.raster_order = 0,
};
**********************************************************************
--- a/hardware/ti/sgx/services4/3rdparty/dc_ti335x_linux/omaplfb_displayclass.c
+++ b/hardware/ti/sgx/services4/3rdparty/dc_ti335x_linux/omaplfb_displayclass.c
@@ -1413,12 +1413,21 @@ static OMAPLFB_ERROR OMAPLFBInitFBDev(OMAPLFB_DEVINFO *psDevInfo)
}
else if(psLINFBInfo->var.bits_per_pixel == 32)
{
- if((psLINFBInfo->var.red.length == 8) &&
+ /*if((psLINFBInfo->var.red.length == 8) &&
(psLINFBInfo->var.green.length == 8) &&
(psLINFBInfo->var.blue.length == 8) &&
(psLINFBInfo->var.red.offset == 16) &&
(psLINFBInfo->var.green.offset == 8) &&
(psLINFBInfo->var.blue.offset == 0) &&
+ (psLINFBInfo->var.red.msb_right == 0))*/
+
+ /*fix for AM335x silicon errata*/
+ if((psLINFBInfo->var.red.length == 8) &&
+ (psLINFBInfo->var.green.length == 8) &&
+ (psLINFBInfo->var.blue.length == 8) &&
+ (psLINFBInfo->var.red.offset == 0) &&
+ (psLINFBInfo->var.green.offset == 8) &&
+ (psLINFBInfo->var.blue.offset == 16) &&
(psLINFBInfo->var.red.msb_right == 0))
{
psPVRFBInfo->ePixelFormat = PVRSRV_PIXEL_FORMAT_ARGB8888;
************************************************************************************
Thanks in advance.