设为首页 加入收藏

TOP

Android平台6410背光修改
2014-11-24 07:51:31 来源: 作者: 【 】 浏览:0
Tags:Android 平台 6410 背光 修改

装机的MID亮度不够,特别是看些视频文件时很不清晰。实际测得输出PWM的GPF15电压不够,仅0.4伏,要求上应该要达到跟WINCE一样的2.8V,才适合供给U7位的MP1528。


在内核CODE中查找PWM相关文件,找到s3c6410_timer_setup函数是设置PWM通道和分频比等相关函数的调用。恰好该函数在s3cfb_set_brightness中被调用,设置tcnt的值由1000到500,即可达效果。


补充一点:关于如何让系统不会进入待机睡眠状态的一种机制:终端中用以下命令echo "1" > /sys/power/wake_lock。


=============================================================================


(1)寻找到背光调节的CODE:在packages\apps\Settings\src\com\android\settings的BrightnessPreference.java中:


private void setBrightness(int brightness) {


........


hardware.setBacklights(brightness);


}


(2)寻找到硬件服务的CODE:frameworks\base\services\java\com\android\server\HardwareService.java中:


public void setBacklights(int brightness) {


........


setLightBrightness_UNCHECKED(LIGHT_ID_BACKLIGHT, brightness); //注意其中的ID号


}


其中函数定义:


void setLightBrightness_UNCHECKED(int light, int brightness)


{
int b = brightness & 0x000000ff;
b = 0xff000000 | (b << 16) | (b << 8) | b;
setLight_native(mNativePointer, light, b, LIGHT_FLASH_NONE, 0, 0);


}


调用的是native的设备light的函数,并传入参数LIGHT_ID_BACKLIGHT,和亮度。


(3)本地设定的native用于设定亮度的函数在:\hardware\s3c6410\liblights\lights.c中:


static struct hw_module_methods_t lights_module_methods = {
.open = open_lights,
};


其中:


static int open_lights(const struct hw_module_t* module, char const* name,
struct hw_device_t** device)


{


........


if (0 == strcmp(LIGHT_ID_BACKLIGHT, name)) { //注意其ID号与上面是一致的
set_light = set_light_backlight;
}


}


实现函数是:


set_light_backlight(struct light_device_t* dev, struct light_state_t const* state)
{
int err = 0;
int brightness = rgb_to_brightness(state);
pthread_mutex_lock(&g_lock);
g_backlight = brightness;
err = write_int("/sys/class/leds/lcd-backlight/brightness", brightness);
if (g_haveTrackballLight) {
handle_trackball_light_locked(dev);
}
pthread_mutex_unlock(&g_lock);
return err;
}


其中write_int的参数sys/class/leds/lcd-backlight/brightness是linux系统默认的设备驱动模型的参数。可以通过在MID终端里面查看到。比如:cd /sys/class/leds/lcd-backlight,再用ls -l 可以看到好几个属性。这些属性都由class_create来创建的。对于背光,我们可以在sys/class和/sys/devices/都找到对应的背光路径,这两个路径下还可以找得到关联的符号链接;但我们不会在/dev下找到背光的节点,因为一般不会那样做。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux Boot Process 分析与研究 下一篇Linux init/main.c 初始化中硬件..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)