[U-Boot] [beagleboard] Re: [PATCH] Add 'led' command

Jason Kridner jkridner at beagleboard.org
Thu Apr 21 16:49:33 CEST 2011


On Thu, Apr 21, 2011 at 9:17 AM, Jason Kridner <jkridner at beagleboard.org>wrote:

> Adding u-boot list.... seem to have missed it in my reply.
>
>
> On Thu, Apr 21, 2011 at 9:16 AM, Jason Kridner <jkridner at beagleboard.org>wrote:
>
>> On Wed, Apr 20, 2011 at 6:04 PM, Wolfgang Denk <wd at denx.de> wrote:
>>
>>> Dear Jason Kridner,
>>>
>>> In message <1299013329-29931-1-git-send-email-jkridner at beagleboard.org>
>>> you wrote:
>>> > This patch allows any board implementing the coloured LED API
>>> > to control the LEDs from the console.
>>> >
>>> > led [green | yellow | red | all ]  [ on | off ]
>>> >
>>> > or
>>> >
>>> > led [ 1 | 2 | 3 | all ]  [ on | off ]
>>>
>>> I still wonder if such a patch will help to get rid of the ton of LEd
>>> drivers we already have in U-Boot, or if it just adds another such
>>> interface?
>>>
>>
>> It neither adds nor subtracts.
>>
>>
>>>
>>> Which drivers ("led.c" files) will be obsoleted by this patch?
>>>
>>
>> None.  The objective is simply to expose led.c functionality to a
>> command-line function.
>>
>>
>>>
>>>
>>> If it is intended to be a generic interface - how can this then be
>>> combined with the status_led.c driver?
>>>
>>
>> It is intended to utilize status_led.h and therefore to be complementary
>> to status_led.c.  Looking at it right now, it looks like I can better reuse
>> some functions in that driver, so I will modify the code to do that.  My
>> apologies for missing it.
>>
>>
>>>
>>> The configuration "green", "yellow", "red" seems to be very specific
>>> to me - I guess this applies just to very few boards?
>>>
>>
>> Yes, but it is in status_led.h, so I wanted to include the support for it.
>>
>>
>>>
>>> ...
>>> > +struct led_tbl_s {
>>> > +     char            *string;        /* String for use in the command
>>> */
>>> > +     led_id_t        mask;           /* Mask used for calling
>>> __led_set() */
>>> > +     void            (*on)(void);    /* Optional fucntion for turning
>>> LED on */
>>> > +     void            (*off)(void);   /* Optional fucntion for turning
>>> LED on */
>>> > +};
>>> > +
>>> > +typedef struct led_tbl_s led_tbl_t;
>>> > +
>>> > +static const led_tbl_t led_commands[] = {
>>> > +#ifdef CONFIG_BOARD_SPECIFIC_LED
>>> > +#ifdef STATUS_LED_BIT
>>> > +     { "0", STATUS_LED_BIT, NULL, NULL },
>>> > +#endif
>>> > +#ifdef STATUS_LED_BIT1
>>> > +     { "1", STATUS_LED_BIT1, NULL, NULL },
>>> > +#endif
>>> > +#ifdef STATUS_LED_BIT2
>>> > +     { "2", STATUS_LED_BIT2, NULL, NULL },
>>> > +#endif
>>> > +#ifdef STATUS_LED_BIT3
>>> > +     { "3", STATUS_LED_BIT3, NULL, NULL },
>>> > +#endif
>>>
>>> What are these "status bits" good for when they have no actual
>>> handlers attached?  Where are they actually used?
>>>
>>
>> If no LED specific handler is provided, __led_set is used.  I'm going to
>> switch this to status_led_set() based on your feedback.
>>
>>
>>>
>>>
>>> > +#ifdef STATUS_LED_GREEN
>>> > +     { "green", STATUS_LED_GREEN, green_LED_off, green_LED_on },
>>> > +#endif
>>> > +#ifdef STATUS_LED_YELLOW
>>> > +     { "yellow", STATUS_LED_YELLOW, yellow_LED_off, yellow_LED_on },
>>> > +#endif
>>> > +#ifdef STATUS_LED_RED
>>> > +     { "red", STATUS_LED_RED, red_LED_off, red_LED_on },
>>> > +#endif
>>> > +#ifdef STATUS_LED_BLUE
>>> > +     { "blue", STATUS_LED_BLUE, blue_LED_off, blue_LED_on },
>>> > +#endif
>>>
>>> We do not allow CamelCase identifiers (like "green_LED_off").
>>>
>>
>> Easy enough to fix.
>>
>

I might have spoken too soon.  Those identifiers come straight out of
status_led.h.  Would you like me to run a script across the entire codebase
to switch them?

I am doing so with:
for file in `find . | grep '\.[ch]$'`; do perl -i -pe
's/(green|yellow|red|blue)_LED_(on|off)/$1_led_$2/g' $file; done

Eventually, maybe I'll have my head wrapped around how all of this led.c
stuff works well enough to really give you a global clean-up.  I still feel
like I'm being suckered into something when all I want is a command to
access the functions that are already there. I guess that is the price of
open source.  :-)


>
>>
>>>
>>>
>>> Best regards,
>>>
>>> Wolfgang Denk
>>>
>>> --
>>> DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
>>> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
>>> Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
>>> Sometimes a man will tell his bartender things he'll never tell his
>>> doctor.
>>>        -- Dr. Phillip Boyce, "The Menagerie" ("The Cage"),
>>>           stardate unknown.
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Beagle Board" group.
>>> To post to this group, send email to beagleboard at googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> beagleboard+unsubscribe at googlegroups.com.
>>> For more options, visit this group at
>>> http://groups.google.com/group/beagleboard?hl=en.
>>>
>>>
>>
>


More information about the U-Boot mailing list