Page | 49
static int __devinit gpio_led_probe(struct platform_device *pdev)
{
…
if (pdata && pdata->num_leds) {
priv = kzalloc(sizeof_gpio_leds_priv(pdata->num_leds),
GFP_KERNEL);
if (!priv)
return -ENOMEM;
priv->num_leds = pdata->num_leds;
for (i = 0; i < priv->num_leds; i++) {
ret = create_gpio_led(&pdata->leds[i],
&priv->leds[i],
&pdev->dev,
pdata->gpio_blink_set);
if (ret < 0) {
/* On failure: unwind the led creations */
for (i = i - 1; i >= 0; i--)
delete_gpio_led(&priv->leds[i]);
kfree(priv);
return ret;
}
}
}
…
}
static int __devinit create_gpio_led(const struct gpio_led *template,
struct gpio_led_data *led_dat, struct device *parent,
int (*blink_set)(unsigned, unsigned long *, unsigned long *))
{
…
ret = gpio_request(template->gpio, template->name);
…
ret = gpio_direction_output(led_dat->gpio, led_dat->active_low ^ state);
…
ret = led_classdev_register(parent, &led_dat->cdev);
…
}
Users
may
access
the
file
named
brightness
under
/sys/class/leds/xxx/brightness, and call gpio_led_set to configure the LED
status
static void gpio_led_set(struct led_classdev *led_cdev,
Summary of Contents for SBC8600B
Page 1: ...SBC8600B Single Board Computer Quick Start Guide Version 1 1 23rd Jan 2014...
Page 9: ...Page 2 1 3 Board Interfaces Figure 1 SBC8600B Interfaces...
Page 10: ...Page 3 1 4 System Block Diagram Figure 2 SBC8600B System Block Diagram...
Page 11: ...Page 4 1 5 Physical Dimensions Figure 3 MINI8600B Physical Dimensions...
Page 12: ...Page 5 Figure 4 SBC8600B Physical Dimensions...
Page 114: ...Page 107...