Re: [PATCH 4/4] leds: trigger: Add pattern initialization from Device Tree
From: Krzysztof Kozlowski
Date: Mon Dec 10 2018 - 03:35:49 EST
On Sun, 9 Dec 2018 at 19:55, Jacek Anaszewski
<jacek.anaszewski@xxxxxxxxx> wrote:
>
> On 12/8/18 7:44 PM, Jacek Anaszewski wrote:
> > Hi Krzysztof,
> >
> > Thank you for the patch set.
> >
> > Applied 1/4 and 2/4.
> >
> > I'll hold on merging 3/4 until we sort out the issues
> > I have with this one. Please refer to my comment below.
> >
> > On 12/7/18 1:32 PM, Krzysztof Kozlowski wrote:
> >> Allow initialization of pattern used in pattern trigger from Device Tree
> >> property.
> >>
> >> This is especially useful for embedded systems where the pattern trigger
> >> would be used to indicate the process of boot status in a nice,
> >> user-friendly blinking way. This initialization pattern will be used
> >> till user-space is brought up and sets its own pattern, indicating the
> >> boot status is for example finished.
> >>
> >> Signed-off-by: Krzysztof Kozlowski <krzk@xxxxxxxxxx>
> >> ---
> >> drivers/leds/trigger/ledtrig-pattern.c | 18 ++++++++++++++++++
> >> 1 file changed, 18 insertions(+)
> >>
> >> diff --git a/drivers/leds/trigger/ledtrig-pattern.c
> >> b/drivers/leds/trigger/ledtrig-pattern.c
> >> index 1870cf87afe1..96309d3bc43c 100644
> >> --- a/drivers/leds/trigger/ledtrig-pattern.c
> >> +++ b/drivers/leds/trigger/ledtrig-pattern.c
> >> @@ -11,6 +11,7 @@
> >> #include <linux/leds.h>
> >> #include <linux/module.h>
> >> #include <linux/mutex.h>
> >> +#include <linux/of.h>
> >> #include <linux/slab.h>
> >> #include <linux/timer.h>
> >> @@ -331,6 +332,21 @@ static const struct attribute_group
> >> *pattern_trig_groups[] = {
> >> NULL,
> >> };
> >> +static void pattern_init(struct led_classdev *led_cdev)
> >> +{
> >> + struct device_node *np = dev_of_node(led_cdev->dev);
> >> + const char *pattern;
> >> +
> >> + if (!np)
> >> + return;
> >> +
> >> + if (!of_property_read_string(np, "linux,trigger-pattern",
> >> &pattern)) {
> >> + if (strlen(pattern))
> >> + pattern_trig_store_patterns(led_cdev, pattern,
> >> + strlen(pattern), false);
> >> + }
> >> +}
> >> +
> >> static int pattern_trig_activate(struct led_classdev *led_cdev)
> >> {
> >> struct pattern_trig_data *data;
> >> @@ -354,6 +370,8 @@ static int pattern_trig_activate(struct
> >> led_classdev *led_cdev)
> >> timer_setup(&data->timer, pattern_trig_timer_function, 0);
> >> led_cdev->activated = true;
> >> + pattern_init(led_cdev);
>
> With my recent patches it would suffice to replace above line with:
>
> if (led_cdev->flags & LED_INIT_DEFAULT_TRIGGER) {
> pattern_init(led_cdev);
> led_cdev->flags &= ~LED_INIT_DEFAULT_TRIGGER;
> }
Right, I see the problem. I'll rebase on top of it.
Best regards,
Krzysztof