All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Horatiu Vultur <horatiu.vultur@microchip.com>
Cc: andrew@lunn.ch, hkallweit1@gmail.com, davem@davemloft.net,
	edumazet@google.com, kuba@kernel.org, pabeni@redhat.com,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH net v3 1/2] net: phy: micrel: lan8842 errata
Date: Thu, 30 Oct 2025 10:33:26 +0000	[thread overview]
Message-ID: <aQM-9u6MQKN_t9fE@shell.armlinux.org.uk> (raw)
In-Reply-To: <20251030074941.611454-2-horatiu.vultur@microchip.com>

On Thu, Oct 30, 2025 at 08:49:40AM +0100, Horatiu Vultur wrote:
> +static int lan8842_erratas(struct phy_device *phydev)
> +{
> +	int ret;
> +
> +	/* Magjack center tapped ports */
> +	ret = lanphy_write_page_reg(phydev, LAN8814_PAGE_POWER_REGS,
> +				    LAN8814_POWER_MGMT_MODE_3_ANEG_MDI,
> +				    LAN8814_POWER_MGMT_VAL1);
> +	if (ret < 0)
> +		return ret;
> +
> +	ret = lanphy_write_page_reg(phydev, LAN8814_PAGE_POWER_REGS,
> +				    LAN8814_POWER_MGMT_MODE_4_ANEG_MDIX,
> +				    LAN8814_POWER_MGMT_VAL1);
> +	if (ret < 0)
> +		return ret;
> +
> +	ret = lanphy_write_page_reg(phydev, LAN8814_PAGE_POWER_REGS,
> +				    LAN8814_POWER_MGMT_MODE_5_10BT_MDI,
> +				    LAN8814_POWER_MGMT_VAL1);
> +	if (ret < 0)
> +		return ret;
> +
> +	ret = lanphy_write_page_reg(phydev, LAN8814_PAGE_POWER_REGS,
> +				    LAN8814_POWER_MGMT_MODE_6_10BT_MDIX,
> +				    LAN8814_POWER_MGMT_VAL1);
> +	if (ret < 0)
> +		return ret;
> +
> +	ret = lanphy_write_page_reg(phydev, LAN8814_PAGE_POWER_REGS,
> +				    LAN8814_POWER_MGMT_MODE_7_100BT_TRAIN,
> +				    LAN8814_POWER_MGMT_VAL2);
> +	if (ret < 0)
> +		return ret;
> +
> +	ret = lanphy_write_page_reg(phydev, LAN8814_PAGE_POWER_REGS,
> +				    LAN8814_POWER_MGMT_MODE_8_100BT_MDI,
> +				    LAN8814_POWER_MGMT_VAL3);
> +	if (ret < 0)
> +		return ret;
> +
> +	ret = lanphy_write_page_reg(phydev, LAN8814_PAGE_POWER_REGS,
> +				    LAN8814_POWER_MGMT_MODE_9_100BT_EEE_MDI_TX,
> +				    LAN8814_POWER_MGMT_VAL3);
> +	if (ret < 0)
> +		return ret;
> +
> +	ret = lanphy_write_page_reg(phydev, LAN8814_PAGE_POWER_REGS,
> +				    LAN8814_POWER_MGMT_MODE_10_100BT_EEE_MDI_RX,
> +				    LAN8814_POWER_MGMT_VAL4);
> +	if (ret < 0)
> +		return ret;
> +
> +	ret = lanphy_write_page_reg(phydev, LAN8814_PAGE_POWER_REGS,
> +				    LAN8814_POWER_MGMT_MODE_11_100BT_MDIX,
> +				    LAN8814_POWER_MGMT_VAL5);
> +	if (ret < 0)
> +		return ret;
> +
> +	ret = lanphy_write_page_reg(phydev, LAN8814_PAGE_POWER_REGS,
> +				    LAN8814_POWER_MGMT_MODE_12_100BT_EEE_MDIX_TX,
> +				    LAN8814_POWER_MGMT_VAL5);
> +	if (ret < 0)
> +		return ret;
> +
> +	ret = lanphy_write_page_reg(phydev, LAN8814_PAGE_POWER_REGS,
> +				    LAN8814_POWER_MGMT_MODE_13_100BT_EEE_MDIX_RX,
> +				    LAN8814_POWER_MGMT_VAL4);
> +	if (ret < 0)
> +		return ret;
> +
> +	return lanphy_write_page_reg(phydev, LAN8814_PAGE_POWER_REGS,
> +				     LAN8814_POWER_MGMT_MODE_14_100BTX_EEE_TX_RX,
> +				     LAN8814_POWER_MGMT_VAL4);

This is a lot of repetition.

Is it worth storing the errata register information in a struct, and
then using a loop to write these registers. Something like:

struct lanphy_reg_data {
	int page;
	u16 addr;
	u16 val;
;

static const struct lanphy_reg_data short_centre_tap_errata[] = {
	...
};

static int lanphy_write_reg_data(struct phy_device *phydev,
				 const struct lanphy_reg_data *data,
				 size_t num)
{
	int ret = 0;

	while (num--) {
		ret = lanphy_write_page_reg(phydev, data->page, data->addr,
					    data->val);
		if (ret)
			break;
	}

	return 0;
}

static int lan8842_erratas(struct phy_device *phydev)
{
	int ret;

	ret = lanphy_write_reg_data(phydev, short_centre_tap_errata,
				    ARRAY_SIZE(short_centre_tap_errata));
	if (ret)
		return ret;

	return lanphy_write_reg_data(phydev, blah_errata,
				     ARRAY_SIZE(blah_errata));
}

?

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

  reply	other threads:[~2025-10-30 10:33 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-30  7:49 [PATCH net v3 0/2] net: phy: micrel: lan8842 erratas Horatiu Vultur
2025-10-30  7:49 ` [PATCH net v3 1/2] net: phy: micrel: lan8842 errata Horatiu Vultur
2025-10-30 10:33   ` Russell King (Oracle) [this message]
2025-10-31  7:54     ` Horatiu Vultur
2025-10-30  7:49 ` [PATCH net v3 2/2] " Horatiu Vultur

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=aQM-9u6MQKN_t9fE@shell.armlinux.org.uk \
    --to=linux@armlinux.org.uk \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=hkallweit1@gmail.com \
    --cc=horatiu.vultur@microchip.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --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.