Re: [PATCH 2/7] basic LED support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Dec 18, 2010 at 4:15 PM, Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> wrote:
> This patch adds core functionality for controlling LEDs.
>
> Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>
> ---
> Âdrivers/Kconfig   Â|  Â1 +
> Âdrivers/Makefile   |  Â1 +
> Âdrivers/led/Kconfig Â| Â Â6 +++
> Âdrivers/led/Makefile | Â Â1 +
> Âdrivers/led/core.c  | Â119 ++++++++++++++++++++++++++++++++++++++++++++++++++
> Âinclude/led.h    Â|  25 ++++++++++
> Â6 files changed, 153 insertions(+), 0 deletions(-)
> Âcreate mode 100644 drivers/led/Kconfig
> Âcreate mode 100644 drivers/led/Makefile
> Âcreate mode 100644 drivers/led/core.c
> Âcreate mode 100644 include/led.h
>
> diff --git a/drivers/Kconfig b/drivers/Kconfig
> index d94017b..86d8fb5 100644
> --- a/drivers/Kconfig
> +++ b/drivers/Kconfig
> @@ -12,5 +12,6 @@ source "drivers/video/Kconfig"
> Âsource "drivers/mci/Kconfig"
> Âsource "drivers/clk/Kconfig"
> Âsource "drivers/mfd/Kconfig"
> +source "drivers/led/Kconfig"
>
> Âendmenu
> diff --git a/drivers/Makefile b/drivers/Makefile
> index 242a564..b1b402f 100644
> --- a/drivers/Makefile
> +++ b/drivers/Makefile
> @@ -10,3 +10,4 @@ obj-$(CONFIG_MCI) += mci/
> Âobj-$(CONFIG_VIDEO) += video/
> Âobj-y Â+= clk/
> Âobj-y Â+= mfd/
> +obj-$(CONFIG_LED) += led/
> diff --git a/drivers/led/Kconfig b/drivers/led/Kconfig
> new file mode 100644
> index 0000000..964626c
> --- /dev/null
> +++ b/drivers/led/Kconfig
> @@ -0,0 +1,6 @@
> +menuconfig LED
> + Â Â Â bool "LED support"
> +
> +if LED
> +
> +endif
> diff --git a/drivers/led/Makefile b/drivers/led/Makefile
> new file mode 100644
> index 0000000..0c1a6b6
> --- /dev/null
> +++ b/drivers/led/Makefile
> @@ -0,0 +1 @@
> +obj-$(CONFIG_LED) += core.o
> diff --git a/drivers/led/core.c b/drivers/led/core.c
> new file mode 100644
> index 0000000..4a0f0a6
> --- /dev/null
> +++ b/drivers/led/core.c
> @@ -0,0 +1,119 @@
> +/*
> + * core LED support for barebox
> + *
> + * (C) Copyright 2010 Sascha Hauer, Pengutronix
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ÂSee the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +#include <common.h>
> +#include <command.h>
> +#include <linux/list.h>
> +#include <errno.h>
> +#include <asm/gpio.h>
> +#include <led.h>
> +#include <poller.h>
Is necessary to include poller.h?
Non of poller function is used there.
> +#include <clock.h>
> +
> +/**
> + * @file
> + * @brief LED framework
> + *
> + * This file contains the core LED framework for barebox.
> + *
> + * Each LED can be set to a value where 0 means disabled and values
> + * > 0 mean enabled. LEDs can have different enable values where the
> + * exact meaning depends on the LED, for example a gpio controlled rgb
> + * LED can have enable values from 1 to 7 which correspond to different
> + * colors. value could also mean a brightness.
> + * Each LED is assigned a number. numbers start with 0 and are increased
> + * with each registered LED. The number stays the same during lifecycle,
> + * gaps because of unregistered LEDs are not filled up.
> + */
> +
> +static LIST_HEAD(leds);
> +static int num_leds;
> +
> +/**
> + * led_by_number - get the number of a LED
> + * @param num number of the LED to return
> + */
> +struct led *led_by_number(int num)
> +{
> + Â Â Â struct led *led;
> +
> + Â Â Â list_for_each_entry(led, &leds, list) {
> + Â Â Â Â Â Â Â if (led->num == num)
> + Â Â Â Â Â Â Â Â Â Â Â return led;
> + Â Â Â }
> +
> + Â Â Â return NULL;
> +}
> +
> +/**
> + * led_set - set the value of a LED
> + * @param led Âthe led
> + * @param value    Âthe value of the LED (0 is disabled)
> + */
> +int led_set(struct led *led, unsigned int value)
> +{
> + Â Â Â if (value > led->max_value)
> + Â Â Â Â Â Â Â value = led->max_value;
> +
> + Â Â Â led->set(led, value);
> +
> + Â Â Â return 0;
> +}
> +
> +/**
> + * led_set_num - set the value of a LED
> + * @param num Âthe number of the LED
> + * @param value    Âthe value of the LED (0 is disabled)
> + */
> +int led_set_num(int num, unsigned int value)
> +{
> + Â Â Â struct led *led = led_by_number(num);
> +
> + Â Â Â if (!led)
> + Â Â Â Â Â Â Â return -ENODEV;
> +
> + Â Â Â return led_set(led, value);
> +}
> +
> +/**
> + * led_register - Register a LED
> + * @param led Âthe led
> + */
> +int led_register(struct led *led)
> +{
> + Â Â Â led->num = num_leds++;
> +
> + Â Â Â list_add_tail(&led->list, &leds);
> +
> + Â Â Â return 0;
> +}
> +
> +/**
> + * led_unregister - Unegister a LED
> + * @param led Âthe led
> + */
> +void led_unregister(struct led *led)
> +{
> + Â Â Â list_del(&led->list);
> +}
> diff --git a/include/led.h b/include/led.h
> new file mode 100644
> index 0000000..62d0d08
> --- /dev/null
> +++ b/include/led.h
> @@ -0,0 +1,25 @@
> +#ifndef __LED_H
> +#define __LED_H
> +
> +struct led {
> + Â Â Â unsigned long triger;
> + Â Â Â void (*set)(struct led *, unsigned int value);
> + Â Â Â int max_value;
> + Â Â Â int num;
> + Â Â Â struct list_head list;
> +};
> +
> +struct led *led_by_number(int no);
> +
> +static inline int led_get_number(struct led *led)
> +{
> + Â Â Â return led->num;
> +}
> +
> +int led_set_num(int num, unsigned int value);
> +int led_set(struct led *led, unsigned int value);
> +int led_register(struct led *led);
> +void led_unregister(struct led *led);
> +void led_unregister(struct led *led);
> +
> +#endif /* __LED_H */
> --
> 1.7.2.3
>
>
> _______________________________________________
> barebox mailing list
> barebox@xxxxxxxxxxxxxxxxxxx
> http://lists.infradead.org/mailman/listinfo/barebox
>

thanks,

marek

-- 
as simple and primitive as possible
-------------------------------------------------
Marek Belisko - OPEN-NANDRA
Freelance Developer

Ruska Nova Ves 219 | Presov, 08005 Slovak Republic
Tel: +421 915 052 184
skype: marekwhite
icq: 290551086
web: http://open-nandra.com

_______________________________________________
barebox mailing list
barebox@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/barebox



[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux