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位 LCD 问题

Guru**** 2614265 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/659517/linux-am3354-1366x768-24-bit-lcd-issue

器件型号:AM3354
主题中讨论的其他器件:DA8XX

工具/软件:Linux

目前,使用24位连接速率为1366×768的 LVDS 屏幕,并且已报告内核启动该错误。

da8xx_LCDC da8xx_LCDC.0:GLCD:针对帧缓冲区的 kmalloc 失败。

设置  CONFIG_FORCE_MAX_ZONEORDER = 16

并在 defconfig 中设置 CONFIG_FB_DA8XX_CONSTD_DMA_SIZE=14

LCD 代码如下所示

静态结构 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}、
};

静态结构 LCD_CTRL_CONFIG DVI_cfg ={
&DVI_PA电池板、
.AC_BIAS = 255、
.AC_BIAS_INIPT = 0、
.DMA_BURST_SZ = 16、
.bpp = 24、 /*RGB888*/
.FDD = 0x80、
.TFT_alt_MODE = 0、
.stn_565_MODE = 0、
.mono_8bit_MODE = 0、
.inver_line_clock = 1、
.inver_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 ="185WX1-400"、
.width = 1366、

HFP =.height =
14、HFP =.768
.hsw = 20、
.VFP = 18、
.VBP = 10、
.vsw = 10、
.pxl_clk = 60000000、
.inver_pxl_clk = 0、
}、 

Linux 内核无可指责:da8xx_LCDC da8xx_LCDC.0:GLCD:找到 HM185WX1-400面板
------ [在此处剪切]-----
警告:位于 mm/page_alloc.c:2095 __alloc_pages_nodemask+0x448/0x600 ()
链接的模块:
回溯:  
[ ](dump_backtrace+0x0/0x110)从[ ](dump_stack+0x18/0x1c)
R6:c048b074 R5:0000082f R4:00000000 R3:c064dc0c
[ ](dump_stack+0x0/0x1c)从[ ](WARN_RASPEK_COMMON + 0x5c/0x6c)
[ ](warn_slESpath_common+0x0/0x6c)、来自[ ](WARN_RASPEK_NULL_0x24/0x2C)
r8:00000000 r7:00000000 r6:c0680a04 r5:c062e0f0 r4:c069f448
r3:00000009
[ ](warn_slESpath_null+0x0/0x2C)、来自[ ](_alloc_pages_nodemASK+0x448/0x600)
[ ](__alloc_pages_nodemASK+0x0/0x600)从[ ](_dma_alloc+0xa4/0x438)
[ ](_dma_alloc+0x0/0x438)、来自[ ](dma_alloc_相干+0x60/0x68)
[ ](dma_alloc_相干+0x0/0x68)从[ ](fb_prob+b90/0xba8)
r7:cf06ac08 r6:cf19d650 r5:c0667040 r4:01002000
[ ](fb_prob+0x0/0xba8)、来自[ ](platform_drv_probe +0x20/0x24)
[ ](platform_drv_probe +0x0/0x24)从[ ](DRIVER_PROBLE_DEVICE_0xc0/0x2d8)
[ ](driver_probe_device+0x0/0x2d8)从[ ](__driver_attach+0x94/0x98)
r8:00000000 r7:00000000 r6:cf06ac3c r5:c0666e04 r4:cf06ac08
[ ](_DRIVER_ATT+0x0/0x98)从[ ](BUS_TO_EASE_DEV_0x58/0x84)
R6:00000000 R5:c01eade8 R4:c0666e04 R3:c01eade8
[ ](BUS_TO_EASE_DEV_0x0/0x84)从[ ](DRIVER_ATT+0x24/0x28)
r6:cf1bba40 r5:c066b5d0 r4:c0666e04
[ ](DRIVER_ATT+0x0/0x28)、来自[ ](BUS_ADD_DRIVER+0x204/0x2d8)
[ ](BUS_ADD_DRIVER+0x0/0x2d8)、来自[ ](DRIVER_REGISTER+0x80/0x184)
[ ](DRIVER_REGISTER+0x0/0x184)、来自[ ](platform_driver_register+0x5c/0x60)
[ ](platform_driver_register+0x0/0x60)从[ ](da8xx_fb_init+0x18/0x1c)
[ ](da8xx_fb_init+0x0/0x1c)从[ ](do_one _initcall+0x3c/0x184)
[ ](do_one _initcall+0x0/0x184)从[ ](kernel_init+0x9C/0x12c)
[ ](kernel_init+0x0/0x12c)从[ ](do_exit+0x0/0x660)

所以  

如何修改内核?

允许 驱动1366×768 24位屏幕。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是什么 Linux 版本?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经解决了这个问题。因为行分辨率必须设置为16的倍数。感谢您的回复。