kernel(五)LCD

        在新版内核里面,相比之前的 LCD 驱动增加了一个 platform_lcd ,这个 platform_lcd 主要用于背光控制。

        支持 s5pv210 LCD 驱动为 drivers/video/s3c-fb.c,这个驱动同时支持多种 CPU


        三星公用的 LCD 平台设备定义在 arch/arm/plat-samsung/devs.c

        这里的 name 属性为“s3c-fb”,我们的 s5pv210 要匹配上面的 s3c_fb_driver_ids s5pv210-fb,只有把 s3c_device_fb 中的 name 属性设置为“s5pv210-fb”,三星提供了一个函数来设置,在arch/arm/mach-s5pv210/common.c 中的 s5pv210_map_io 函数中进行了设置

        可以看到,三星的很多驱动都是采用这种方式,首先定义一个公用的平台设备,然后在根据特点的 CPU
来设置平台设备的 name 属性,这样做减少了重复代码。
        LCD 驱动移植比较简单,只需要配置相关参数就可以了。

        根据 LCD 手册配置这些参数。 注意到这里没有配置像素时钟,是因为在驱动 s3c-fb.c 中根据上面的时序参数计算出来的。
drivers/video/s3c-fb.c

        这里调用了一个函数 s3c_fb_missing_pixclock,就是通过这个函数计算出来的

        这里用到了刷新频率,默认为 60,我们可以在 mach-smdkv210.c 中的 smdkv210_lcd_timing 结构体
中设置这个频率。

        上面的平台数据都是 s3c_device_fb 这个平台设备的。
       另外还定义了一个smdkv210_lcd_lte480wv平台设备,这个设备主要是提供LCD的背光操作,其对应的驱动为drivers/video/backlight/platform_lcd.c 。TQ210的LCD的背光引脚为 GPD0_0,修改smdkv210_lte480wv_set_power,中间的复位引脚没用到

配置内核支持 LCD

Device Drivers --->
	Graphics support --->
		<*> Support for frame buffer devices --->
			<*> Samsung S3C framebuffer support
		[*] Backlight & LCD device support --->
			<*> Lowlevel LCD controls
			<*> Platform LCD controls
			<*> Lowlevel Backlight controls
			<*> Generic (aka Sharp Corgi) Backlight Driver
		Console display driver support --->
			<*> Framebuffer Console support
		[*] Bootup logo --->
重新编译内核,下载测试
要让控制台输出到 LCD,需要配置/etc/inittab,添加一行 tty1::askfirst:-/bin/sh


可以使用 echo LCD 上输出信息。
可以使用
fbset 命令查看 LCD 参数

/sys/class/lcd/下生成了 platform_lcd 的属性,我们可以通过 echo 控制 LCD 背光

我们可以通过向 lcd_power 这个属性文件写入数字来控制 LCD 背光。
写入
4 关闭 LCD 背光,写入其他值打开 LCD 背光。
echo 4 > /sys/class/lcd/platform-lcd.0/lcd_power 关闭背光
echo 1 > /sys/class/lcd/platform-lcd.0/lcd_power 打开背光
参考
drivers/video/backlight/lcd.c drivers/video/backlight/platform_lcd.c

猜你喜欢

转载自blog.csdn.net/jerrygou/article/details/80779203
LCD