Linux Audio

Check our new training course

Loading...
Note: File does not exist in v5.4.
 1/*
 2 *  Atheros AR71XX/AR724X/AR913X common GPIO LEDs support
 3 *
 4 *  Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org>
 5 *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
 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
18void __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
51err_put_pdev:
52	platform_device_put(pdev);
53
54err_free_leds:
55	kfree(p);
56}