转载时请注明出处和作者联系方式
文章出处:http://www.limodev.cn/blog
作者联系方式:李先静 <xianjimli at hotmail dot com>
DA9034是一个集成了电源管理、音频设备、触摸屏控制器和能用A/D|D/A转换的多功能芯片。最近读了一下相关驱动程序,这里记些笔记,不成体系,作为备忘而已。有兴趣的朋友可以一起讨论。
DA9034支持四类LED驱动:LCD背光、键盘背光、FLASH_LED和PC_LED。
在broncho a1中,显示背光是通过LED_DRIVER1连接到LCD控制器的LED1-LED5上的。
LCD背光驱动比较简单,它主要通过操作LED1_CONTROL寄存器来控制LCD背光的开/关/强度。
LED1_CONTROL的描述:
LED1_RAMP LED1_PWM<6> LED1_PWM<5> LED1_PWM<4> LED1_PWM<3> LED1_PWM<2> LED1_PWM<1> LED1_PWM<0>
LCD背光设备是一个platform device,在littleton.c中定义:
static struct platform_device micco_bl_device = {
.name = "micco-bl",
.id = -1,
};
LCD背光驱动程序在drivers/video/backlight/micco_bl.c:
static struct platform_driver miccobl_driver = {
.probe = miccobl_probe,
.remove = miccobl_remove,
.suspend = miccobl_suspend,
.resume = miccobl_resume,
.driver = {
.name = "micco-bl",
},
};
在miccobl_probe函数里,会注册一个backlight设备:
static int __init miccobl_probe(struct platform_device *pdev)
{
struct backlight_device *bd;
bd = backlight_device_register("micco-bl", &pdev->dev, NULL,
&miccobl_ops);
if (IS_ERR(bd))
return PTR_ERR(bd);
platform_set_drvdata(pdev, bd);
bd->props.power = FB_BLANK_UNBLANK;
bd->props.brightness = LCD_LED_DEFAULT;
bd->props.max_brightness = LCD_LED_MAX;
miccobl_send_intensity(bd);
return 0;
}
对于miccobl_ops,主要提供了两个函数:
static struct backlight_ops miccobl_ops = {
.get_brightness = miccobl_get_intensity,
.update_status = miccobl_set_intensity,
};
读取当前的亮度:
static int miccobl_get_intensity(struct backlight_device *bd)
{
return current_intensity;
}
通过修改寄存器MICCO_LED1_CONTROL来设置亮度。
static int miccobl_set_intensity(struct backlight_device *bd)
{
miccobl_send_intensity(bd);
return 0;
}
static int miccobl_send_intensity(struct backlight_device *bd)
{
int intensity = bd->props.brightness;
if (bd->props.power != FB_BLANK_UNBLANK)
intensity = 0;
if (bd->props.fb_blank != FB_BLANK_UNBLANK)
intensity = 0;
if (miccobl_suspended)
intensity = 0;
micco_write(MICCO_LED1_CONTROL, intensity);
current_intensity = intensity;
return 0;
}
键盘背光驱动和LCD背光实现类似,主要的不同是键盘背光用的是LED_DRIVER2,所以通过操作LED2_CONTROL来控制亮度。
用户空间的接口在:hardware/libhardware/modules/lights/lights.c里:
#define LCD_BACKLIGHT "/sys/class/backlight/micco-bl"
#define BUTTON_BACKLIGHT "/sys/class/backlight/micco-kp-bl"
设置LCD背光亮度:
int back_light_set_light (struct light_device_t* dev, struct light_state_t const* state);
设置键盘背光亮度:
int buttons_light_set_light (struct light_device_t* dev, struct light_state_t const* state);
分享到:
相关推荐
da4694的驱动程序,最底层的,硬件驱动,哈哈哈哈哈哈
AD5541是ADI公司的16串行DA转换器 本程序为DA的spi驱动程序
DA5614的verilog HDL驱动程序。实际验证可用。
实测可用带注释
本程序是在8051的基础上开发的,模数和数模转换的驱动程序设计。
da9034的芯片手册,英文版 Dialog 推出的IC——DA9034。此款IC整合了电源管理和音频子系统,特为快速增长的新兴产品(如智能手机,便携式多媒体播放器、PDA及个人浏览器等)中采用的最新一代应用处理器量身打造。该...
MEMS digital output motion sensor Ultra-low-power high performance 3-axes “DSC-XYZ” accelerometer
16bit DA dac8830 C语言 驱动 程序 stm32 亲测通过
AD7091R DA转换的FPGA驱动程序
da5300 (DA) spi驱动程序 AD5300是ADI公司一款单通道、8位缓冲电压输出DAC,采用2.7 V至5.5 V单电源供电,3 V时功耗为115 µA。它内置片内精密输出放大器,能够实现轨到轨输出摆幅。AD5300采用多功能三线式串行...
C8051F005的DA驱动程序(C语言).pdf
DA芯片TLC5620的完美驱动 DA芯片TLC5620的完美驱动
DASSIDirect是西门子PLC与Intouch连接通讯的必备驱动程序,这个驱动程序主要适用于西门子s7 200 300 400 1200 1500 400H等系列的设备型号,如果你是一名工业编程人员的话应该会用到这个驱动,有需要的快快下载吧。
基于STM32 MCU的 DA380驱动代码,包含完整的芯片初始化和设置接口,已通过测试
TI 10位DA TLC5615的驱动程序
DA芯片 AD5623R,AD5686_5684,VHDL驱动程序,Spartan-6,亲测通过, 例程中产生了两路正弦波,AD5686_5684可以驱动四路da
Q74--DAC902驱动程序+高速DA数模转换模块++原理图+资料-V0.2
组态软件,Intouch驱动,通讯驱动,硬件驱动,通讯软件,Intouch驱动,DAServer DASSIDirect3.0
这是da5619的驱动程序,非常好用,已经测试通过