RK1808 DRM 驱动流程分析

本文深入剖析RK1808 DRM驱动的启动流程,涉及mipi_dsi_probe和vop_probe阶段,解析设备树资源,建立组件支持。接着在rockchip_drm_platform_probe中,遍历ports并初始化组件框架。rockchip_drm_bind阶段完成drm设备初始化及子设备绑定。vop_bind和dw_mipi_dsi_bind则分别负责plane和crtc、encoder、connector的设置,最终形成完整显示系统。
摘要由CSDN通过智能技术生成

rockchip drm驱动的启动流程图:

 

第一阶段:

mipi_dsi_probe

res = platform_get_resource(pdev, IORESOURCE_MEM, 0); //获取内存资源

dsi->irq = platform_get_irq(pdev, 0); //获取中断资源

dsi->pclk = devm_clk_get(dev, "pclk"); //获取pclk

dsi->regmap = devm_regmap_init_mmio(dev, regs, //初始化内存管理映射

ret = mipi_dphy_attach(dsi); //找到对应的phy

       dphy->phy = devm_phy_optional_get(dev, "mipi_dphy"); //根据char找到dphy

       ret = mipi_dsi_host_register(&dsi->dsi_host); //注册dsi host

              of_mipi_dsi_device_add(host, node); //建立dsi device 结构体

      component_add(dev, &dw_mipi_dsi_ops); //将mipi dsi 的componet 添加到list 中,供componet master调用其注册的回调函数dw_mipi_dsi_bind。

总结: mipi_dsi_probe 主要是将设备树中的资源解析出来 建立dsi dev ,最后完成component 框架的支持。

vop_probe

          component_add(dev, &vop_component_ops); //将vop的componet添加到list中,供 componet master调用其注册的回调函数vop_bind。

总结: vop_probe 就是添加了对component 框架的支持。

第二阶段:

rockchip_drm_platform_probe

port = of_parse_phandle(np, "ports", i); //遍历subsys 下的ports属性

component_match_add(dev, &match, compare_of, port->parent)

Linux DRM(Direct Rendering Manager)驱动是Linux操作系统中用于显卡和显示设备管理的驱动程序。它提供了一套统一的接口,使得用户可以通过应用程序直接访问显卡硬件,实现图形渲染和硬件加速等功能。 Linux DRM驱动包括了核心驱动模块和设备驱动模块。核心驱动模块负责提供基本的显卡管理功能,如内存分配、模式设置和渲染命令队列等。设备驱动模块负责支持特定显卡和显示设备的硬件特性和功能。通过这种模块化的设计,Linux DRM驱动能够支持多种显卡和显示设备。 在分析Linux DRM驱动时,可以从以下几个方面入手: 1. 驱动架构:了解Linux DRM驱动的整体架构,包括核心驱动模块和设备驱动模块的功能和交互方式。 2. 设备支持:分析特定显卡和显示设备的驱动模块,了解其支持的硬件特性和功能。 3. 内存管理:了解Linux DRM驱动中的内存管理机制,包括内存分配、显存管理和页面交换等。 4. 渲染和硬件加速:分析Linux DRM驱动中的渲染命令队列和硬件加速功能的实现方式。 5. 显示管道:了解Linux DRM驱动中的显示管道管理机制,包括模式设置和输出控制等。 通过对Linux DRM驱动分析,可以更深入地理解显卡和显示设备的工作原理,为开发应用程序和调优系统性能提供指导和参考。此外,还可以通过分析和改进Linux DRM驱动来实现新的显卡和显示设备的支持,提升系统的兼容性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值