正在作基于Marvell 9xx 的Android平台,因为平台内核为2.6.24,而Android 1.0 Release 的是2.6.25. Android power 本对于系统来说是可选的,但为了更好的体现Android的设计思想和理念以及UI Experience, Android Power 一定要enable.
经过两天的研究,终于搞定了,还算顺利且容易.
从1.0版本来说,Android power的本质就是创建sysfs下的目录android_power 及相应的属性文件,并通过attribute的show/store来访问/设置power state/request. 但是由于2.6.24和2.6.25中对于Linux Driver Model尤其是kobject/kset/subsys及API的改变,导致向下移植时就要把power中对这些的改变作back porting,好在Android Power都集中在power.c文件中,不需要修改kobject.c/h等核心文件。大致工作如下:
(1). 把android_power看作一个subsystem, 并声明之,为init 时的注册作准备;
(2). 构建attribute_group属性组中各成员的属性 subsys_attribute 结构体(这是和2.6.25中不同的地方);
(3). 分别实现subsys_attribute中的show 和store函数(这也是2.6.24和2.6.25中有明显变化的地方,24中参数为kset,25中参数为kobject和kobj_attribute);
(4). 属性相关结构和函数准备好后,用sysfs_create_group向/sys/android_power_subsys注册即可;
(5). 正向的作好后,再在exit和错误处理中实现反向操作。
Good Luck!
appending:
ensuring the following attributes, which is important for them.
chown radio system /sys/power/state
chown radio system /sys/power/wake_lock
chown radio system /sys/power/wake_unlock
chmod 0660 /sys/power/state
chmod 0660 /sys/power/wake_lock
chmod 0660 /sys/power/wake_unlock
阅读(843) | 评论(0) | 转发(0) |