/home/yangjia/samba/linux-3.5/arch/arm/mach-exynos/mach-tiny4412.c  。_initdata 定义在此文件中。平台驱动都重要在这里注册。平台驱动是匹配名字的。

static struct platform_device *smdk4x12_devices[] __initdata = {
#ifdef CONFIG_EXYNOS4_DEV_DWMCI&exynos_device_dwmci,
#endif&s3c_device_hsmmc2,&s3c_device_hsmmc3,&wm8994_fixed_voltage0,&wm8994_fixed_voltage1,&wm8994_fixed_voltage2,&s3c_device_i2c0,&s3c_device_i2c1,&s3c_device_i2c2,&s3c_device_i2c3,
#ifdef CONFIG_VIDEO_M5MOLS&s3c_device_i2c4,
#endif&s3c_device_i2c7,&s3c_device_adc,&s3c_device_rtc,&s3c_device_wdt,
#ifdef CONFIG_TINY4412_BUZZER&s3c_device_timer[0],
#endif
#ifdef CONFIG_VIDEO_EXYNOS_FIMC_LITE&exynos_device_flite0,&exynos_device_flite1,
#endif&s5p_device_mipi_csis0,&s5p_device_mipi_csis1,&s5p_device_fimc0,&s5p_device_fimc1,&s5p_device_fimc2,&s5p_device_fimc3,&s5p_device_fimc_md,<span style="color:#cc0000;">&s5p_device_fimd0,</span>

在/home/yangjia/samba/linux-3.5/arch/arm/plat-samsung/devs.c 中定义有 s3c_device_fb 和s5p_device_fimd0 。S5P_PA_FIMD0是VIDCON0的地址,可以查三星的用户手册,地址为 0x11C00000。s5p-fb这个名字没有在后面匹配。

#ifdef CONFIG_S5P_DEV_FIMD0
static struct resource s5p_fimd0_resource[] = {[0] = DEFINE_RES_MEM(S5P_PA_FIMD0, SZ_32K),[1] = DEFINE_RES_IRQ(IRQ_FIMD0_VSYNC),[2] = DEFINE_RES_IRQ(IRQ_FIMD0_FIFO),[3] = DEFINE_RES_IRQ(IRQ_FIMD0_SYSTEM),
};struct platform_device s5p_device_fimd0 = {.name     = "s5p-fb",.id       = 0,.num_resources = ARRAY_SIZE(s5p_fimd0_resource),.resource = s5p_fimd0_resource,.dev      = {.dma_mask       = &samsung_device_dma_mask,.coherent_dma_mask  = DMA_BIT_MASK(32),},
};
#ifdef CONFIG_S3C_DEV_FB
static struct resource s3c_fb_resource[] = {[0] = DEFINE_RES_MEM(S3C_PA_FB, SZ_16K),[1] = DEFINE_RES_IRQ(IRQ_LCD_VSYNC),[2] = DEFINE_RES_IRQ(IRQ_LCD_FIFO),[3] = DEFINE_RES_IRQ(IRQ_LCD_SYSTEM),
};struct platform_device s3c_device_fb = {.name        = "s3c-fb",.id       = -1,.num_resources    = ARRAY_SIZE(s3c_fb_resource),.resource    = s3c_fb_resource,.dev     = {.dma_mask       = &samsung_device_dma_mask,.coherent_dma_mask  = DMA_BIT_MASK(32),},
};
#ifdef CONFIG_S5P_DEV_FIMD0
static struct resource s5p_fimd0_resource[] = {[0] = DEFINE_RES_MEM(<span style="color:#cc0000;">S5P_PA_FIMD0</span>, SZ_32K),[1] = DEFINE_RES_IRQ(IRQ_FIMD0_VSYNC),[2] = DEFINE_RES_IRQ(IRQ_FIMD0_FIFO),[3] = DEFINE_RES_IRQ(IRQ_FIMD0_SYSTEM),
};

/home/yangjia/samba/linux-3.5/arch/arm/mach-exynos/mach-tiny4412.c

static void __init smdk4x12_machine_init(void)
{
#ifdef CONFIG_TOUCHSCREEN_FT5X0Xstruct s3cfb_lcd *lcd = tiny4412_get_lcd();ft5x0x_pdata.screen_max_x = lcd->width;ft5x0x_pdata.screen_max_y = lcd->height;

/home/yangjia/samba/linux-3.5/arch/arm/mach-exynos/tiny4412-lcds.c 在这个文件中对lcd的参数进行配置。

static struct {char *name;struct s3cfb_lcd *lcd;int ctp;
} tiny4412_lcd_config[] = {{ "HD700",    &wxga_hd700, 1 },{ "S70", &wvga_s70,   1 },{ "W50", &wvga_w50,   0 },{ "W101",    &wsvga_w101, 1 },{ "A97", &xga_a97,    0 },{ "HDM", &hdmi_def,   0 },   /* Pls keep it at last */
};static int lcd_idx = 0;static int __init tiny4412_setup_lcd(char *str)
{int i;if (!strncasecmp("HDMI", str, 4)) {struct hdmi_config *cfg = &tiny4412_hdmi_config[0];struct s3cfb_lcd *lcd;lcd_idx = ARRAY_SIZE(tiny4412_lcd_config) - 1;lcd = tiny4412_lcd_config[lcd_idx].lcd;for (i = 0; i < ARRAY_SIZE(tiny4412_hdmi_config); i++, cfg++) {if (!strcasecmp(cfg->name, str)) {lcd->width = cfg->width;lcd->height = cfg->height;goto __ret;}}}for (i = 0; i < ARRAY_SIZE(tiny4412_lcd_config); i++) {if (!strcasecmp(tiny4412_lcd_config[i].name, str)) {lcd_idx = i;break;}}__ret:printk("TINY4412: %s selected\n", tiny4412_lcd_config[lcd_idx].name);return 0;
}
early_param("lcd", tiny4412_setup_lcd);

Tiny 4412 lcd 驱动分析 2相关推荐

  1. Tiny 4412 lcd 驱动分析

    1. 和其它内核代码类似. 显示驱动的分析都是由 drivers/video/fbmem.c开始,fbmem.c是显示驱动的抽象,实际只是一个框架性的东西. fbmem_init 中实现了一个字符设备 ...

  2. LCD驱动分析(一)

    LCD驱动分析 转载自http://blog.chinaunix.net/uid-26021340-id-3011787.html S3C2440上LCD驱动 (FrameBuffer)实例开发讲解 ...

  3. 《Linux驱动:s3c2440 lcd 驱动分析》

    文章目录 一,前言 二,LCD原理和硬件分析 2.1 LCD原理解析 2.2 硬件电路 2.2.1 LCD背光电路 2.2.2 LCD屏 2.2.3 S3c2440主控 三,LCD应用平台总线-设备- ...

  4. 高通 android平台LCD驱动分析

    目前手机芯片厂家提供的源码里包含整个LCD驱动框架,一般厂家会定义一个xxx_fb.c的源文件,注册一个平台设备和平台驱动,在驱动的probe函数中来调用register_framebuffer(), ...

  5. Am335x lcd驱动分析

    2019独角兽企业重金招聘Python工程师标准>>> 一 文件列表 本文使用的为sdk6.0 kernel版本为3.2 并未使用dts am335x的lcd驱动相关文件有: (ke ...

  6. LCD驱动分析【转】

    转自:http://blog.csdn.net/hanmengaidudu/article/details/21559153 1.S3C2440上LCD驱动 (FrameBuffer)实例开发讲解 其 ...

  7. lcd驱动分析(读书笔记)

    1.S3C2440上LCD驱动 (FrameBuffer)实例开发讲解 其中的代码也可直接参考:drivers/video/s3c2410fb.c 以下为转载文章,文章原地址:http://blog. ...

  8. android 副屏驱动_高通 android平台LCD驱动分析

    目前手机芯片厂家提供的源码里包含整个LCD驱动框架,一般厂家会定义一个xxx_fb.c的源文件,注册一个平台设备和平台驱动,在驱动的probe函数中来调用register_framebuffer(), ...

  9. 高通平台LCD驱动分析

    目前手机芯片厂家提供的源码里包含整个LCD驱动框架,一般厂家会定义一个xxx_fb.c的源文件,注册一个平台设备和平台驱动,在驱动的probe函数中来调用register_framebuffer(), ...

最新文章

  1. 做小程序费用太高?帮你选一个最省钱的方案
  2. java 类似结构体_Java中如何实现类似C++结构体的二级排序
  3. C语言之malloc和free总结
  4. linux启动xorg进程,Linux 黑话解释:Xorg,X11,Wayland,什么是显示服务器
  5. Java学习:类的封装、继承和多态
  6. [Unity] StartCoroutine 无法启动协程的可能原因:没有使用 AddComponent<T>() 初始化 Monobehaviour
  7. 小程序如何添加外部字体库
  8. 模型预测控制 MPC QP Solver
  9. malloc 函数详解
  10. 聚合支付的钱先到哪?一文让你读懂什么是聚合支付
  11. pb一步步开发APP
  12. 量子计算机不能解决的问题,量子计算机破产问题传统计算机无法解决
  13. 金大侠的亲属与剑桥大学最厉害的三个学院
  14. ORA-03113数据库无法正常启动
  15. C语言中的void和void指针-void*
  16. 坐标偏差大_大数据例析课堂师生交往行为的偏差与矫正
  17. 移动硬盘中安装Windows10
  18. mysql优化or_mysql or语句的优化
  19. 给自己的网站、app接入广告的方法说明
  20. 为什么Video Speed Manager 和 Video Speed Controller 的chrome插件对有些B站视频不能调速

热门文章

  1. 像高手一样使用你的计算机
  2. DorisDB使用笔记(一)
  3. DIY组装电脑踩坑,手残党DIY装机分享!
  4. Python的类中定义函数的三种方式及其利用
  5. web前端js基础之js的几种“截取字符串”方法
  6. MVC项目实例--GuestBook
  7. plot绘图只能在工具栏的预览显示,无法全屏弹窗显示---matlab 不学无术小问题
  8. SpringBoot整合Shiro报错记录
  9. 虚拟机连接数据库报错2059
  10. vim下粘贴内容格式错乱