[OpenWrt-Devel] [PATCH 1/3] kernel: rtl8366_smi: explicitly set phy addr for switch

Vincent Wiemann vincent.wiemann at ironai.com
Sat Aug 17 13:59:54 EDT 2019


Hi Serge,

thank you very much for this contribution. I can only give some cosmetic
advice. I'm not sure about the functionality.

On 15.08.19 10:27, Serge Vasilugin wrote:
> By default rtl8366_smi use phy addr 0 at mii-bus to access switch registers.
> This patch allow to set it explicitly in dts-file:
> 
>     rtl8367 {
>         compatible = "realtek,rtl8367b";
>         phy_id = <29>; /* switch address at mii-bus */
>         realtek,extif2 = <1 0 1 1 1 1 1 1 2>;
>         mii-bus = <&mdio>;
>         cpu-port = <7>;
>     }
> 
> Use default 0 address if not set.
> Backward compatibility tested on tplink archer c2 v1 (rtl8367rb switch)
> 
> Signed-off-by: Serge Vasilugin <vasilugin at yandex.ru>
> 
> --- a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c
> +++ b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c
> @@ -256,7 +256,7 @@ static int __rtl8366_smi_read_reg(struct rtl8366_smi *smi, u32 addr, u32 *data)
> 
>  int __rtl8366_mdio_read_reg(struct rtl8366_smi *smi, u32 addr, u32 *data)
>  {
> -    u32 phy_id = MDC_REALTEK_PHY_ADDR;
> +    u32 phy_id = smi->phy_id;
>      struct mii_bus *mbus = smi->ext_mbus;
> 
>      BUG_ON(in_interrupt());
> @@ -293,7 +293,7 @@ int __rtl8366_mdio_read_reg(struct rtl8366_smi *smi, u32 addr, u32 *data)
> 
>  static int __rtl8366_mdio_write_reg(struct rtl8366_smi *smi, u32 addr, u32 data)
>  {
> -    u32 phy_id = MDC_REALTEK_PHY_ADDR;
> +    u32 phy_id = smi->phy_id;
>      struct mii_bus *mbus = smi->ext_mbus;
> 
>      BUG_ON(in_interrupt());
> @@ -1558,6 +1558,12 @@ int rtl8366_smi_probe_of(struct platform_device *pdev, struct rtl8366_smi *smi)
>          goto try_gpio;
>      }
> 
> +    of_property_read_u32(np, "phy_id", &smi->phy_id);
> +    if(smi->phy_id < 0) {
> +        smi->phy_id = MDC_REALTEK_PHY_ADDR;
> +    }

Please add a newline here.

> +    dev_info(&pdev->dev,
> +        "switch phy addr=%d\n", smi->phy_id);

Please add a newline here.

>      return 0;
> 
>  try_gpio:
> --- a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h
> +++ b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h
> @@ -64,6 +64,7 @@ struct rtl8366_smi {
>      u8            dbg_vlan_4k_page;
>  #endif
>      struct mii_bus        *ext_mbus;
> +    int phy_id;

u32 here?

>  };
> 
>  struct rtl8366_vlan_mc {
> ---
> serge
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
> 

Regards,

Vincent

_______________________________________________
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