[RK3288][Android6.0] 调试笔记 --- pmu(rk818)寄存器读写
来源:互联网 发布:华润邮箱域名 编辑:程序博客网 时间:2024/06/11 08:29
Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
rk的pmu模块只提供了每次单个寄存器的读写,驱动提供了这个节点供使用:/sys/rk818/rk818_test
举例:
- 读取:
echo r 0x23 > /sys/rk818/rk818_test: 读取地址 0x23 的值,r 表示读;
- 写入:
echo w 0x23 0x7f > /sys/rk818/rk818_test: 对地址 0x23 赋值为 0x7f, w 表示写。
代码实现部分:
rk818.c
static struct rk818_attribute rk818_attrs[] = { /* node_name permision show_func store_func */ __ATTR(rk818_test, S_IRUGO | S_IWUSR, rk818_test_show, rk818_test_store),};
static ssize_t rk818_test_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t n){ u32 getdata[8]; u8 regAddr; u8 data; char cmd; const char *buftmp = buf; struct rk818 *rk818 = g_rk818; /** * W Addr(8Bit) regAddr(8Bit) data0(8Bit) data1(8Bit) data2(8Bit) data3(8Bit) * :data can be less than 4 byte * R regAddr(8Bit) * C gpio_name(poweron/powerhold/sleep/boot0/boot1) value(H/L) */ sscanf(buftmp, "%c ", &cmd); printk("------zhangqing: get cmd = %c\n", cmd); switch (cmd) { case 'w': sscanf(buftmp, "%c %x %x ", &cmd, &getdata[0], &getdata[1]); regAddr = (u8)(getdata[0] & 0xff); data = (u8)(getdata[1] & 0xff); printk("get value = %x\n", data); rk818_i2c_write(rk818, regAddr, 1, data); rk818_i2c_read(rk818, regAddr, 1, &data); printk("%x %x\n", getdata[1], data); break; case 'r': sscanf(buftmp, "%c %x ", &cmd, &getdata[0]); printk("CMD : %c %x\n", cmd, getdata[0]); regAddr = (u8)(getdata[0] & 0xff); rk818_i2c_read(rk818, regAddr, 1, &data); printk("%x %x\n", getdata[0], data); break; default: printk("Unknown command\n"); break; } return n;}
如果要实现所有寄存器dump,可以添加一个选项,其他pmu模块方法一样。
阅读全文
2 0
- [RK3288][Android6.0] 调试笔记 --- pmu(rk818)寄存器读写
- [RK3288][Android6.0] 移植笔记 --- RK818配置不正确导致无法开机调试
- [RK3288][Android6.0] PMIC之RK818硬件部分小结
- [RK3288][Android6.0] PMIC之RK818配置说明
- [RK3288][Android6.0] PMIC之RK818驱动小结
- [RK3288][Android6.0] 调试笔记 --- RT5640播放时的Codec寄存器列表
- [RK3288][Android6.0] 调试笔记 --- RT5640录音时的Codec寄存器列表
- [RK3288][Android6.0] 调试笔记 --- 调试串口的更换
- [RK3288][Android6.0] 通用访问系统寄存器
- [RK3288][Android6.0] 调试笔记 --- 移除锁屏功能
- [RK3288][Android6.0] 调试笔记 --- Su添加密码登陆功能
- [RK3288][Android6.0] 调试笔记 --- 伪电池驱动添加
- [RK3288][Android6.0] 调试笔记 --- 普通串口的添加
- [RK3288][Android6.0] 调试笔记 --- PreviewCallback获取NV12格式数据
- [RK3288][Android6.0] 调试笔记 --- 替换系统签名
- [RK3288][Android6.0] 调试笔记 --- 设置中文为默认输入法
- [RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED
- [RK3288][Android6.0] 调试笔记 --- apk安装添加黑名单
- Common Subsequence||HDU1159
- RocketMQ存储篇——MapedFileQueue
- 小程序-初学篇
- 面试题55. 表示数值的字符串
- [Mark] python 聚类分析 kmeans() 函数使用时报错
- [RK3288][Android6.0] 调试笔记 --- pmu(rk818)寄存器读写
- 网易校招编程题之藏宝图
- 关键字的作用及区别汇总
- [LeetCode]459. Repeated Substring Pattern
- It is currently in use by another gradle instance
- 在 Visual Studio Code 中使用Git
- 快递手持终端是什么?
- Sublime Text3工具使用盘点
- html的浮动按钮