This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LCD interface with beagle bone Black

Other Parts Discussed in Thread: DA8XX

hi,

I have interfaced LCD 1024x600 with beaglebone black in 16bit.

It worked fine but there is colour problem. So i want to move to 18 bit or 24 bit mode.

I m using Android 4.2.2 os.

  • Hello,

    I believe the color problem is the red and blue inverted.
    In the kernel folder, at arch/arm/mach-omap2/board-am335xevm.c, you should have added a "struct da8xx_lcdc_platform_data" for supporting your custom display.
    You probably need to change .controller_data value from "&bone_lcd_cape_cfg" to "&lcd_cfg". This will select the correct "struct lcd_ctrl_config" which sets the bits per pixel to 32 instead of 16 - those are the only two values recognized by the SGX driver.

  • I didn't created any "struct da8xx_lcdc_platform_data" which supports my LCD. I just changed the resolution and frequency matching my LCD in the array "da8xx_panel known_lcd_panels[]" in "da8xx-fb.c".

    Can you help me how to add my display in kernal and how to make it default
  • Hello,

    You shouldn't modify an element in the "known_lcd_panels" array inside drivers/video/da8xx-fb.c, but add one.
    For example:

    [10] = {
        .name = "YourScreenName",
        .width = XXX,
        .height = YYY,
        /* other screen parameters: front porch, back porch... */
    },

    Then inside arch/arm/mach-omap2/board-am335xevm.c add a new structure (around line 225):

    struct da8xx_lcdc_platform_data YourScreenName_pdata = {
        .manu_name              = "YourScreenManufacturer",
        .controller_data        = &lcd_cfg,
        .type                   = "YourScreenName", /* this string must be the same to the ".name" string of the known_lcd_panels' new element */
    };

    Finally, if your cape has an EEPROM, you can try to use it for the autodetection, by adding an "else if (!strncmp(..." around line 3700.
    Otherwise, you have to call manually the correct LCD init function (bone_lcdX_lcdc_init) and add a "return;" before the "pr_info("No display cape found on BeagleBone\n");" (line 3705).