首页 文章 精选 留言 我的

精选列表

搜索[linux],共10000篇文章
优秀的个人博客,低调大师

Linux DRM那些事-master设备bind

本文介绍RockPI 4A单板DRM模块master设备bind函数rockchip_drm_bind()。 文件:drivers/gpu/drm/rockchip/rockchip_drm_drv.c。 功能:完成DRM主设备的初始化,并调用所有从设备的bind函数初始化整个显示系统。 执行流程见下图: 1、drm_dev_alloc(&rockchip_drm_driver, dev) 功能:分配并初始化一个DRM设备,后续调用drm_dev_register()完成设备注册。 重点关注设备驱动实现(rockchip_drm_driver),后续配合libdrm介绍。 static struct drm_driver rockchip_drm_driver = { .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME | DRIVER_ATOMIC | DRIVER_RENDER, .preclose = rockchip_drm_preclose, .lastclose = rockchip_drm_lastclose, .get_vblank_counter = drm_vblank_no_hw_counter, .open = rockchip_drm_open, .postclose = rockchip_drm_postclose, .enable_vblank = rockchip_drm_crtc_enable_vblank, .disable_vblank = rockchip_drm_crtc_disable_vblank, .gem_vm_ops = &rockchip_drm_vm_ops, .gem_free_object = rockchip_gem_free_object, .dumb_create = rockchip_gem_dumb_create, .dumb_map_offset = rockchip_gem_dumb_map_offset, .dumb_destroy = drm_gem_dumb_destroy, .prime_handle_to_fd = drm_gem_prime_handle_to_fd, .prime_fd_to_handle = drm_gem_prime_fd_to_handle, .gem_prime_import = drm_gem_prime_import, .gem_prime_export = drm_gem_prime_export, .gem_prime_get_sg_table = rockchip_gem_prime_get_sg_table, .gem_prime_import_sg_table = rockchip_gem_prime_import_sg_table, .gem_prime_vmap = rockchip_gem_prime_vmap, .gem_prime_vunmap = rockchip_gem_prime_vunmap, .gem_prime_mmap = rockchip_gem_mmap_buf, .gem_prime_begin_cpu_access = rockchip_gem_prime_begin_cpu_access, .gem_prime_end_cpu_access = rockchip_gem_prime_end_cpu_access, #ifdef CONFIG_DEBUG_FS .debugfs_init = rockchip_drm_debugfs_init, .debugfs_cleanup = rockchip_drm_debugfs_cleanup, #endif .ioctls = rockchip_ioctls, .num_ioctls = ARRAY_SIZE(rockchip_ioctls), .fops = &rockchip_drm_driver_fops, .name = DRIVER_NAME, .desc = DRIVER_DESC, .date = DRIVER_DATE, .major = DRIVER_MAJOR, .minor = DRIVER_MINOR, } drm_开头的函数是DRM框架已实现的函数,各厂家可直接使用,无需适配。 2、drm_dev_set_unique(drm_dev, "%s", dev_name(dev)) 功能:设置DRM设备的唯一名称(dev->unique),即display-subsystem。 3、devfreq_get_devfreq_by_phandle(dev, 0) 功能:获取devfreq。 4、devm_clk_get(dev, "hdmi-tmds-pll") 功能:获取hdmi-tmds-pll时钟。 5、devm_clk_get(dev, "default-vop-pll") 功能:获取default-vop-pll时钟。 6、fence_context_alloc(1) 功能:分配1组fence contexts。 7、rockchip_drm_init_iommu(drm_dev) 功能:初始化IOMMU。 IOMMU(Input/Output Memory Management Unit):把设备访问的虚拟地址转换成物理地址。 MMU:把CPU访问的虚拟地址转换成物理地址。 8、drm_mode_config_init(drm_dev) 功能:初始化mode_config,创建DRM框架标准属性。 9、rockchip_drm_mode_config_init(drm_dev) 功能:设置rockchip mode_config的宽和高限制,注册drm_mode_config_funcs。 static const struct drm_mode_config_funcs rockchip_drm_mode_config_funcs = { .fb_create = rockchip_user_fb_create, .output_poll_changed = rockchip_drm_output_poll_changed, .atomic_check = drm_atomic_helper_check, .atomic_commit = rockchip_drm_atomic_commit, }; 10、rockchip_drm_create_properties(drm_dev) 功能:设置rockchip drm属性。 11、component_bind_all(dev, drm_dev) 功能:调用所有从设备bind驱动。 12、rockchip_attach_connector_property(drm_dev) 功能:赋值connector的属性(brightness、contrast、saturation和hue)。 brightness:亮度 contrast:对比度 saturation:饱和度 hue:色调 13、drm_vblank_init(drm_dev, drm_dev->mode_config.num_crtc) 功能:初始化vblank。 14、drm_mode_config_reset(drm_dev) 功能:复位Plane、CRTC、Encoder和Connector。 15、rockchip_drm_set_property_default(drm_dev) 功能:设置Connector的默认属性。 16、drm_kms_helper_poll_init(drm_dev) 功能:使能KMS轮询机制。 17、rockchip_gem_pool_init(drm_dev) 功能:初始化内存池。 18、of_reserved_mem_device_init(drm_dev->dev) 功能:将dts配置中预留的memory分配给device。 19、rockchip_drm_fbdev_init(drm_dev) 功能:初始化framebuffer。 20、drm_dev_register(drm_dev, 0) 功能:注册DRM设备。

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册