天 下

士不可以不弘毅 任重而道远

S3C6410 linux内核移植(11)---添加充电控制脚驱动(LED驱动)

 1、原理分析
 
    无线数码相框的GPQ3脚用于充电控制,当GPQ3为高电平是为充电状态,当为低电平时不充电。led的控制原理和充电脚的控制原理是一模一样的都是对某个io口置1或清零,所以在这里可以用led驱动实现对充电控制脚的控制。
    Linux内核下drivers/leds/ledsgpio.c实现了一个和体系结构无关的led驱动,使用此led驱动我们只需要在BSP的板文件(arch/arm/mach-s3c6410/mach-smdk6410.c)中定义相关platform设备和数据
 
2、ut-s3c6410开发板的led控制驱动实现
 
    在ut-s3c6410开发板上,用GPM0—GPM3外界4个lcd,因此对于的platform设备信息如下:
static struct gpio_led smdk6410_leds[] = {
[0] = {
.name = "LED1",
.gpio = S3C64XX_GPM(0),
},
[1] = {
.name = "LED2",
.gpio = S3C64XX_GPM(1),
.active_low = 1,
},
[2] = {
.name = "LED3",
.gpio = S3C64XX_GPM(2),
.active_low = 0,
},
[3] = {
.name = "LED4",
.gpio = S3C64XX_GPM(3),
.default_trigger = "heartbeat",
},
 
};
 
static struct gpio_led_platform_data smdk6410_gpio_led_pdata = {
.num_leds = ARRAY_SIZE(smdk6410_leds),
.leds = smdk6410_leds,
};
 
static struct platform_device smdk6410_device_led = {
.name = "leds-gpio",
.id = 1,
.dev = {
.platform_data = &smdk6410_gpio_led_pdata,
},
};
 
    并将“&smdk6410_device_led,”语句填入 struct platform_device *ldd6410_devices[]数组,作为该数组的一个成员。
 
启动内核时会打印:
Registered led device: LED1
Registered led device: LED2
Registered led device: LED3
Registered led device: LED4
 
    LED1—LED4对应开发板的四个led灯通过如下命令可分别点亮四个led灯:
#echo 1 > /sys/class/leds/LED1/brightness
#echo 1 > /sys/class/leds/LED1/brightness
#echo 1 > /sys/class/leds/LED1/brightness
#echo 1 > /sys/class/leds/LED1/brightness
    通过如下命令可分别熄灭四个led等:
#echo 0 > /sys/class/leds/LED1/brightness
#echo 0 > /sys/class/leds/LED1/brightness
#echo 0 > /sys/class/leds/LED1/brightness
#echo 0 > /sys/class/leds/LED1/brightness
 
3、无线数码相框充电控制驱动实现
 
    控制原理和以上分析的LED灯的控制是一模一样的,只需将smdk6410_leds结构体改为:
static struct gpio_led smdk6410_leds[] = {
[0] = {
.name = "charge",
.gpio = S3C64XX_GPQ(3),
},
};
 
    通过如下命令开始电池充电:
#echo 1 > /sys/class/leds/ charge /brightness
    通过如下命令停止电池充电:
#echo 0 > /sys/class/leds/ charge /brightness
    其它的参见上面一节“ut-s3c6410开发板的led控制驱动实现”进行设置。

 

 

转载请注明出处,文章来源:http://www.threeway.cc/sitecn/InformationInfo.aspx?pid=1907&tid=1381

阅读更多
文章标签: linux内核 c struct io
个人分类: S3C6410
想对作者说点什么? 我来说一句

S3C6410linux内核移植

2011年05月14日 45KB 下载

LED Badge 胸牌驱动

2017年10月19日 11.61MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭