All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Marek Behún" <kabel@kernel.org>
To: Ansuel Smith <ansuelsmth@gmail.com>
Cc: Andrew Lunn <andrew@lunn.ch>,
	Vivien Didelot <vivien.didelot@gmail.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Vladimir Oltean <olteanv@gmail.com>,
	"David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	Rob Herring <robh+dt@kernel.org>,
	Jonathan Corbet <corbet@lwn.net>, Pavel Machek <pavel@ucw.cz>,
	John Crispin <john@phrozen.org>,
	netdev@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org,
	linux-leds@vger.kernel.org
Subject: Re: [RFC PATCH v3 2/8] leds: add function to configure hardware controlled LED
Date: Tue, 9 Nov 2021 23:18:55 +0100	[thread overview]
Message-ID: <20211109231855.5d43c05e@thinkpad> (raw)
In-Reply-To: <YYqEPZpGmjNgFj0L@Ansuel-xps.localdomain>

On Tue, 9 Nov 2021 15:22:53 +0100
Ansuel Smith <ansuelsmth@gmail.com> wrote:

> On Tue, Nov 09, 2021 at 04:01:03AM +0100, Marek Behún wrote:
> > Hello Ansuel,
> > 
> > On Tue,  9 Nov 2021 03:26:02 +0100
> > Ansuel Smith <ansuelsmth@gmail.com> wrote:
> >   
> > > Add hw_control_configure helper to configure how the LED should work in
> > > hardware mode. The function require to support the particular trigger and
> > > will use the passed flag to elaborate the data and apply the
> > > correct configuration. This function will then be used by the trigger to
> > > request and update hardware configuration.
> > > 
> > > Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
> > > ---
> > >  Documentation/leds/leds-class.rst | 25 ++++++++++++++++++++
> > >  include/linux/leds.h              | 39 +++++++++++++++++++++++++++++++
> > >  2 files changed, 64 insertions(+)
> > > 
> > > diff --git a/Documentation/leds/leds-class.rst b/Documentation/leds/leds-class.rst
> > > index 645940b78d81..efd2f68c46a7 100644
> > > --- a/Documentation/leds/leds-class.rst
> > > +++ b/Documentation/leds/leds-class.rst
> > > @@ -198,6 +198,31 @@ With HARDWARE_CONTROLLED blink_mode hw_control_status/start/stop is optional
> > >  and any software only trigger will reject activation as the LED supports only
> > >  hardware mode.
> > >  
> > > +A trigger once he declared support for hardware controlled blinks, will use the function
> > > +hw_control_configure() provided by the driver to check support for a particular blink mode.
> > > +This function passes as the first argument (flag) a u32 flag.
> > > +The second argument (cmd) of hw_control_configure() method can be used to do various
> > > +operations for the specific blink mode. We currently support ENABLE, DISABLE, READ, ZERO
> > > +and SUPPORTED to enable, disable, read the state of the blink mode, ask the LED
> > > +driver if it does supports the specific blink mode and to reset any blink mode active.
> > > +
> > > +In ENABLE/DISABLE hw_control_configure() should configure the LED to enable/disable the
> > > +requested blink mode (flag).
> > > +In READ hw_control_configure() should return 0 or 1 based on the status of the requested
> > > +blink mode (flag).
> > > +In SUPPORTED hw_control_configure() should return 0 or 1 if the LED driver supports the
> > > +requested blink mode (flags) or not.
> > > +In ZERO hw_control_configure() should return 0 with success operation or error.
> > > +
> > > +The unsigned long flag is specific to the trigger and change across them. It's in the LED
> > > +driver interest know how to elaborate this flag and to declare support for a
> > > +particular trigger. For this exact reason explicit support for the specific
> > > +trigger is mandatory or the driver returns -EOPNOTSUPP if asked to enter offload mode
> > > +with a not supported trigger.
> > > +If the driver returns -EOPNOTSUPP on hw_control_configure(), the trigger activation will
> > > +fail as the driver doesn't support that specific offload trigger or doesn't know
> > > +how to handle the provided flags.
> > > +
> > >  Known Issues
> > >  ============
> > >  
> > > diff --git a/include/linux/leds.h b/include/linux/leds.h
> > > index cf0c6005c297..00bc4d6ed7ca 100644
> > > --- a/include/linux/leds.h
> > > +++ b/include/linux/leds.h
> > > @@ -73,6 +73,16 @@ enum led_blink_modes {
> > >  	SOFTWARE_HARDWARE_CONTROLLED,
> > >  };
> > >  
> > > +#ifdef CONFIG_LEDS_HARDWARE_CONTROL
> > > +enum blink_mode_cmd {
> > > +	BLINK_MODE_ENABLE, /* Enable the hardware blink mode */
> > > +	BLINK_MODE_DISABLE, /* Disable the hardware blink mode */
> > > +	BLINK_MODE_READ, /* Read the status of the hardware blink mode */
> > > +	BLINK_MODE_SUPPORTED, /* Ask the driver if the hardware blink mode is supported */
> > > +	BLINK_MODE_ZERO, /* Disable any hardware blink active */
> > > +};
> > > +#endif  
> > 
> > this is a strange proposal for the API.
> > 
> > Anyway, led_classdev already has the blink_set() method, which is documented as
> > 	/*
> > 	  * Activate hardware accelerated blink, delays are in milliseconds
> > 	  * and if both are zero then a sensible default should be chosen.
> > 	  * The call should adjust the timings in that case and if it can't
> > 	  * match the values specified exactly.
> > 	  * Deactivate blinking again when the brightness is set to LED_OFF
> > 	  * via the brightness_set() callback.
> > 	  */
> > 	int		(*blink_set)(struct led_classdev *led_cdev,
> > 				     unsigned long *delay_on,
> > 				     unsigned long *delay_off);
> > 
> > So we already have a method to set hardware blkinking, we don't need
> > another one.
> > 
> > Marek  
> 
> But that is about hardware blink, not a LED controlled by hardware based
> on some rules/modes.
> Doesn't really match the use for the hardware control.

I think there is a miscommunication, because I don't quite understand
what you are trying to say here.

How is "hardware blink" different from "a LED controlled by hardware
based on some rules/modes", when it is used for blinking ?

If the hardware, any hardware, supports blinking with different
frequencies, it should implement the blink_set() method.

> Blink_set makes the LED blink contantly at the declared delay.
> The blink_mode_cmd are used to request stuff to a LED in hardware mode.
> 
> Doesn't seem correct to change/enhance the blink_set function with
> something that would do something completely different.
> 


  parent reply	other threads:[~2021-11-09 22:23 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-09  2:26 [RFC PATCH v3 0/8] Adds support for PHY LEDs with offload triggers Ansuel Smith
2021-11-09  2:26 ` [RFC PATCH v3 1/8] leds: add support for hardware driven LEDs Ansuel Smith
2021-11-09  6:16   ` Randy Dunlap
2021-11-09 20:25   ` kernel test robot
2021-11-09 20:34   ` Andrew Lunn
2021-11-09 20:40     ` Ansuel Smith
2021-11-09  2:26 ` [RFC PATCH v3 2/8] leds: add function to configure hardware controlled LED Ansuel Smith
2021-11-09  3:01   ` Marek Behún
2021-11-09 14:22     ` Ansuel Smith
2021-11-09 20:49       ` Andrew Lunn
2021-11-10 19:51         ` Ansuel Smith
2021-11-10 22:24           ` Andrew Lunn
2021-11-09 22:18       ` Marek Behún [this message]
2021-11-09  6:12   ` Randy Dunlap
2021-11-09  2:26 ` [RFC PATCH v3 3/8] leds: trigger: netdev: drop NETDEV_LED_MODE_LINKUP from mode Ansuel Smith
2021-11-09  3:02   ` Marek Behún
2021-11-09 14:24     ` Ansuel Smith
2021-11-09 20:53     ` Andrew Lunn
2021-11-09  2:26 ` [RFC PATCH v3 4/8] leds: trigger: netdev: rename and expose NETDEV trigger enum modes Ansuel Smith
2021-11-09 20:58   ` Andrew Lunn
2021-11-10 19:57     ` Ansuel Smith
2021-11-10 22:29       ` Andrew Lunn
2021-11-09  2:26 ` [RFC PATCH v3 5/8] leds: trigger: netdev: add hardware control support Ansuel Smith
2021-11-09  3:12   ` Marek Behún
2021-11-09 15:02     ` Ansuel Smith
2021-11-09  2:26 ` [RFC PATCH v3 6/8] leds: trigger: add hardware-phy-activity trigger Ansuel Smith
2021-11-09  3:25   ` Marek Behún
2021-11-09 21:09     ` Andrew Lunn
2021-11-10 20:04       ` Ansuel Smith
2021-11-10 22:32         ` Andrew Lunn
2021-11-09  6:02   ` Randy Dunlap
2021-11-09 15:06     ` Ansuel Smith
2021-11-09 21:17   ` Andrew Lunn
2021-11-09 21:28   ` Andrew Lunn
2021-11-09  2:26 ` [RFC PATCH v3 7/8] net: dsa: qca8k: add LEDs support Ansuel Smith
2021-11-09  6:03   ` Randy Dunlap
2021-11-09 21:22   ` Andrew Lunn
2021-11-09  2:26 ` [RFC PATCH v3 8/8] dt-bindings: net: dsa: qca8k: add LEDs definition example Ansuel Smith

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211109231855.5d43c05e@thinkpad \
    --to=kabel@kernel.org \
    --cc=andrew@lunn.ch \
    --cc=ansuelsmth@gmail.com \
    --cc=corbet@lwn.net \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=f.fainelli@gmail.com \
    --cc=john@phrozen.org \
    --cc=kuba@kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=olteanv@gmail.com \
    --cc=pavel@ucw.cz \
    --cc=robh+dt@kernel.org \
    --cc=vivien.didelot@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.