硬件平台:RK3128

Android版本:6.0

Kernel版本:3.10.92

首先来看pwm配置:

        pwm1: pwm@20050010 {compatible = "rockchip,rk-pwm";reg = <0x20050010 0x10>;#pwm-cells = <2>;pinctrl-names = "default";pinctrl-0 = <&pwm1_pin>;clocks = <&clk_gates7 10>;clock-names = "pclk_pwm";status = "okay";};

Backlight配置:

    backlight: backlight {compatible = "pwm-backlight"; //匹配名pwms = <&pwm1 0 25000>;  //第一个参数表示使用pwm1来控制背光;第二个参数0表示index,因为pwm1下只有一个PWM,所以一直是0;第三个参数表示周期为25000ns,所以频率就是40k。brightness-levels = <0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1516 17 18 19 20 21 22 23 24 25 26 27 2829 30 31 32 33 34 35 36 37 38 39 40 4142 43 44 45 46 47 48 49 50 51 52 53 5455 56 57 58 59 60 61 62 63 64 65 66 6768 69 70 71 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 90 91 92 9394 95 96 97 98 99 100 101 102 103 104 105106 107 108 109 110 111 112 113 114 115 116117 118 119 120 121 122 123 124 125 126 127128 129 130 131 132 133 134 135 136 137 138139 140 141 142 143 144 145 146 147 148 149150 151 152 153 154 155 156 157 158 159 160161 162 163 164 165 166 167 168 169 170 171172 173 174 175 176 177 178 179 180 181 182183 184 185 186 187 188 189 190 191 192 193194 195 196 197 198 199 200 201 202 203 204205 206 207 208 209 210 211 212 213 214 215216 217 218 219 220 221 222 223 224 225 226227 228 229 230 231 232 233 234 235 236 237238 239 240 241 242 243 244 245 246 247 248249 250 251 252 253 254 255>;  //背光等级default-brightness-level = <128>;  //默认背光等级enable-gpios = <&gpio0 GPIO_D2 GPIO_ACTIVE_LOW>;  //使能脚};

注册流程:

kernel/drivers/video/backlight/pwm_bl.c

pwm_backlight_probe

-> pwm_backlight_parse_dt

-> gpio_request_one        //申请使能gpio

-> devm_pwm_get//获取一个PWM

-> pwm_request //申请PWM

-> pwm_set_period //设置周期

-> dev_set_name //设置名字

-> backlight_device_register //注册backlight设备

-> backlight_update_status //注册完成后,更新背光

-> bd->ops->update_status  //通过backlight_ops调用pwm_backlight_update_status

-> pwm_backlight_update_status

-> compute_duty_cycle  //计算占空比

-> pwm_config //配置pwm

-> pwm_backlight_power_on //打开背光。

设置背光时,上层会通过sys文件系统读写/sys/class/backlight/rk28_bl/brightness:

hardware/rockchip/liblights/lights.cpp

set_backlight_light ->

write_int ->

backlight_store_brightness  ->

backlight_update_status

之后流程就跟注册时一样了。

另外在亮屏灭屏时会调用fb_notifier_callback:

static int fb_notifier_callback(struct notifier_block *self,unsigned long event, void *data)
{struct backlight_device *bd;struct fb_event *evdata = data;/* If we aren't interested in this event, skip it immediately ... */if (event != FB_EVENT_BLANK && event != FB_EVENT_CONBLANK)return 0;bd = container_of(self, struct backlight_device, fb_notif);mutex_lock(&bd->ops_lock);if (bd->ops)if (!bd->ops->check_fb ||bd->ops->check_fb(bd, evdata->info)) {bd->props.fb_blank = *(int *)evdata->data;if (bd->props.fb_blank == FB_BLANK_UNBLANK)bd->props.state &= ~BL_CORE_FBBLANK;    //亮屏elsebd->props.state |= BL_CORE_FBBLANK;    //灭屏backlight_update_status(bd);}mutex_unlock(&bd->ops_lock);return 0;
}

[RK3128][Android 6.0] PWM backlight注册及调用流程相关推荐

  1. android serviceconnection 码源分析,Android 7.0以上Accessibility Service DispatchGesture调用流程...

    概述 Accessibility Service被广泛用于各类自动点击的app,但早期,它并没有提供丰富的API,受到控件的高度约束,能达成的效果与Instrumentation相去甚远. Andro ...

  2. android app启动流程分析,Android应用开发之Android 7.0 Launcher3的启动和加载流程分析...

    本文将带你了解Android应用开发Android 7.0 Launcher3的启动和加载流程分析,希望本文对大家学Android有所帮助. Android 7.0 Launcher3的启动和加载流程 ...

  3. Android 7.0 Launcher3的启动和加载流程分析----转载

     Android 7.0 Launcher3的启动和加载流程分析,Launcher的本质就是一个普通应用,它比普通应用多配置了Category的Android:name="android ...

  4. [RK3288][Android6.0] PWM backlight 驱动流程小结

    Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92 背光的亮暗通过pwm控制,驱动在文件pwm-rockchip.c中,这里不做描述. dts各个配置参数 ...

  5. [RK3128][Android 6.0] u-blox GPS芯片 MAX-7Q调试记录

    硬件平台:RK3128 Android版本:6.0 Kernel版本:3.10.92 最近调试一款gps芯片,u-blox的MAX-7Q,支持I2C及UART接口,由于UART口不够用,只能用I2C接 ...

  6. Android 4.0 ICS SystemUI浅析——SystemUI启动流程

    阅读Android 4.0源码也有一段时间了,这次是针对SystemUI的一个学习过程.本文只是对SystemUI分析的一个开始--启动流程的分析,网上有很多关于2.3的SystemUI的分析,可4. ...

  7. Android 7.0 ActivityManagerService(5) 广播(Broadcast)相关流程分析

    本篇博客旨在分析Android中广播相关的源码流程. 一.基础知识 广播(Broadcast)是一种Android组件间的通信方式. 从本质上来看,广播信息的载体是intent.在这种通信机制下,发送 ...

  8. Android 7.0 Launcher3的启动和加载流程分析

    本文的分析基于MTK提供的Android 7.0源码,并非Google官方提供的源码,其中可能有一些小的差异,还望谅解. Launcher的本质就是一个普通应用,它比普通应用多配置了Category的 ...

  9. Android 8.0 学习(23)---recovery 流程分析

    Android 8.0 recovery 流程分析 这里主要分析non A/B模式下的recovery流程  A/B模式下的recovery在boot中  后续会不断补充,如果有疏漏或者错误的地方,请 ...

最新文章

  1. 《细胞》重磅!科学家培育全球首个人类自组织心脏类器官,可自主跳动能自我修复...
  2. 动作分析 姿态估计_关于大片人物特效少不了的人体姿态估计,这里有一份综述文章...
  3. java类定义的顺序_Java类及对象的初始化顺序
  4. 如何在柱状图中点连线_练瑜伽,如何放松僵硬紧张的髂腰肌?
  5. 2021算法竞赛入门班第八节课【数学】习题
  6. php页面栏目访问权限,PHPCMS 栏目和内容浏览权限的解决方法
  7. jquery基本操作
  8. debian常用工具所在的包
  9. spring注解配置quartz
  10. java毫秒 mysql秒_MySQL和Java时间毫秒之间的转换问题的总结
  11. otc焊接机器人编程模拟软件_OTC机器人编程
  12. Maven超级详细安装教程ovo
  13. 山地车中轴进水表现_解决山地车令人讨厌的中轴异响及其他异响问题
  14. vue实现搜索框记录搜索历史_Vue 实现输入框新增搜索历史记录功能
  15. 电脑开机后黑屏的解决办法
  16. android 蓝牙发送失败怎么办,【报Bug】蓝牙模块CC2640R2F 安卓发送数据包第二次发送不成功{code:10007,message:property not support}...
  17. 计算机组成原理实验一报告——运算器
  18. 【微信小程序开发】IOS与安卓样式兼容问题
  19. Zotero使用指南04:群组功能
  20. Java学习必备武林秘籍,大侠请收好!

热门文章

  1. Vue路由的动态添加和缓存
  2. 【ACM】算法题-阿尔法GO的缺陷(深度搜索解法)(C++)
  3. mysql全文索引中英文混合_MySQL 英文全文搜索和中文全文搜索 (FULLTEXT)
  4. 布朗大学计算机研究生申请,布朗大学计算机科学理学硕士研究生申请要求及申请材料要求清单...
  5. 【全链路追踪】全链路追踪介绍
  6. 对弧长和坐标的曲线积分
  7. nc提示java过期_用友NC系统使用过程中常见问题和解决方法!财会必看!
  8. pdf解析,获取字段数据
  9. 如何做推广引流?教你利用音频长期被动引流
  10. 【号外】支付宝小程序,惊呆我的小伙伴