From: Stefan Eichenberger <eichest@gmail.com>
To: Dimitri Fedrau <dima.fedrau@gmail.com>
Cc: "Andrew Lunn" <andrew@lunn.ch>,
"Heiner Kallweit" <hkallweit1@gmail.com>,
"Russell King" <linux@armlinux.org.uk>,
"David S. Miller" <davem@davemloft.net>,
"Eric Dumazet" <edumazet@google.com>,
"Jakub Kicinski" <kuba@kernel.org>,
"Paolo Abeni" <pabeni@redhat.com>,
"Niklas Söderlund" <niklas.soderlund+renesas@ragnatech.se>,
"Gregor Herburger" <gregor.herburger@ew.tq-group.com>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] net: phy: marvell-88q2xxx: Add support for PHY LEDs on 88q2xxx
Date: Fri, 10 Jan 2025 18:27:43 +0100 [thread overview]
Message-ID: <Z4FYjw596FQE4RMP@eichest-laptop> (raw)
In-Reply-To: <20250110-marvell-88q2xxx-leds-v1-1-22e7734941c2@gmail.com>
Hi Dimitri ,
On Fri, Jan 10, 2025 at 04:10:04PM +0100, Dimitri Fedrau wrote:
> Marvell 88Q2XXX devices support up to two configurable Light Emitting
> Diode (LED). Add minimal LED controller driver supporting the most common
> uses with the 'netdev' trigger.
>
> Signed-off-by: Dimitri Fedrau <dima.fedrau@gmail.com>
> ---
> drivers/net/phy/marvell-88q2xxx.c | 161 ++++++++++++++++++++++++++++++++++++++
> 1 file changed, 161 insertions(+)
>
> diff --git a/drivers/net/phy/marvell-88q2xxx.c b/drivers/net/phy/marvell-88q2xxx.c
> index 5107f58338aff4ed6cfea4d91e37282d9bb60ba5..bef3357b9d279fca5d1f86ff0eaa0d45a699e3f9 100644
> --- a/drivers/net/phy/marvell-88q2xxx.c
> +++ b/drivers/net/phy/marvell-88q2xxx.c
> @@ -8,6 +8,7 @@
> */
> #include <linux/ethtool_netlink.h>
> #include <linux/marvell_phy.h>
> +#include <linux/of.h>
> #include <linux/phy.h>
> #include <linux/hwmon.h>
>
> @@ -27,6 +28,9 @@
> #define MDIO_MMD_AN_MV_STAT2_100BT1 0x2000
> #define MDIO_MMD_AN_MV_STAT2_1000BT1 0x4000
>
> +#define MDIO_MMD_PCS_MV_RESET_CTRL 32768
> +#define MDIO_MMD_PCS_MV_RESET_CTRL_TX_DISABLE 0x8
> +
> #define MDIO_MMD_PCS_MV_INT_EN 32784
> #define MDIO_MMD_PCS_MV_INT_EN_LINK_UP 0x0040
> #define MDIO_MMD_PCS_MV_INT_EN_LINK_DOWN 0x0080
> @@ -40,6 +44,15 @@
> #define MDIO_MMD_PCS_MV_GPIO_INT_CTRL 32787
> #define MDIO_MMD_PCS_MV_GPIO_INT_CTRL_TRI_DIS 0x0800
>
> +#define MDIO_MMD_PCS_MV_LED_FUNC_CTRL 32790
> +#define MDIO_MMD_PCS_MV_LED_FUNC_CTRL_GPIO_MASK GENMASK(7, 4)
> +#define MDIO_MMD_PCS_MV_LED_FUNC_CTRL_TX_EN_MASK GENMASK(3, 0)
> +#define MDIO_MMD_PCS_MV_LED_FUNC_CTRL_LINK 0x0 /* Link established */
> +#define MDIO_MMD_PCS_MV_LED_FUNC_CTRL_LINK_RX_TX 0x1 /* Link established, blink for rx or tx activity */
> +#define MDIO_MMD_PCS_MV_LED_FUNC_CTRL_RX_TX 0x4 /* Receive or Transmit activity */
> +#define MDIO_MMD_PCS_MV_LED_FUNC_CTRL_TX 0x5 /* Transmit activity */
> +#define MDIO_MMD_PCS_MV_LED_FUNC_CTRL_LINK_1000BT1 0x7 /* 1000BT1 link established */
> +
> #define MDIO_MMD_PCS_MV_TEMP_SENSOR1 32833
> #define MDIO_MMD_PCS_MV_TEMP_SENSOR1_RAW_INT 0x0001
> #define MDIO_MMD_PCS_MV_TEMP_SENSOR1_INT 0x0040
> @@ -95,6 +108,9 @@
>
> #define MDIO_MMD_PCS_MV_TDR_OFF_CUTOFF 65246
>
> +#define MV88Q2XXX_LED_INDEX_TX_ENABLE 0
> +#define MV88Q2XXX_LED_INDEX_GPIO 1
Not sure if I understand this. TX_ENABLE would be LED0 and GPIO would be
LED1? In my datasheet the 88Q222x only has a GPIO pin (which is also
TX_ENABLE), is this a problem? Would we need a led_count variable per
chip?
In the 88Q2110 I can see that there is a TX_ENABLE (0) and a GPIO (1)
pin. In the register description they just call it LED [0] Control and
LED [1] Control. Maybe calling it LED_0 and LED_1 would be easier to
understand? Same for MDIO_MMD_PCS_MV_LED_FUNC_CTRL_GPIO_MASK and
MDIO_MMD_PCS_MV_LED_FUNC_CTRL_TX_EN_MASK.
> +
> struct mmd_val {
> int devad;
> u32 regnum;
> @@ -741,8 +757,58 @@ static int mv88q2xxx_hwmon_probe(struct phy_device *phydev)
> }
> #endif
>
> +#if IS_ENABLED(CONFIG_OF_MDIO)
> +static int mv88q2xxx_leds_probe(struct phy_device *phydev)
> +{
> + struct device_node *node = phydev->mdio.dev.of_node;
> + struct device_node *leds;
> + int ret = 0;
> + u32 index;
> +
> + if (!node)
> + return 0;
> +
> + leds = of_get_child_by_name(node, "leds");
> + if (!leds)
> + return 0;
> +
> + for_each_available_child_of_node_scoped(leds, led) {
> + ret = of_property_read_u32(led, "reg", &index);
> + if (ret)
> + goto exit;
> +
> + if (index > MV88Q2XXX_LED_INDEX_GPIO) {
> + ret = -EINVAL;
> + goto exit;
> + }
> +
> + if (index == MV88Q2XXX_LED_INDEX_TX_ENABLE)
> + ret = phy_clear_bits_mmd(phydev, MDIO_MMD_PCS,
> + MDIO_MMD_PCS_MV_RESET_CTRL,
> + MDIO_MMD_PCS_MV_RESET_CTRL_TX_DISABLE);
If I understand it correctly, this switches the function of the pin from
TX_DISABLE to GPIO? Can you maybe add a comment here?
Regards,
Stefan
next prev parent reply other threads:[~2025-01-10 17:27 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-10 15:10 [PATCH] net: phy: marvell-88q2xxx: Add support for PHY LEDs on 88q2xxx Dimitri Fedrau
2025-01-10 17:27 ` Stefan Eichenberger [this message]
2025-01-10 17:52 ` Andrew Lunn
2025-01-10 18:40 ` Dimitri Fedrau
2025-01-10 18:30 ` Dimitri Fedrau
2025-01-13 7:57 ` Stefan Eichenberger
2025-01-13 8:55 ` Dimitri Fedrau
2025-01-13 8:05 ` Stefan Eichenberger
2025-01-13 9:25 ` Dimitri Fedrau
2025-01-13 9:38 ` Stefan Eichenberger
2025-01-10 17:56 ` Andrew Lunn
2025-01-10 18:43 ` Dimitri Fedrau
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=Z4FYjw596FQE4RMP@eichest-laptop \
--to=eichest@gmail.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=dima.fedrau@gmail.com \
--cc=edumazet@google.com \
--cc=gregor.herburger@ew.tq-group.com \
--cc=hkallweit1@gmail.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=netdev@vger.kernel.org \
--cc=niklas.soderlund+renesas@ragnatech.se \
--cc=pabeni@redhat.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.