Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/mips/ath79/dev-leds-gpio.c
10817 views
1
/*
2
* Atheros AR71XX/AR724X/AR913X common GPIO LEDs support
3
*
4
* Copyright (C) 2008-2010 Gabor Juhos <[email protected]>
5
* Copyright (C) 2008 Imre Kaloz <[email protected]>
6
*
7
* This program is free software; you can redistribute it and/or modify it
8
* under the terms of the GNU General Public License version 2 as published
9
* by the Free Software Foundation.
10
*/
11
12
#include <linux/init.h>
13
#include <linux/slab.h>
14
#include <linux/platform_device.h>
15
16
#include "dev-leds-gpio.h"
17
18
void __init ath79_register_leds_gpio(int id,
19
unsigned num_leds,
20
struct gpio_led *leds)
21
{
22
struct platform_device *pdev;
23
struct gpio_led_platform_data pdata;
24
struct gpio_led *p;
25
int err;
26
27
p = kmalloc(num_leds * sizeof(*p), GFP_KERNEL);
28
if (!p)
29
return;
30
31
memcpy(p, leds, num_leds * sizeof(*p));
32
33
pdev = platform_device_alloc("leds-gpio", id);
34
if (!pdev)
35
goto err_free_leds;
36
37
memset(&pdata, 0, sizeof(pdata));
38
pdata.num_leds = num_leds;
39
pdata.leds = p;
40
41
err = platform_device_add_data(pdev, &pdata, sizeof(pdata));
42
if (err)
43
goto err_put_pdev;
44
45
err = platform_device_add(pdev);
46
if (err)
47
goto err_put_pdev;
48
49
return;
50
51
err_put_pdev:
52
platform_device_put(pdev);
53
54
err_free_leds:
55
kfree(p);
56
}
57
58