Qcom wled 方式背光控制
1 .注册部分
kernel/msm-3.18/drivers/leds/leds-qpnp-wled.c
------------------------------------------------------------------------------
static int qpnp_wled_probe(struct spmi_device *spmi)
{
.................................
INIT_WORK(&wled->work, qpnp_wled_work);
wled->ramp_ms = QPNP_WLED_RAMP_DLY_MS;
wled->ramp_step = 1;
wled->cdev.brightness_set = qpnp_wled_set;
wled->cdev.brightness_get = qpnp_wled_get;
wled->cdev.max_brightness = WLED_MAX_LEVEL_4095;
rc = led_classdev_register(&spmi->dev, &wled->cdev);
.................................
}
2. 应用部分
kernel/msm-3.18/drivers/leds/leds-qpnp-wled.c
-------------------------------------------------------------------------------
static void qpnp_wled_set(struct led_classdev *led_cdev, enum led_brightness level)
{
.................................
schedule_work(&wled->work);
................................
}
static void qpnp_wled_work(struct work_struct *work)
{
...........................................
// 设置亮度
rc = qpnp_wled_set_level(wled, level);
..........................................
// 当打开或关闭背光时,设置使能寄存器
rc = qpnp_wled_module_en(wled, wled->ctrl_base, !!level);
.........................................
}
static int qpnp_wled_set_level(struct qpnp_wled *wled, int level)
{
................................
// 写低位
reg = level & QPNP_WLED_BRIGHT_LSB_MASK;
rc = qpnp_wled_write_reg(wled, ®, QPNP_WLED_BRIGHT_LSB_REG(wled->sink_base, wled->strings[i]));
// 写高位
reg = level >> QPNP_WLED_BRIGHT_MSB_SHIFT;
reg = reg & QPNP_WLED_BRIGHT_MSB_MASK;
rc = qpnp_wled_write_reg(wled, ®, QPNP_WLED_BRIGHT_MSB_REG(wled->sink_base, wled->strings[i]));
...................................
}
static int qpnp_wled_module_en(struct qpnp_wled *wled, u16 base_addr, bool state)
{
rc = qpnp_wled_read_reg(wled, ®,
QPNP_WLED_MODULE_EN_REG(base_addr));
if (rc < 0)
return rc;
reg &= QPNP_WLED_MODULE_EN_MASK;
reg |= (state << QPNP_WLED_MODULE_EN_SHIFT);
rc = qpnp_wled_write_reg(wled, ®,
QPNP_WLED_MODULE_EN_REG(base_addr));
if (rc)
return rc;
}
static int qpnp_wled_write_reg(struct qpnp_wled *wled, u8 *data, u16 addr)
{
// 写 pmi 寄存器
rc = spmi_ext_register_writel(wled->spmi->ctrl, wled->spmi->sid, addr, data, 1);
}
kernel/msm-3.18/drivers/platform/msm/spmi/spmi.c
----------------------------------------------------------------------------
int spmi_ext_register_writel(struct spmi_controller *ctrl, u8 sid, u16 addr, u8 *buf, int len)
{
}
Qcom wled 方式背光控制相关推荐
- linux蜂鸣器控制实验,【Linux公开课】蜂鸣器使用、LCD背光控制、触摸屏校准、GPIO操作...
摘要为方便使用蜂鸣器,系统为蜂鸣器提供类似LED的操作接口,对应的操作文件是/sys/class/leds/beep/brightness.写入1使蜂鸣器鸣叫,写入0停止鸣叫- 8.12 蜂鸣器使用 ...
- 中断系统应用实例(1)用定时器T1工作方式1控制两个LED以不同周期闪烁
1.控制目标 利用定时器T1工作方式1控制两个LED以不同周期闪烁,使得LED1每秒闪烁4次(即周期为250ms),LED2每秒闪烁1次(即周期为1s). 2.控制分析 2.1 LED侧分析 若要使L ...
- MTK 平台 CABC 背光控制机制
转载自:LABC and CABC-MTK Platform 1.简介 显示屏在移动设备里一直的是耗电大户,显示屏的背光显然是电池杀手,所以拿背光"开刀"介绍两种实际应用较为可行省 ...
- LCD背光控制 brightness control
在显示器的校正中常常会涉及Gamma值.白点坐标.色温.三原色.荧光剂色度值等参数.不同的gamma值会使显示器的亮度和颜色有较大差别.gamma值较小时亮调的等级差比较大,对表现亮度的颜色有利,反之 ...
- Android应用开发(21)屏幕背光控制
Android应用开发学习笔记--目录索引 最近各手机厂商都在宣传万级调光,宣传数字越来越大,但是到底背光调节平滑度体验如何呢? 如最近realme 11 pro+ (MTK平台天玑7050),宣传2 ...
- android lcd 背光控制流程
此文章是网上看到的,在MTK平台基础上的背光控制流程的分析.个人觉得写得比较详细,于是截取部分内容转载出来. 不过话说在前头,对于lcd而言,决定显示效果的有几个因素:pwm,gama(屏幕灰度),饱 ...
- SM4350 背光控制--关闭XBL WLED
项目场景: 该项目背光有两种控制方式一种是PWM,还有一种是WLED.通过原理图我们知道WLED是由PM6150L控制的. 问题描述: 由于我们实际使用的是PWM,WLED只用于测试,因此如果不把WL ...
- linux 背光驱动程序,Linux驱动工程师成长之路 LCD背光控制RT9379B
老大说了,下周新的手机要回来了,用的是400*800的屏,到时候就由我来调这个屏了.把屏的spec和背光的spec都给了我让我先看看. 以前分析了LCD(framebuffer)的驱动框架,但是对于背 ...
- 7. 【可编程定时器8253】:外部引脚、内部结构特点、计数启动方式、6种工作方式、控制字格式、应用
文章目录 计数与定时 8253芯片特点 1. 外部引脚 2. 内部结构特点(含3个计数器.1个控制寄存器) 2. 计数启动方式(软件启动.硬件启动的定义) 3. 6种工作方式 不能自动重复计数的工作方 ...
最新文章
- how to force opened by browser
- 二十、异步调用的问题
- 事物传递机制、应用、加载时机
- hibernate jpa_JPA / Hibernate实体状态转换的初学者指南
- C#中打开设计视图时报未将对象引用设置到对象的实例
- java 模拟qq源码
- python数码时钟代码_python实现简易数码时钟
- leetcode 384 打乱数组
- 《纽约邮报》手机客户端推送系统被黑 黑客发送抒情诗
- 响应面matlab算法,结构可靠度分析的响应面法及其Matlab实现参考文件.pdf
- 拼多多微信登录服务器请求失败,拼多多管理后台登不上怎么回事?有何功能?...
- Android蓝牙通讯(服务端、客户端)
- 快速翻译PDF文档的免费方法
- 云服务器选股,【图】老师们能不能在通达信7.48中整合云行情服务器?_选股公式,股票,炒股公式,股票指标,股票论坛_股票软件技术交流论坛_理想论坛 - 股票论坛...
- 表格里面出现个别边框线粗细不同的解决
- 正交频分复用中的正交问题
- 即时通讯环信IM的集成使用
- 神经网络与深度学习(一)——机器学习基础
- 《CLR via C#》读书笔记---11事件
- linux清理页面缓存文件夹,清理Ubuntu系统的缓存、垃圾、多余内核。
热门文章
- 张家俊:关于ChatGPT八个技术问题的猜想
- latex 长公式换行括号-换行后括号大小不一致
- 在arm开发板上实现播放内存里所有的jpg和bmp格式图片
- extern “C“ 理解
- 利用python制作简单播放器
- 地址空间 (Address Space)
- Sql Server中and和or的优先级问题
- 细思恐极,黑客到底可以厉害到什么程度?
- Java005-二进制、八进制、十进制和十六进制之间的转换
- FX1N底层源码,PLSR源码,支持4路脉冲输出 总体功能和指令可能支持在RUN中下载程序,支持注释的写入和读取