[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20231025201015.GL57304@kernel.org>
Date: Wed, 25 Oct 2023 21:10:15 +0100
From: Simon Horman <horms@...nel.org>
To: Oleksij Rempel <o.rempel@...gutronix.de>
Cc: "David S. Miller" <davem@...emloft.net>, Andrew Lunn <andrew@...n.ch>,
Eric Dumazet <edumazet@...gle.com>,
Florian Fainelli <f.fainelli@...il.com>,
Jakub Kicinski <kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>,
Vladimir Oltean <olteanv@...il.com>,
Woojung Huh <woojung.huh@...rochip.com>,
Arun Ramadoss <arun.ramadoss@...rochip.com>,
Conor Dooley <conor+dt@...nel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@...aro.org>,
Rob Herring <robh+dt@...nel.org>,
Florian Fainelli <florian.fainelli@...adcom.com>,
kernel@...gutronix.de, linux-kernel@...r.kernel.org,
netdev@...r.kernel.org, UNGLinuxDriver@...rochip.com,
"Russell King (Oracle)" <linux@...linux.org.uk>,
devicetree@...r.kernel.org
Subject: Re: [PATCH net-next v7 4/9] net: dsa: microchip: ksz9477: add Wake
on LAN support
On Mon, Oct 23, 2023 at 11:33:38AM +0200, Oleksij Rempel wrote:
> Add WoL support for KSZ9477 family of switches. This code was tested on
> KSZ8563 chip.
>
> KSZ9477 family of switches supports multiple PHY events:
> - wake on Link Up
> - wake on Energy Detect.
> Since current UAPI can't differentiate between this PHY events, map all
> of them to WAKE_PHY.
>
> Signed-off-by: Oleksij Rempel <o.rempel@...gutronix.de>
> Reviewed-by: Andrew Lunn <andrew@...n.ch>
> Reviewed-by: Florian Fainelli <florian.fainelli@...adcom.com>
> ---
> drivers/net/dsa/microchip/ksz9477.c | 100 +++++++++++++++++++++++++
> drivers/net/dsa/microchip/ksz9477.h | 4 +
> drivers/net/dsa/microchip/ksz_common.c | 24 ++++++
> drivers/net/dsa/microchip/ksz_common.h | 4 +
> 4 files changed, 132 insertions(+)
>
> diff --git a/drivers/net/dsa/microchip/ksz9477.c b/drivers/net/dsa/microchip/ksz9477.c
> index cde8ef33d029..036dfaddb32a 100644
> --- a/drivers/net/dsa/microchip/ksz9477.c
> +++ b/drivers/net/dsa/microchip/ksz9477.c
> @@ -56,6 +56,103 @@ int ksz9477_change_mtu(struct ksz_device *dev, int port, int mtu)
> REG_SW_MTU_MASK, frame_size);
> }
>
> +/**
> + * ksz9477_handle_wake_reason - Handle wake reason on a specified port.
> + * @dev: The device structure.
> + * @port: The port number.
> + *
> + * This function reads the PME (Power Management Event) status register of a
> + * specified port to determine the wake reason. If there is no wake event, it
> + * returns early. Otherwise, it logs the wake reason which could be due to a
> + * "Magic Packet", "Link Up", or "Energy Detect" event. The PME status register
> + * is then cleared to acknowledge the handling of the wake event.
> + *
> + * Return: 0 on success, or an error code on failure.
> + */
> +static int ksz9477_handle_wake_reason(struct ksz_device *dev, int port)
> +{
> + u8 pme_status;
> + int ret;
> +
> + ret = ksz_pread8(dev, port, REG_PORT_PME_STATUS, &pme_status);
> + if (ret)
> + return ret;
> +
> + if (!pme_status)
> + return 0;
> +
> + dev_dbg(dev->dev, "Wake event on port %d due to:%s%s\n", port,
> + pme_status & PME_WOL_LINKUP ? " \"Link Up\"" : "",
> + pme_status & PME_WOL_ENERGY ? " \"Enery detect\"" : "");
nit: Energy
> +
> + return ksz_pwrite8(dev, port, REG_PORT_PME_STATUS, pme_status);
> +}
...
Powered by blists - more mailing lists