这里写自定义目录标题
Atmel Cotex-A5系列显示驱动问题
Atmel DRM驱动中VCLK极性固定为上升沿并不可设置,若LCD屏需VCLK下降沿则显示会有问题。
修改文件"linux/gpu/drm/atmel-hlcdc/atmel_hlcdc_crc.c" 中的函数static void atmel_hlcdc_crtc_mode_set_nofb(struct drm_crtc *c),在设置寄存器 ATMEL_HLCDC_CFG(0)前加入如下代码:
if (adj->flags & DRM_MODE_FLAG_NCSYNC)
cfg |= ATMEL_HLCDC_CLKPOL;
并在 panel_simple.c 中对应的屏参数结构体struct drm_display_mode中的参数 flags设置极性。
增加一个新的 LCD panel:
修改文件"linux/drivers/gpu/drm/panel/panel-simple.c",加入如下:
static const struct drm_display_mode startek_kd035hvfma035_mode = {
.clock = 15000,
.hdisplay = 320,
.hsync_start = 320 + 10,
.hsync_end = 320 + 10 + 45,
.htotal = 320 + 10 + 45 + 35,
.vdisplay = 480,
.vsync_start = 480 + 2,
.vsync_end = 480 + 2 + 15,
.vtotal = 480 + 2 + 15 + 25,
.vrefresh = 66,
.flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NCSYNC,
};
static const struct panel_desc startek_kd035hvfma035 = {
.modes = &startek_kd035hvfma035_mode,
.num_modes = 1,
.bpc = 8,
.size = {
.width = 48,
.height = 73,
},
.bus_format = MEDIA_BUS_FMT_RGB888_1X24,
};
在数组static const struct of_device_id platform_of_match[] 中加入:
{
.compatible = "startek,kd035hvfma035",
.data = &startek_kd035hvfma035,
},
在设备树文件中加入:
panel: panel {
compatible = "startek,kd035hvfma035", "simple-panel";
power-supply = <&panel_reg>;
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
panel_input: endpoint@0 {
reg = <0>;
remote-endpoint = <&hlcdc_panel_output>;
};
};
};
重新编译zImage和设备树文件dtb。