iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >全志T3 Linux显示驱动分析
  • 305
分享到

全志T3 Linux显示驱动分析

显示驱动Linux 2023-01-31 06:01:28 305人浏览 薄情痞子
摘要

1、总体架构         全志T3处理器的显示框架是基于标准linux的帧缓冲架构,其结构如图 1.1所示。显示控制器DE的驱动架构如图 1.2所示,包括屏蔽差异的显示管理抽象层,以及显示图层驱动、显示设备驱动、背光驱动、enhance

1、总体架构

        全志T3处理器的显示框架是基于标准linux的帧缓冲架构,其结构如图 1.1所示。显示控制器DE的驱动架构如图 1.2所示,包括屏蔽差异的显示管理抽象层,以及显示图层驱动、显示设备驱动、背光驱动、enhance驱动和capture驱动。

图 1.1帧缓冲设备驱动结构

 

图 1.2显示控制器驱动架构

2、关键数据结构

    显示驱动信息总的结构体disp_drv_info如程序清单 2.1所示,包含显示驱动所有的相关信息。

程序清单 2.1

typedef struct
{
	struct device           *dev;
	uintptr_t               reg_base[DISP_MOD_NUM];
	u32                     irq_no[DISP_MOD_NUM];
	struct clk              *mclk[DISP_MOD_NUM];

	disp_init_para          disp_init;
	struct disp_manager     *mgr[DISP_SCREEN_NUM];
	struct disp_eink_manager *eink_manager[1];
	struct proc_list        sync_proc_list;
	struct proc_list        sync_finish_proc_list;
	struct ioctl_list       ioctl_extend_list;
	struct ioctl_list       compat_ioctl_extend_list;
	struct standby_cb_list  stb_cb_list;
	struct mutex            mlock;
	struct work_struct      resume_work[DISP_SCREEN_NUM];
	struct work_struct      start_work;

	u32    		              exit_mode;//0:clean all  1:disable interrupt
	bool			              b_lcd_enabled[DISP_SCREEN_NUM];
	bool                    inited;//indicate driver if init
	disp_bsp_init_para      para;
#if defined(CONFIG_ION_SUNXI)
	struct ion_client *client;
	struct ion_handle *handle;
#endif
}disp_drv_info;


        struct disp_manager是管理抽象层的数据结构体,可以看到包含设备驱动、smbl驱动、enhance驱动、cptr驱动、图层驱动以及管理层的相关操作接口,并且disp_drv_info中包含有struct disp_manager类型的成员。

程序清单 2.2

struct disp_manager {
	
	char name[32];
	u32 disp;
	u32 num_chns;
	u32 num_layers;
	struct disp_device *device;
	struct disp_smbl *smbl;
	struct disp_enhance *enhance;
        struct disp_capture *cptr;

	struct list_head lyr_list;

	#ifdef SUPPORT_WB
	wait_queue_head_t write_back_queue;
	u32 write_back_finish;
	#endif

	
	s32 (*enable)(struct disp_manager *mgr);
	s32 (*sw_enable)(struct disp_manager *mgr);
	s32 (*disable)(struct disp_manager *mgr);
	s32 (*is_enabled)(struct disp_manager *mgr);
	s32 (*blank)(struct disp_manager *mgr, bool blank);

	
	s32 (*init)(struct disp_manager *mgr);
	s32 (*exit)(struct disp_manager *mgr);

	s32 (*set_back_color)(struct disp_manager *mgr,	struct disp_color *bk_color);
	s32 (*get_back_color)(struct disp_manager *mgr,	struct disp_color *bk_color);
	s32 (*set_color_key)(struct disp_manager *mgr, struct disp_colorkey *ck);
	s32 (*get_color_key)(struct disp_manager *mgr, struct disp_colorkey *ck);

	s32 (*get_screen_size)(struct disp_manager *mgr, u32 *width, u32 *height);
	s32 (*set_screen_size)(struct disp_manager *mgr, u32 width, u32 height);
	s32 (*get_clk_rate)(struct disp_manager *mgr);

	
	s32 (*check_layer_zorder)(struct disp_manager *mgr, struct disp_layer_config *config, u32 layer_num);
	s32 (*set_layer_config)(struct disp_manager *mgr, struct disp_layer_config *config, unsigned int layer_num);
	s32 (*force_set_layer_config)(struct disp_manager *mgr, struct disp_layer_config *config, unsigned int layer_num);
	s32 (*force_set_layer_config_exit)(struct disp_manager *mgr);
	s32 (*get_layer_config)(struct disp_manager *mgr, struct disp_layer_config *config, unsigned int layer_num);
	s32 (*extend_layer_config)(struct disp_manager *mgr, struct disp_layer_config *info, unsigned int layer_num);
	s32 (*set_output_color_range)(struct disp_manager *mgr, u32 color_range);
	s32 (*get_output_color_range)(struct disp_manager *mgr);
	s32 (*update_color_space)(struct disp_manager *mgr);

	s32 (*apply)(struct disp_manager *mgr);
	s32 (*force_apply)(struct disp_manager *mgr);
	s32 (*update_regs)(struct disp_manager *mgr);
	s32 (*sync)(struct disp_manager *mgr);
	s32 (*tasklet)(struct disp_manager *mgr);

	
	s32 (*dump)(struct disp_manager *mgr, char *buf);
};

3、显示驱动初始化流程

        显示驱动初始化总体流程如图 3.1所以,驱动注册为Linux的平台设备,初始化入口是disp_probe。在disp_probe中首先从dtb中获取显示驱动相关的一些参数比如寄存器基地址、中断号、时钟等,然后调用disp_init接口。disp_init接口主要进行一些系统相关的参数、接口初始化,显示控制器DE驱动初始化(bsp_disp_init),LCD设备初始化,fb缓存初始化,最后通过start_process启动显示。

 

图 3.1 显示驱动初始化总体流程

 

图 3.2 显示控制器驱动初始化

 

    bsp_disp_init完成显示控制器DE的驱动初始化,主要的动作如图 3.2所示:

  1. 初始化全局变量gdisp中的init_para参数;

  2. 初始化显示控制器DE的默认参数;

  3. 挂接中断处理中tasklet处理函数;

  4. 设置显示打印等级;

  5. 初始化显示控制器DE的抽象图层驱动;

  6. 初始化显示控制器DE的lcd设备抽象驱动;

  7. 初始化显示控制器DE的管理层驱动;

  8. 初始化显示控制器DE的enhance驱动;

  9. 初始化显示控制器DE的背光控制驱动;

  10. 初始化显示控制器DE的capture驱动;

  11. 将管理层驱动与抽象图层、lcd设备驱动、enhance驱动、背光控制驱动、capture驱动关联起来。



--结束END--

本文标题: 全志T3 Linux显示驱动分析

本文链接: https://www.lsjlt.com/news/190372.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 全志T3 Linux显示驱动分析
    1、总体架构         全志T3处理器的显示框架是基于标准Linux的帧缓冲架构,其结构如图 1.1所示。显示控制器DE的驱动架构如图 1.2所示,包括屏蔽差异的显示管理抽象层,以及显示图层驱动、显示设备驱动、背光驱动、enhance...
    99+
    2023-01-31
    显示驱动 Linux
  • linux中Intel 845集成显示驱动下载的示例分析
    这篇文章将为大家详细讲解有关linux中Intel 845集成显示驱动下载的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。82845 linux intel集成显卡驱动下载驱动地址:http://...
    99+
    2023-06-13
  • linux驱动程序开发的示例分析
    这篇文章主要为大家展示了“linux驱动程序开发的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux驱动程序开发的示例分析”这篇文章吧。前提,一般来说内核代码的错误可能会引起一个用...
    99+
    2023-06-13
  • Linux设备驱动开发的示例分析
    今天就跟大家聊聊有关Linux设备驱动开发的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。编译和运行驱动编译要用到kernel的Makefile文件 — ...
    99+
    2023-06-28
  • linux驱动中并发与竟态的示例分析
    小编给大家分享一下linux驱动中并发与竟态的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首先什么是并发与竟态呢?并发(concurrency)指的是多...
    99+
    2023-06-19
  • Linux中日志的示例分析
    这篇文章主要介绍Linux中日志的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!日志的三种类型#内核及系统日志:这种日志数据由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf...
    99+
    2023-06-27
  • linux驱动之Kconfig文件和Makefile文件的示例分析
    小编给大家分享一下linux驱动之Kconfig文件和Makefile文件的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!linux 驱动之Kconfig文件和Makefile文件实例在Linux编写驱动的过程中,...
    99+
    2023-06-09
  • 如何解决Linux装完显卡驱动后分辨率显示不正常问题
    本篇内容主要讲解“如何解决Linux装完显卡驱动后分辨率显示不正常问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决Linux装完显卡驱动后分辨率显示不正常问题”吧!  驱动安装:  这...
    99+
    2023-06-13
  • mysql.data.dll驱动各版本的示例分析
    这篇文章主要介绍mysql.data.dll驱动各版本的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!此处为mysql驱动mysql.data.dll注意:此处X86版本较多...
    99+
    2024-04-02
  • vue数据驱动原理的示例分析
    这篇文章给大家分享的是有关vue数据驱动原理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue数据驱动原理是:采用数据劫持结合发布者和订阅者模式,通过“Object.defineProperty()”...
    99+
    2023-06-29
  • SecureCRT自动记录日志的示例分析
    这期内容当中小编将会给大家带来有关SecureCRT自动记录日志的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。现在管理的数据库数量多,实时性强,经常遇到数据库突发事件,每次做的关键步骤操作我都保...
    99+
    2023-06-06
  • Linux下rsyslog日志服务的示例分析
    这篇文章主要介绍了Linux下rsyslog日志服务的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Linux上的Syslog(系统日志协议)服务可以充当网络上的企业...
    99+
    2023-06-27
  • 数据库日志分析:数据驱动的洞察与决策
    收集和预处理日志数据 数据库日志文件包含有关数据库活动和事件的大量信息。日志数据可以从数据库服务器或应用程序收集,并预处理以使其适合分析。这可能包括: 提取相关信息:从日志文件中提取与性能、错误和安全相关的数据。 规范化数据:将数据转换...
    99+
    2024-04-02
  • Vue模拟实现数据驱动的示例分析
    这篇文章主要为大家展示了“Vue模拟实现数据驱动的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue模拟实现数据驱动的示例分析”这篇文章吧。一、前言之...
    99+
    2024-04-02
  • linux启动流程的示例分析
    这篇文章将为大家详细讲解有关linux启动流程的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。linux启动流程简介我们都知道,由于linux的稳定性,通常被作为服务器系统,要想称为一个PHP的高...
    99+
    2023-06-09
  • Linux启动脚本的示例分析
    这篇文章主要介绍Linux启动脚本的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!redhat的启动方式和执行次序是:加载内核执行init程序/etc/rc.d/rc.sysinit # 由init执行的**...
    99+
    2023-06-17
  • Linux启动过程的示例分析
    这篇文章主要为大家展示了“Linux启动过程的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux启动过程的示例分析”这篇文章吧。Linux启动过程详细介绍启动第一步--加载BIOS...
    99+
    2023-06-09
  • JDBC注册驱动和获取连接的示例分析
    小编给大家分享一下JDBC注册驱动和获取连接的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! JDBC 注册驱动,获取...
    99+
    2024-04-02
  • Linux中启动与自启动的示例分析
    这篇文章将为大家详细讲解有关Linux中启动与自启动的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Linux启动与自启动的实例详解一 启动与自启动服务启动:就是在当前系统中让服务运行,并提供功能...
    99+
    2023-06-09
  • Linux中shell脚本输出日志的示例分析
    这篇文章给大家分享的是有关Linux中shell脚本输出日志的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、日志方法简介:#日志名称log="./upgrade.log" ...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作