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.

AM335x 使用24bit,18.5寸屏问题

目前使用1366*768分别率的24bit连接方式的LVDS屏,内核一直报启动错误

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

在def_config中设置

CONFIG_FORCE_MAX_ZONEORDER=16

CONFIG_FB_DA8XX_CONSISTENT_DMA_SIZE=14

在board-am335xevm.c中的配置为

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",
};

在da8xx-fb.c中的配置为

[8] = {
.name = "HM185WX1-400",
.width = 1366, // 屏幕x轴像素长度
.height = 768, // 屏幕y轴像素长度
.hfp = 100, //水平前沿
.hbp = 14, //水平后沿
.hsw = 20, //水平同步信号脉冲
.vfp = 18, //垂直前沿
.vbp = 10, //垂直后沿
.vsw = 10, //垂直同步信号脉冲
.pxl_clk = 60000000, //像素时钟频率
.invert_pxl_clk = 0,
},

问下为什么报内核申请内存失败的错误,怎么解决,这是内核的报错信息

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)