mbox series

[RFC,RESEND,v1,pinctrl-next,0/1] add blink and activity functions to SGPIO

Message ID 20230712022250.2319557-1-colin.foster@in-advantage.com
Headers show
Series add blink and activity functions to SGPIO | expand

Message

Colin Foster July 12, 2023, 2:22 a.m. UTC
Preface (new for resend):

This is a resend of a patch I'd sent a couple years back. At that time,
I was told to wait for hardware-offloaded LEDS. It looks like that time
has finally come, so I've changed this from PATCH down to an RFC to make
sure this is the right approach for the framework.

Ocelot chips (VSC7511, VSC7512, VSC7513, VSC7514) have support for
hardware-offloaded LEDs based on network activity. This is currenty
managed by way of pinctrl-microchip-sgpio (and this current patch).

The purpose of this resend is two-fold. First, to come up with an idea
of how this pinctrl-microchip-sgpio module can fit in with the new
hardware-offloaded netdev triggers Christian Marangi recently added. Is
this something that should be in the pinctrl module itself? Or should
there be a drivers/net/ethernet/mscc/ocelot_leds.c module that I should
add?

The second reason is maybe there's someone out there who might also be
considering implementing this. This might be a good starting point if
someone is eager to get coding. On my priority list, this is quite low
so I'll get to it eventually, but maybe not even in this dev cycle.
That's why I'm including the original patch.


Any suggestions on how to approach this problem are welcome.




(You can probably stop reading here)


Original Header:

Expose a debugfs / devicetree interface for Microsemi SGPIO controllers.
By writing values of 2-5, the SGPIO pins can be configured for either
automatic blinking or activity.

The implementation is modeled after the code in
/drivers/pinctrl/pinctrl-ocelot.c.

I have only tested this with currently out-of-tree patches for the
VSC7512 that I hope to get in soon. They are not needed for VSC7513 /
VSC7514, SPARX5, or LUTON - but I don't have any hardware to test.

Of note: the 7512 chip has a discrepancy between the datasheet and the
registers. The datahseet claims 20Hz blink default frequency, the
registers claim 5 Hz default frequency for BMODE_0. I override the
OCELOT registers to correct for this. I don't know if that is needed for
LUTON or SPARX, but having two blink modes at the same frequency isn't
beneficial. As such, I make the blink modes match the 5Hz / 20Hz for the
two modes.

Tested with VSC7512 by way of:
echo SGPIO_O_p1b0 {blink0,blink1,activity0,activity1} > 
/sys/kernel/debug/pinctrl/pinctrl-sgpio-pinctrl-sgpio-output/pinmux-select

LEDs blink!


Colin Foster (1):
  pinctrl: microchip-sgpio: add activity and blink functionality

 drivers/pinctrl/pinctrl-microchip-sgpio.c | 135 +++++++++++++++++++++-
 1 file changed, 130 insertions(+), 5 deletions(-)