Chinaunix首页 | 论坛 | 博客
  • 博客访问: 458458
  • 博文数量: 40
  • 博客积分: 1410
  • 博客等级: 军士长
  • 技术积分: 1396
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-22 19:26
个人简介

嵌入式系统工程师,从事视频、图像、网络、虚拟化等方面的底层软件开发与优化。

文章存档

2014年(4)

2013年(10)

2012年(14)

2011年(12)

分类: LINUX

2011-12-06 18:43:28

sysfs
1.以下是在原有添加button支持后的mach-mini6410-button.c diff出来的,行数会和标准的mach-mini6410.c不同,不能靠打补丁的方式添加。但是可以看出哪些是添加的,若要修改,可自行添加。压缩包里是我现在正在用的mach-mini6410.c的修改版。
  1. --- mach-mini6410-button.c    2011-12-06 18:47:19.263062596 +0800
  2. +++ mach-mini6410-button-led.c    2011-12-06 16:18:30.000000000 +0800
  3. @@ -34,6 +34,7 @@
  4.  #include <linux/proc_fs.h>
  5.  #include <linux/gpio_keys.h>    //add by Jason
  6.  #include <linux/input.h>    //add by Jason
  7. +#include <linux/leds.h>        //add by Jason
  8.  
  9.  #include <video/platform_lcd.h>
  10.  
  11. @@ -402,8 +403,51 @@
  12.      }
  13.  };
  14.  
  15. +/* Tiny6410 Leds */
  16. +static struct gpio_led tiny6410_leds[] = {            //add by Jason
  17. +    [0] = {
  18. +        .name        = "LED1",
  19. +        .default_trigger= "heartbeat",
  20. +        .gpio        = S3C64XX_GPK(4),
  21. +        .active_low    = 1,
  22. +        .default_state    = LEDS_GPIO_DEFSTATE_OFF,
  23. +    },
  24. +    [1] = {
  25. +        .name        = "LED2",
  26. +        .gpio        = S3C64XX_GPK(5),
  27. +        .active_low    = 1,
  28. +        .default_state    = LEDS_GPIO_DEFSTATE_OFF,
  29. +    },
  30. +    [2] = {
  31. +        .name        = "LED3",
  32. +        .gpio        = S3C64XX_GPK(6),
  33. +        .active_low    = 1,
  34. +        .default_state    = LEDS_GPIO_DEFSTATE_OFF,
  35. +    },
  36. +    [3] = {
  37. +        .name        = "LED4",
  38. +        .gpio        = S3C64XX_GPK(7),
  39. +        .active_low    = 1,
  40. +        .default_state    = LEDS_GPIO_DEFSTATE_OFF,
  41. +    },
  42. +};
  43. +
  44. +static struct gpio_led_platform_data tiny6410_gpio_led_data = {    //add by Jason
  45. +    .leds        = tiny6410_leds,
  46. +    .num_leds    = ARRAY_SIZE(tiny6410_leds),
  47. +};
  48. +
  49. +static struct platform_device tiny6410_device_led = {        //add by Jason
  50. +    .name    = "leds-gpio",
  51. +    .id    = -1,
  52. +    .dev    = {
  53. +        .platform_data    = &tiny6410_gpio_led_data,
  54. +    },
  55. +};
  56. +
  57.  static struct platform_device *mini6410_devices[] __initdata = {
  58.      &tiny6410_device_button,                //add by Jason
  59. +    &tiny6410_device_led,                    //add by Jason
  60.  #ifdef CONFIG_MINI6410_SD_CH0
  61.      &s3c_device_hsmmc0,
  62.  #endif
2.驱动配置在图形化配置菜单里选:
Device Driver ---> Led Support
如下图配置
3.重新烧写新的内核,启动后,会看到led0在闪烁,因为配置了heartbeat,要控制其余几个led灯,可以如下输入:
a.点灯
  1. echo 1 > /sys/devices/platform/leds-gpio/leds/LED3/brightness
b.熄灯
  1. echo 0 > /sys/devices/platform/leds-gpio/leds/LED3/brightness

阅读(3647) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~