2015年4月1日 星期三

Led driver

環境:
Android: 4.4
Kernel:3.0.35
iMX6Q

透過標準led介面leds-gpio.c這個檔案,就能把GPIO端的訊息,註冊為led_classdev
CONFIG_LEDS_GPIO=y
CONFIG_LEDS_GPIO_PLATFORM=y
CONFIG_LEDS_TRIGGER=y

board-mx6q_sabresd.c
#define GPIO_LED(gpio_led, name_led, act_low, state_suspend, trigger) \
{         \
 .gpio   = gpio_led,    \
 .name   = name_led,    \
 .active_low  = act_low,    \
 .retain_state_suspended = state_suspend,   \
 .default_state  = 0,     \
 .default_trigger = "max8903-"trigger,  \
}

/* use to show a external power source is connected
 * GPIO_LED(SABRESD_CHARGE_DONE, "chg_detect", 0, 1, "ac-online"),
 */
static struct gpio_led imx6q_gpio_leds[] = 
{
 GPIO_LED(SABRESD_CHARGE_NOW, "chg_now_led", 0, 1,
  "charger-charging"),

    //add for LED light
    GPIO_LED(SABRESD_CAP_TCH_INT1, "led-gpio8", 0, 1, "led-gpio8"),
    GPIO_LED(SABRESD_CAN1_STBY, "led-gpio4", 0, 1, "led-gpio4"),
    GPIO_LED(LED_GPIO3, "led-gpio3", 0, 1, "led-gpio4"),
};

然後在android系統下:
echo 1 > /sys/class/leds/yourname/backlights
就能控制led on or off

但用這個方法註冊,就不能用sysfs (原先以為可以,後來試了一下是不行的)

沒有留言:

張貼留言