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.

Linux/AM3354: 1366x768 24-bit LCD issue

Part Number: AM3354
Other Parts Discussed in Thread: DA8XX

Tool/software: Linux

Currently, an LVDS screen with a 24bit connection rate of 1366*768 is used, and the kernel has been reported to start the error.

da8xx_lcdc da8xx_lcdc.0: GLCD: kmalloc for frame buffer failed。

set  CONFIG_FORCE_MAX_ZONEORDER = 16

and set CONFIG_FB_DA8XX_CONSISTENT_DMA_SIZE=14 in defconfig

and the lcd code is below

static struct pinmux_config lcdc_pin_mux[] = {
    {"lcd_data0.lcd_data0",     OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
                               |AM33XX_PULL_DISA},
    {"lcd_data1.lcd_data1",     OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
                               |AM33XX_PULL_DISA},
    {"lcd_data2.lcd_data2",     OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
                               |AM33XX_PULL_DISA},
    {"lcd_data3.lcd_data3",     OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
                               |AM33XX_PULL_DISA},
    {"lcd_data4.lcd_data4",     OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
                               |AM33XX_PULL_DISA},
    {"lcd_data5.lcd_data5",     OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
                               |AM33XX_PULL_DISA},
    {"lcd_data6.lcd_data6",     OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
                               |AM33XX_PULL_DISA},
    {"lcd_data7.lcd_data7",     OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
                               |AM33XX_PULL_DISA},
    {"lcd_data8.lcd_data8",     OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
                               |AM33XX_PULL_DISA},
    {"lcd_data9.lcd_data9",     OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
                               |AM33XX_PULL_DISA},
    {"lcd_data10.lcd_data10",   OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
                               |AM33XX_PULL_DISA},
    {"lcd_data11.lcd_data11",   OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
                               |AM33XX_PULL_DISA},
    {"lcd_data12.lcd_data12",   OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
                               |AM33XX_PULL_DISA},
    {"lcd_data13.lcd_data13",   OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
                               |AM33XX_PULL_DISA},
    {"lcd_data14.lcd_data14",   OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
                               |AM33XX_PULL_DISA},
    {"lcd_data15.lcd_data15",   OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
                               |AM33XX_PULL_DISA},
#if 1

    {"gpmc_ad8.lcd_data16",         OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT
                                   |AM33XX_PULL_DISA},
    {"gpmc_ad9.lcd_data17",         OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT
                                   |AM33XX_PULL_DISA},
    {"gpmc_ad10.lcd_data18",        OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT
                                   |AM33XX_PULL_DISA},
    {"gpmc_ad11.lcd_data19",        OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT
                                   |AM33XX_PULL_DISA},
    {"gpmc_ad12.lcd_data20",        OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT
                                   |AM33XX_PULL_DISA},
    {"gpmc_ad13.lcd_data21",        OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT
                                   |AM33XX_PULL_DISA},
    {"gpmc_ad14.lcd_data22",        OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT
                                   |AM33XX_PULL_DISA},
    {"gpmc_ad15.lcd_data23",        OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT
                                   |AM33XX_PULL_DISA},
#endif
    {"lcd_vsync.lcd_vsync",     OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
    {"lcd_hsync.lcd_hsync",     OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
    {"lcd_pclk.lcd_pclk",       OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
    {"lcd_ac_bias_en.lcd_ac_bias_en", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
    {NULL, 0},
};

static struct lcd_ctrl_config dvi_cfg = {
&dvi_panel,
.ac_bias = 255,
.ac_bias_intrpt = 0,
.dma_burst_sz = 16,
.bpp = 24, /*RGB888*/
.fdd = 0x80,
.tft_alt_mode = 0,
.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,
};

struct da8xx_lcdc_platform_data TFT_HM185WX1_pdata = {
.manu_name = "BOE",
.controller_data = &dvi_cfg,
.type = "HM185WX1-400",
};

[8] = {
.name = "HM185WX1-400",
.width = 1366, 
.height = 768,
.hfp = 100, 
.hbp = 14, 
.hsw = 20, 
.vfp = 18, 
.vbp = 10, 
.vsw = 10, 
.pxl_clk = 60000000, 
.invert_pxl_clk = 0,
},

and the linux kernel is reprot waring :da8xx_lcdc da8xx_lcdc.0: GLCD: Found HM185WX1-400 panel
------------[ cut here ]------------
WARNING: at mm/page_alloc.c:2095 __alloc_pages_nodemask+0x448/0x600()
Modules linked in:
Backtrace: 
[<c0012610>] (dump_backtrace+0x0/0x110) from [<c03c77f8>] (dump_stack+0x18/0x1c)
r6:c048b074 r5:0000082f r4:00000000 r3:c064dc0c
[<c03c77e0>] (dump_stack+0x0/0x1c) from [<c003b228>] (warn_slowpath_common+0x5c/0x6c)
[<c003b1cc>] (warn_slowpath_common+0x0/0x6c) from [<c003b25c>] (warn_slowpath_null+0x24/0x2c)
r8:00000000 r7:00000000 r6:c0680a04 r5:c062e0f0 r4:c069f448
r3:00000009
[<c003b238>] (warn_slowpath_null+0x0/0x2c) from [<c007e6bc>] (__alloc_pages_nodemask+0x448/0x600)
[<c007e274>] (__alloc_pages_nodemask+0x0/0x600) from [<c00144c0>] (__dma_alloc+0xa4/0x438)
[<c001441c>] (__dma_alloc+0x0/0x438) from [<c00148e8>] (dma_alloc_coherent+0x60/0x68)
[<c0014888>] (dma_alloc_coherent+0x0/0x68) from [<c03bfb8c>] (fb_probe+0xb90/0xba8)
r7:cf06ac08 r6:cf19d650 r5:c0667040 r4:01002000
[<c03beffc>] (fb_probe+0x0/0xba8) from [<c01ec388>] (platform_drv_probe+0x20/0x24)
[<c01ec368>] (platform_drv_probe+0x0/0x24) from [<c01eabd0>] (driver_probe_device+0xc0/0x2d8)
[<c01eab10>] (driver_probe_device+0x0/0x2d8) from [<c01eae7c>] (__driver_attach+0x94/0x98)
r8:00000000 r7:00000000 r6:cf06ac3c r5:c0666e04 r4:cf06ac08
[<c01eade8>] (__driver_attach+0x0/0x98) from [<c01e9a08>] (bus_for_each_dev+0x58/0x84)
r6:00000000 r5:c01eade8 r4:c0666e04 r3:c01eade8
[<c01e99b0>] (bus_for_each_dev+0x0/0x84) from [<c01ea7c8>] (driver_attach+0x24/0x28)
r6:cf1bba40 r5:c066b5d0 r4:c0666e04
[<c01ea7a4>] (driver_attach+0x0/0x28) from [<c01ea430>] (bus_add_driver+0x204/0x2d8)
[<c01ea22c>] (bus_add_driver+0x0/0x2d8) from [<c01eb420>] (driver_register+0x80/0x184)
[<c01eb3a0>] (driver_register+0x0/0x184) from [<c01ec8f4>] (platform_driver_register+0x5c/0x60)
[<c01ec898>] (platform_driver_register+0x0/0x60) from [<c05139b4>] (da8xx_fb_init+0x18/0x1c)
[<c051399c>] (da8xx_fb_init+0x0/0x1c) from [<c00087dc>] (do_one_initcall+0x3c/0x184)
[<c00087a0>] (do_one_initcall+0x0/0x184) from [<c04f7880>] (kernel_init+0x9c/0x12c)
[<c04f77e4>] (kernel_init+0x0/0x12c) from [<c003e9d8>] (do_exit+0x0/0x660)

so 

How do I modify the kernel?

to let 1366*768 24bit screen can be  driven.