Atmel Cotex-A5系列显示驱动问题

这里写自定义目录标题

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。

上一篇:第八集:数据类型-元组推导式


下一篇:数据结构与算法 7.顺序查找和二分法查找