[OpenWrt-Devel] [PATCH 3/4] kernel: allow device-tree configuration of at803x
John Crispin
john at phrozen.org
Wed Aug 8 02:34:38 EDT 2018
On 06/08/18 16:21, David Bauer wrote:
> This commit adds the ability to configure specific functions of the
> at803x series ethernet-PHYs, which were previously configured
> exclusively with the help of platform-data, via device-tree.
>
> This is needed to fully support existing boards of the ar71xx platform.
>
> Signed-off-by: David Bauer <mail at david-bauer.net>
> ---
> ...phy-at803x-allow-to-configure-via-dt.patch | 49 +++++++++++++++++++
> 1 file changed, 49 insertions(+)
> create mode 100644 target/linux/generic/pending-4.14/736-net-phy-at803x-allow-to-configure-via-dt.patch
>
> diff --git a/target/linux/generic/pending-4.14/736-net-phy-at803x-allow-to-configure-via-dt.patch b/target/linux/generic/pending-4.14/736-net-phy-at803x-allow-to-configure-via-dt.patch
> new file mode 100644
> index 0000000000..daff25b633
> --- /dev/null
> +++ b/target/linux/generic/pending-4.14/736-net-phy-at803x-allow-to-configure-via-dt.patch
> @@ -0,0 +1,49 @@
> +Index: linux-4.14.60/drivers/net/phy/at803x.c
> +===================================================================
> +--- linux-4.14.60.orig/drivers/net/phy/at803x.c
> ++++ linux-4.14.60/drivers/net/phy/at803x.c
> +@@ -354,6 +354,14 @@ static int at803x_config_init(struct phy
> + AT803X_DEBUG_TX_CLK_DLY_EN, 0);
> + }
> +
> ++#ifdef CONFIG_OF_MDIO
the ifdef seems superfluous and again this should be part of the
at803x_priv struct. however looking at the current code it seems that
the patchery is inconsistent and the driver is pretty messy. we should
consider cleaning this up and consolidating the driver patches and move
them to generic/
John
> ++ if (phydev->mdio.dev.of_node &&
> ++ of_property_read_bool(phydev->mdio.dev.of_node,
> ++ "at803x-disable-smarteee")) {
> ++ at803x_disable_smarteee(phydev);
> ++ }
> ++#endif
> ++
> + return 0;
> + }
> +
> +@@ -392,6 +400,7 @@ static void at803x_link_change_notify(st
> + {
> + struct at803x_priv *priv = phydev->priv;
> + struct at803x_platform_data *pdata;
> ++ u8 fixup_rgmii_tx_delay = 0;
> + pdata = dev_get_platdata(&phydev->mdio.dev);
> +
> + /*
> +@@ -421,8 +430,19 @@ static void at803x_link_change_notify(st
> + } else {
> + priv->phy_reset = false;
> + }
> +- if (pdata && pdata->fixup_rgmii_tx_delay &&
> +- phydev->speed != priv->prev_speed) {
> ++
> ++ if (pdata && pdata->fixup_rgmii_tx_delay)
> ++ fixup_rgmii_tx_delay = 1;
> ++
> ++#ifdef CONFIG_OF_MDIO
> ++ if (phydev->mdio.dev.of_node &&
> ++ of_property_read_bool(phydev->mdio.dev.of_node,
> ++ "at803x-fixup-rgmii-tx-delay")) {
> ++ fixup_rgmii_tx_delay = 1;
> ++ }
> ++#endif
> ++
> ++ if (fixup_rgmii_tx_delay && phydev->speed != priv->prev_speed) {
> + switch (phydev->speed) {
> + case SPEED_10:
> + case SPEED_100:
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list