From: Oleksij Rempel <o.rempel@pengutronix.de>
To: Thomas Wismer <thomas@wismer.xyz>
Cc: Kory Maincent <kory.maincent@bootlin.com>,
Andrew Lunn <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Thomas Wismer <thomas.wismer@scs.ch>,
netdev@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH net-next v2 1/2] net: pse-pd: tps23881: Add support for TPS23881B
Date: Fri, 24 Oct 2025 12:49:58 +0200 [thread overview]
Message-ID: <aPtZ1jE7D7JI2wic@pengutronix.de> (raw)
In-Reply-To: <20251022220519.11252-4-thomas@wismer.xyz>
Hi Thomas,
Thank you for your work.
Looks good, here are some nits:
On Thu, Oct 23, 2025 at 12:05:18AM +0200, Thomas Wismer wrote:
> From: Thomas Wismer <thomas.wismer@scs.ch>
>
> The TPS23881B uses different firmware than the TPS23881. Trying to load the
> TPS23881 firmware on a TPS23881B device fails and must be omitted.
>
> The TPS23881B ships with a more recent ROM firmware. Moreover, no updated
> firmware has been released yet and so the firmware loading step must be
> skipped. As of today, the TPS23881B is intended to use its ROM firmware.
>
> Signed-off-by: Thomas Wismer <thomas.wismer@scs.ch>
> ---
> drivers/net/pse-pd/tps23881.c | 65 +++++++++++++++++++++++++++--------
> 1 file changed, 51 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/net/pse-pd/tps23881.c b/drivers/net/pse-pd/tps23881.c
> index b724b222ab44..f45c08759082 100644
> --- a/drivers/net/pse-pd/tps23881.c
> +++ b/drivers/net/pse-pd/tps23881.c
> @@ -55,8 +55,6 @@
> #define TPS23881_REG_TPON BIT(0)
> #define TPS23881_REG_FWREV 0x41
> #define TPS23881_REG_DEVID 0x43
> -#define TPS23881_REG_DEVID_MASK 0xF0
> -#define TPS23881_DEVICE_ID 0x02
> #define TPS23881_REG_CHAN1_CLASS 0x4c
> #define TPS23881_REG_SRAM_CTRL 0x60
> #define TPS23881_REG_SRAM_DATA 0x61
> @@ -1012,8 +1010,28 @@ static const struct pse_controller_ops tps23881_ops = {
> .pi_get_pw_req = tps23881_pi_get_pw_req,
> };
>
> -static const char fw_parity_name[] = "ti/tps23881/tps23881-parity-14.bin";
> -static const char fw_sram_name[] = "ti/tps23881/tps23881-sram-14.bin";
> +struct tps23881_info {
> + u8 dev_id; /* device ID and silicon revision */
> + const char *fw_parity_name; /* parity code firmware file name */
> + const char *fw_sram_name; /* SRAM code firmware file name */
> +};
> +
> +enum tps23881_model {
> + TPS23881,
> + TPS23881B,
> +};
> +
> +static const struct tps23881_info tps23881_info[] = {
> + [TPS23881] = {
> + .dev_id = 0x22,
> + .fw_parity_name = "ti/tps23881/tps23881-parity-14.bin",
> + .fw_sram_name = "ti/tps23881/tps23881-sram-14.bin",
> + },
> + [TPS23881B] = {
> + .dev_id = 0x24,
> + /* skip SRAM load, ROM firmware already IEEE802.3bt compliant */
TL;DR:
A more accurate comment would be:
/* skip SRAM load, ROM provides Clause 145 hardware-level support */
Longer version:
Please reference IEEE 802.3-2022 (Clause 145) instead of the "IEEE
802.3bt" amendment:
- The IEEE 802.3-2022 standard is free for everyone with the IEEE Xplore
program.
- The "bt" amendment costs money.
- Using the free standard helps all community members review this driver.
The chip (hardware) alone cannot be "compliant." Full compliance for
Type 3 or Type 4 needs the whole system to work correctly:
- The Linux system must handle the DLL (LLDP) classification in software.
The chip's ROM does not do this.
- The board must supply the correct voltage (e.g., 52V to 57V for Type
4). This chip's minimum 44V is not compliant with Clause 145.
- The final power supply and board must be designed to handle the high
power (like 90W).
[...]
> @@ -1422,6 +1442,10 @@ static int tps23881_i2c_probe(struct i2c_client *client)
[...]
>
> - dev_info(&client->dev, "Firmware revision 0x%x\n", ret);
> + if (ret == 0xFF)
> + dev_warn(&client->dev, "Device entered safe mode\n");
return -ENODEV; /* Or another appropriate error */
The datasheet states this happens on an "un-recoverable firmware fault."
According to the datasheet, when in "Safe Mode," all ports are shut
down. The device is not in a functional state to act as a PSE
controller.
> + else
> + dev_info(&client->dev, "Firmware revision 0x%x%s\n", ret,
> + ret == 0x00 ? " (ROM firmware)" : "");
>
> /* Set configuration B, 16 bit access on a single device address */
> ret = i2c_smbus_read_byte_data(client, TPS23881_REG_GEN_MASK);
> @@ -1504,7 +1534,14 @@ static const struct i2c_device_id tps23881_id[] = {
> MODULE_DEVICE_TABLE(i2c, tps23881_id);
I guess tps23881_id should be updated too.
Best Regards,
Oleksij
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
next prev parent reply other threads:[~2025-10-24 10:50 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-22 22:05 [PATCH net-next v2 0/2] net: pse-pd: Add TPS23881B support Thomas Wismer
2025-10-22 22:05 ` [PATCH net-next v2 1/2] net: pse-pd: tps23881: Add support for TPS23881B Thomas Wismer
2025-10-24 10:49 ` Oleksij Rempel [this message]
2025-10-29 19:35 ` Thomas Wismer
2025-10-22 22:05 ` [PATCH net-next v2 2/2] dt-bindings: pse-pd: ti,tps23881: Add TPS23881B Thomas Wismer
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=aPtZ1jE7D7JI2wic@pengutronix.de \
--to=o.rempel@pengutronix.de \
--cc=andrew+netdev@lunn.ch \
--cc=conor+dt@kernel.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=edumazet@google.com \
--cc=kory.maincent@bootlin.com \
--cc=krzk+dt@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=robh@kernel.org \
--cc=thomas.wismer@scs.ch \
--cc=thomas@wismer.xyz \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).