- 博客(431)
- 资源 (35)
- 收藏
- 关注
原创 Linux内核4.14版本——ccf时钟子系统(7)——如何编写一个clock驱动
定义分配一个 struct clk_onecell_data 结构体,里面是该硬件支持的所有的struct clk的集合。后面供 of_clk_add_provider使用。该结构体里面有struct clk_ops,和Fixed rategateDividerMuxcomposite六类时钟有关系,适配就行。(1)
2024-11-30 15:30:55
712
原创 Linux内核4.14版本——ccf时钟子系统(6)——DTS相关的API
再回到第2章DTS相关的介绍,clock driver使用一个DTS node描述一个clock provider,而clock consumer则会使用类似“clocks = , ;”的形式引用,clock framework会自行把这些抽象的数字转换成实际的struct clk结构,怎么做的呢?肯定离不开clock provider的帮助。
2024-11-30 15:28:24
963
原创 Linux内核4.14版本——ccf时钟子系统(5)——通用API
clk_core_prepare 函数用于准备时钟源。,由clk_get、devm_clk_get、clk_get_sys、of_clk_get、of_clk_get_by_name、of_clk_get_from_provider等接口负责实现,这里以clk_get为例,分析其实现过程(位于drivers/clk/clkdev.c中)。最终调用__of_clk_get-->__of_clk_get_from_provider,__of_clk_get_from_provider函数我们后面介绍。
2024-11-30 15:05:46
738
原创 Linux内核4.14版本——ccf时钟子系统(4)——各类时钟的注册API
从前文中我们知道,ccf根据不同时钟的特点,clock framework 将 clock 分为六类,Linux 内核将上面六类设备特点抽象出不同的结构图,我们看一下这些类的注册函数。结合上文介绍的API接口,和这些接口在kernel中的调用关系,得到如下的函数调用关系图。从图上看,clk_register是所有register接口的共同实现,负责将clock注册到kernel,并返回代表该clock的struct clk指针。
2024-11-30 14:55:59
1002
原创 Linux内核4.14版本——ccf时钟子系统(3)——ccf一些核心结构体
在后续的clk_set_rate接口中,会再次使用该flag,如果置位,则会在设置rate时,传递到parent clock,因此parent clock的rate可能会重设。(2)strutc clk_hw包含一个重要的结构体成员const struct clk_init_data *init,里面包含了注册进入内核的时钟的具体操作方法,struct clk_init_data 包含一个重要成员clk_ops,里面就是时钟设备的具体操作方法函数。,判断clock是否已经prepared。
2024-11-30 14:49:11
887
原创 Linux内核4.14版本——ccf时钟子系统(2)——DTS配置
上文已经介绍了一些provider和consumer的DTS,本文具体介绍一下。
2024-11-30 14:43:13
921
原创 Linux内核4.14版本——ccf时钟子系统(1)——简介
(3) clk_get_rate/clk_set_rate/clk_round_rate,clock频率的获取和设置,其中clk_set_rate可能会不成功(例如没有对应的分频比),此时会返回错误。那么问题来了,clocks关键字中,样式的字段是怎么来的?(5) of_clk_get、of_clk_get_by_name、of_clk_get_from_provider,device tree相关的接口,直接从相应的DTS node中,以index、name等为索引,获取clock.
2024-11-30 14:29:27
1153
原创 GD25LQ256D后16M访问问题
测试发现,GD25LQ256D 在使用GD25LQ256D的时候发现,使用B7指令将flash切换到4字节地址后,如果访问的区间跨过了16M的界限,则读到的数据还是前16M的。0xC8,0x1A,0x61,0xD9都是对的,但0xff,0xff,0xff,0xff却是存储在0x00000000地址内的数据,如图1.如果直接访问后16M地址,则结果是正常的,如图2所示。GD25LQ256D,GD25LQ256C就是这样的设计,16M循环。GD25LQ256E不是。
2024-01-02 11:13:37
578
原创 Linux内核4.14版本——drm框架分析(13)——DRM_IOCTL_MODE_SETPLANE(drm_mode_setplane)
drm
2023-09-13 16:55:40
1083
原创 Linux内核4.14版本——drm框架分析(12)——DRM_IOCTL_MODE_SETCRTC(drm_mode_setcrtc)
drm
2023-09-13 16:55:20
1733
1
原创 Linux内核4.14版本——drm框架分析(11)——DRM_IOCTL_MODE_ADDFB2(drm_mode_addfb2)
书接上回,使用drmIoctl(fd, DRM_IOCTL_MODE_CREATE_DUMB, &create)接口创建了一块内存放在了gem cma的对象里。gem obj创建之后需要与一块drm_framebuffer进行绑定使用,因为最终刷图使用的是fb。使用下面接口会创建drm_framebuffer并与上节创建的gem obj进行绑定。目前使用较多的就是drm_mode_addfb2接口,该接口完成了下面的功能。
2023-09-13 16:50:58
1201
原创 Linux内核4.14版本——drm框架分析(10)——DRM_IOCTL_MODE_CREATE_DUMB(drm_mode_create_dumb_ioctl)
drm
2023-09-13 16:47:46
929
原创 Linux内核4.14版本——drm框架分析(9)——DRM_IOCTL_MODE_GETCONNECTOR(drm_mode_getconnector)
drm
2023-06-20 10:53:42
2769
原创 Linux内核4.14版本——drm框架分析(8)——DRM_IOCTL_MODE_GETRESOURCES(drm_mode_getresources)
drm
2023-06-20 10:45:10
749
原创 Linux内核4.14版本——drm框架分析(6)——实例注册drm device/ encoder/crtc/plane/connector等
drm框架
2023-06-08 14:12:51
1669
原创 Linux内核4.14版本——I2C子系统(4)_I2C示例(i2c-designware-platdrv.c和at24.c)
i2c-designware-platdrv.c简单分析
2022-11-09 14:54:48
1644
2
原创 Linux内核4.14版本——alsa框架分析(19)——DAPM(10)——dapm事件机制(dapm event)
前面的六篇文章,我们已经讨论了dapm关于动态电源管理的有关知识,包括widget的创建和初始化,widget之间的连接以及widget的上下电顺序等等。本章我们准备讨论dapm框架中的另一个机制:事件机制。通过dapm事件机制,widget可以对它所关心的dapm事件做出反应,这种机制对于扩充widget的能力非常有用,例如,对于那些位于codec之外的widget,好像喇叭功放、外部的前置放大器等等,由于不是使用codec内部的寄存器进行电源控制,我们就必须利用dapm的事件机制,获得相应的......
2022-07-10 18:38:10
1060
原创 Linux内核4.14版本——alsa框架分析(18)——DAPM(9)——精髓所在,牵一发而动全身
设计dapm的主要目的之一,就是希望声卡上的各种部件的电源按需分配,需要的就上电,不需要的就下电,使得整个音频系统总是处于最小的耗电状态,最主要的就是,这一切对用户空间的应用程序是透明的,也就是说,用户空间的应用程序无需关心那个部件何时需要电源,它只要按需要设定好音频路径,播放音频数据,暂停或停止,dapm框架会根据音频路径,完美地对各种部件的电源进行控制,而且精确地按某种顺序进行,防止上下电过程中产生不必要的pop-pop声。这就是本章我们需要讨论的内容。统计widget连接至端点widg......
2022-07-10 18:34:10
1044
原创 Linux内核4.14版本——alsa框架分析(16)——DAPM(7)——图解kconrtol/widget/route/path构造过程
图解kconrtol/widget/route/path构造过程
2022-07-10 18:15:56
842
原创 Linux内核4.14版本——alsa框架分析(15)——DAPM(6)——建立widget之间的连接关系
目录1. 创建widget:snd_soc_dapm_new_controls2. 为widget建立dapm kcontrol2.1 snd_soc_dapm_new_widgets函数 2.2 dapm mixer kcontrol2.3 dapm mux kcontrol2.4 dapm pga kcontrol2.5 dapm_create_or_share_mixmux_kcontrol函数3. 为widget建立连接关系 前面我们主要着重于codec、platform、machi
2022-07-10 18:05:16
1047
eMMC协议官方文档
2020-12-07
RTSP协议中文版_111.zip
2020-05-27
Android框架揭秘_李白.pdf
2017-04-22
Android框架揭秘.pdf
2017-04-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人