1、/arch/arm/mach-omap2/board-am335xevm.c/lcdc_init(){得到LCD硬件参数struct da8xx_lcdc_platform_data} -> am33xx_register_lcdc() -> omap_device_build() -> omap_device_build_ss() -> platform_device_add_data(){pdev->dev.platform_data = d}
2、platform_device端注册过程:
omap_device_build_ss(){pdev = platform_device_alloc(pdev_name, pdev_id);} -> omap_device_register() -> platform_device_add()
3、platform_device设备名确定过程:
am33xx_register_lcdc(){char *dev_name = "da8xx_lcdc";} -> omap_device_build() -> omap_device_build_ss(){pdev = platform_device_alloc(pdev_name, pdev_id);}
4、通过设备名搜索找到设备驱动文件: drivers/video/da8xx-fb.c
5、board-am335xevm.c记录的屏的类型有:
.type    = "TFC_S9700RTWV35TR_01B",
.type   = "NHD-4.3-ATXI#-T-1",
da8xx-fb.c记录的屏的类型有:
.name = "Sharp_LCD035Q3DG01",
.name = "Sharp_LK043T1DG01",
.name = "TFC_S9700RTWV35TR_01B",
.name = "NHD-4.3-ATXI#-T-1",
6、配置驱动程序进入fb_probe()获取LCD硬件参数用于配置struct da8xx_lcdc_platform_data:
struct da8xx_lcdc_platform_data *fb_pdata = device->dev.platform_data;
7、匹配合适的屏,并输出屏的类型(通过dmesg查看匹配信息是否正确),否则退出驱动:
{
   if (i == ARRAY_SIZE(known_lcd_panels)) {
       dev_err(&device->dev, "GLCD: No valid panel found\n");
       ret = -ENODEV;
       goto err_pm_runtime_disable;
   } else
       dev_info(&device->dev, "GLCD: Found %s panel\n",
                   fb_pdata->type);
}
8、fb_probe()接下来复位LCD并配置硬件参数,最后申请fb_info注册framebuffer设备
9、硬件资源设置:
am33xx_register_lcdc(){oh = omap_hwmod_lookup(oh_name);} -> omap_device_build(...struct omap_hwmod *oh,...){struct omap_hwmod *ohs[] = { oh };} -> omap_device_build_ss(...struct omap_hwmod **ohs,...) -> omap_device_alloc(...struct omap_hwmod **ohs,...){od->hwmods = hwmods(来至于参数ohs);} -> omap_device_fill_resources(od, res){omap_hwmod_fill_resources(od->hwmods[i], res){填充 struct resource}} -> platform_device_add_resources(){pdev->resource = r;}
10、资源来源omap_hwmod:
omap_hwmod_lookup(oh_name) -> _lookup(name) -> 遍历链表omap_hwmod_list并返回struct omap_hwmod
11、被返回的返回struct omap_hwmod来至于:
MACHINE_START -> am33xx_init_early() -> am33xx_hwmod_init() -> omap_hwmod_register(){将am33xx_lcdc_hwmod添加到omap_hwmod_list链表当中}
static struct omap_hwmod am33xx_lcdc_hwmod = {
   ......
   .slaves        = am33xx_lcdc_slaves,//记录了物理起始地址
   ......
   };
12、总结:两个数据结构共同决定LCD控制寄存器的配置参数:
static struct lcd_ctrl_config lcd_cfg = {
   &disp_panel,
   .ac_bias        = 255,
   .ac_bias_intrpt        = 0,
   .dma_burst_sz        = 16,
   .bpp            = 32,
   .fdd            = 0x80,
   .tft_alt_mode        = 0,
   .stn_565_mode        = 0,
   .mono_8bit_mode        = 0,
   .invert_line_clock    = 1,
   .invert_frm_clock    = 1,
   .sync_edge        = 0,
   .sync_ctrl        = 1,
   .raster_order        = 0,
};
static struct da8xx_panel known_lcd_panels[] = {
   [2] = {
       .name = "TFC_S9700RTWV35TR_01B",
       .width = 800,
       .height = 480,
       .hfp = 39,
       .hbp = 39,
       .hsw = 47,
       .vfp = 13,
       .vbp = 29,
       .vsw = 2,
       .pxl_clk = 30000000,
       .invert_pxl_clk = 0,
   },
}

TI am335x系列(am3352)LCD驱动修改移植相关推荐

  1. TI AM335x系列处理器的工业级主板-BCM335x开发板

    BCM335x是英码科技(EMA)基于 TI AM335x系列处理器的工业级产品应用主板,主板采用核心板+底板架构,核心板HSOM335x采用沉金无铅六层板设计,底板采用沉金无铅四层板设计,均按工业级 ...

  2. TQ2440平台上LCD驱动的移植

    参考: http://liu1227787871.blog.163.com/blog/static/205363197201242393031250/ http://blog.csdn.net/cum ...

  3. uboot中LCD驱动修改

    1 综合篇 点我 2 uboot移植 点我 3 uboot lcd驱动 点我 4 kernel移植 点我 5 kernel lcd驱动 点我 6 摄像头驱动 点我 7 ubuntu base移植 点我 ...

  4. USB实现(1)-Ti AM335x系列CPU

    本文参照了Ti AM335x的技术手册. AM335x处理器提供了两个USB2.0 模块.每个USB控制器都是围绕Mentor USB OTG控制器(musbmhdrc)和TI PHY构建的.每个US ...

  5. 含关键代码!基于TI Sitara系列AM3352/AM3354/AM3359的Linux常用开发案例分享

    目    录 4. tl_can_echo案例 4.1 案例功能 4.2 操作说明 4.3 关键代码

  6. FreeBSD设备驱动管理介绍(BSP: Ti AM335x)

    这段时间一直在忙FreeBSD驱动移植的项目,因此对FreeBSD做了一定的了解,鉴于网上对于FreeBSD的设备驱动资料较少,在这里给出本人对于FreeBSD驱动管理的理解心得(主要是USB驱动管理 ...

  7. Barebox for Tiny6410(LCD驱动移植)

    一.目的 熟悉Barebox的Frame buffer框架.LCD驱动的移植和测试命令的编写. 二.主要内容 1.1 为Barebox移植基于Tiny6410的LCD驱动. 1.2 编写lcd命令测试 ...

  8. linux-2.6.32在mini2440开发板上移植 ---W35型LCD驱动移植

    转载:http://blog.csdn.net/viewsky11/article/details/11846359 编者注:本移植主要步骤还是按照手册来,里面讲解了一些有用的基础知识.但书册上提供了 ...

  9. linux在开发板LCD上显,W35型LCD驱动移植 - linux-2.6.32在mini2440开发板上移植_Linux编程_Linux公社-Linux系统门户网站...

    编者注:本移植主要步骤还是按照手册来,里面讲解了一些有用的基础知识.但书册上提供了集中屏幕的方案,我们这里主要就用一种,也就是开发板自带的W35型号.液晶驱动的源程序在src/drivers/vide ...

  10. 基于正点原子F103精英板和CubeIDE的Hal库LCD驱动移植(从零开始)

    最近在学习王维波老师的<STM32Cube高效开发教程>,王老师移植的是普中科技的驱动,而我手动移植了一下正点原子的lcd驱动,看了网上的诸多教程,有的博客存在一些bug,于是乎手动整理了 ...

最新文章

  1. linux下IO口模拟I2C的一些总结
  2. Django中HttpResponse和JsonResponse的区别和用法
  3. python 冒泡排序_Python中的冒泡排序
  4. zShowBox (图片放大展示jquery版 兼容性好)
  5. 【转载】java读取.properties配置文件的几种方法
  6. 让程序结果在屏幕上暂停一段时间
  7. mysql 闪回_MySQL数据误删除的快速解决方法(MySQL闪回工具)
  8. 学习笔记2---基本设置
  9. 新手入门概览(一):机器学习
  10. 小程序php没执行完,解决微信小程序 app onLaunch异步请求,在没有请求执行完就加载首页了的问题...
  11. telnet直接登录POP3
  12. java学生选课系统_java实现学生选课系统
  13. 基于OpenCV 人工神经网络的喷码字符识别(C++)
  14. 内存映射技术(共享内存)
  15. 【图像去噪】基于自适应布谷鸟算法优化维纳滤波器实现多光谱图像去噪附matlab代码
  16. node封装一个图片拼接插件
  17. 解决ERROR: text file '***' contains disallowed UTF-8 whitespace character(s)
  18. 现如今社群乱象,社群玩法正解
  19. ubuntu16.04 运行SVO
  20. 互斥量、临界区、信号量、事件标志组和消息邮箱(转)

热门文章

  1. MCJE魔改材质包教程
  2. 14届数独-真题标准数独-Day 5-20220120
  3. 计算机一级ps怎么保存,2017年计算机等考一级PS辅导:PS图像格式详细解说
  4. 深圳绘制SVG地图数据
  5. PS学习笔记一:跟着李涛学PS第一讲——光和色的关系
  6. 史上最全最强SpringMVC详细示例 实战
  7. arduino GPS 经纬度解析(C语言)
  8. 内存颗粒位宽和容量_内存颗粒编号与内存品牌知识介绍
  9. 如何将STVP的option bytes的配置移植到另外的电脑
  10. mbedtls 探索