- 论坛徽章:
- 0
|
本帖最后由 2012拾忆 于 2012-03-23 00:01 编辑
来自linux自带的/driver/leds/leds-gpio.c文件
static void gpio_led_set(struct led_classdev *led_cdev,
enum led_brightness value)
{
struct gpio_led_data *led_dat =
container_of(led_cdev, struct gpio_led_data, cdev);
int level;
if (value == LED_OFF)
level = 0;
else
level = 1;
if (led_dat->active_low)
level = !level;
if (led_dat->can_sleep) {
led_dat->new_level = level;
schedule_work(&led_dat->work);
} else
gpio_set_value(led_dat->gpio, level);
}
static int gpio_led_probe(struct platform_device *pdev)
{
......
led_dat->cdev.brightness_set = gpio_led_set;
......
ret = led_classdev_register(&pdev->dev, &led_dat->cdev);
if (ret < 0) {
gpio_free(led_dat->gpio);
goto err;
}
}
......
}
}
kfree(leds_data);
return ret;
}
static struct platform_driver gpio_led_driver = {
.probe = gpio_led_probe,
.remove = __devexit_p(gpio_led_remove),
.driver = {
.name = "leds-gpio",
.owner = THIS_MODULE,
},
};
static int __init gpio_led_init(void)
{
return platform_driver_register(&gpio_led_driver);
}
static void __exit gpio_led_exit(void)
{
platform_driver_unregister(&gpio_led_driver);
}
请问一下,
gpio_led_set()这个函数如何使用,在用户空间如何调用。。。。我自己的想法就是通过往/sys/class/leds/.../brightness输入数据时使用,因为这个驱动好像不是在用户空间来操作的。。。但我在看源代码时还是看不懂,觉得我的想法又不是,问一下,这个函数如何被调用的,谢谢!
|
|