[OpenWrt-Devel] [PATCH] b53: fix overriding port 8 state (if it is connected to CPU)

Jonas Gorski jogo at openwrt.org
Wed Mar 18 06:28:28 EDT 2015


On Wed, Mar 18, 2015 at 10:02 AM, Rafał Miłecki <zajec5 at gmail.com> wrote:
> Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
> ---
>  .../generic/files/drivers/net/phy/b53/b53_common.c | 23 +++++++++++++++++++++-
>  .../generic/files/drivers/net/phy/b53/b53_regs.h   |  1 +
>  2 files changed, 23 insertions(+), 1 deletion(-)
>
> diff --git a/target/linux/generic/files/drivers/net/phy/b53/b53_common.c b/target/linux/generic/files/drivers/net/phy/b53/b53_common.c
> index e44d194..4597742 100644
> --- a/target/linux/generic/files/drivers/net/phy/b53/b53_common.c
> +++ b/target/linux/generic/files/drivers/net/phy/b53/b53_common.c
> @@ -525,7 +525,7 @@ static int b53_switch_reset(struct b53_device *dev)
>                                 return -EINVAL;
>                         }
>                 }
> -       } else if ((is531x5(dev) || is5301x(dev)) && dev->sw_dev.cpu_port == B53_CPU_PORT) {
> +       } else if (is531x5(dev) && dev->sw_dev.cpu_port == B53_CPU_PORT) {
>                 u8 mii_port_override;
>
>                 b53_read8(dev, B53_CTRL_PAGE, B53_PORT_OVERRIDE_CTRL,
> @@ -533,6 +533,27 @@ static int b53_switch_reset(struct b53_device *dev)
>                 b53_write8(dev, B53_CTRL_PAGE, B53_PORT_OVERRIDE_CTRL,
>                            mii_port_override | PORT_OVERRIDE_EN |
>                            PORT_OVERRIDE_LINK);
> +       } else if (is5301x(dev)) {
> +               /*
> +                * CPU interface attached to port 8 requires specific handling.
> +                * It uses different overriding register and extra ports 5 and 7
> +                * need to be configured as well.
> +                */
> +               if (dev->sw_dev.cpu_port == 8) {
> +                       u8 mii_port_override;
> +
> +                       b53_read8(dev, B53_CTRL_PAGE, B53_PORT_OVERRIDE_CTRL,
> +                                 &mii_port_override);
> +                       mii_port_override |= PORT_OVERRIDE_LINK |
> +                                            PORT_OVERRIDE_RX_FLOW |
> +                                            PORT_OVERRIDE_TX_FLOW |
> +                                            PORT_OVERRIDE_SPEED_2000M |
> +                                            PORT_OVERRIDE_EN;
> +                       b53_write8(dev, B53_CTRL_PAGE, B53_PORT_OVERRIDE_CTRL,
> +                                  mii_port_override);
> +               } else {
> +                       pr_warn("overriding CPU port other than 8 is not supported yet\n");
> +               }
>         }
>
>         b53_enable_mib(dev);

How about

@@ -530,9 +530,16 @@ static int b53_switch_reset(struct b53_device *dev)

                b53_read8(dev, B53_CTRL_PAGE, B53_PORT_OVERRIDE_CTRL,
                          &mii_port_override);
+
+               mii_port_override |= PORT_OVERRIDE_LINK | PORT_OVERRIDE_EN;
+
+               if (is5301x(dev))
+                       mii_port_override |= PORT_OVERRIDE_RX_FLOW |
+                                            PORT_OVERRIDE_TX_FLOW |
+                                            PORT_OVERRIDE_SPEED_2000M;
+
                b53_write8(dev, B53_CTRL_PAGE, B53_PORT_OVERRIDE_CTRL,
-                          mii_port_override | PORT_OVERRIDE_EN |
-                          PORT_OVERRIDE_LINK);
+                          mii_port_override);
        }

        b53_enable_mib(dev);

instead of creating a full new branch?



Jonas
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list