本文转载自:http://blog.csdn.net/kris_fei/article/details/76919134

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),
};
  • 1
  • 2
  • 3
  • 4
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; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

如果要实现所有寄存器dump,可以添加一个选项,其他pmu模块方法一样。

最新文章

  1. DDR的前世与今生(一)
  2. C++_系列自学课程_第_12_课_语句_《C++ Primer 第四版》
  3. Spring MVC 前后端 Json 方式交互和处理
  4. 一个很好的UML工具
  5. DNS视图以及日志压力测试
  6. jquery几个常用的demo
  7. Android之发送短信的两种方式
  8. 宏定义中使用do{}while(0)的好处 (转载)
  9. PHP学习笔记6-时间/日期
  10. javascript函数式编程(一)
  11. c/c++中static的详解
  12. 关于<超文本>定义
  13. EF简单的CURD操作
  14. python三大神器之fabric(2.0新特性)
  15. 一个讲课截屏 清明DAY2
  16. Python返回函数、闭包,匿名函数
  17. poj 3278 Catch That Cow(bfs+队列)
  18. Django url分发器
  19. 11.28JavaScript学习
  20. ThinkPHP内置日志记录

热门文章

  1. PHP socket 编程中的超时设置
  2. win8激活工具,win 8激活工具,windows8激活工具,赶紧来下载咯
  3. MysqL5.7在使用mysqldump命令备份数据库报错:mysqldump: [Warning] Using a password on the command line interface can be insecure.
  4. 使用Sharesdk实现第三方平台登录(qq,新浪微博)
  5. 感受lambda之美,推荐收藏,需要时查阅
  6. linux下二机制文件的查看和编辑
  7. [转]使用Fabric自动化你的任务
  8. ceph工作原理和安装
  9. 手机加载优化 - 2x、3x图
  10. 【转载】C#之C#、.NET Framework、CLR的关系