[U-Boot] [PATCH 3/3] net: zynq: Disable secondary queues

Joe Hershberger joe.hershberger at gmail.com
Mon Nov 2 22:31:17 CET 2015


Hi Michal & Edgar,

On Tue, Oct 27, 2015 at 10:08 AM, Michal Simek <michal.simek at xilinx.com> wrote:
> From: "Edgar E. Iglesias" <edgar.iglesias at xilinx.com>
>
> Zynq has no priority queues.
> ZynqMP requires this change to get network working.
> This patch was not needed on ep108 for uknown reason even it should be
> used.
> Tested on Zynq and ZynqMP.
>
> Signed-off-by: Edgar E. Iglesias <edgar.iglesias at xilinx.com>
> Signed-off-by: Michal Simek <michal.simek at xilinx.com>
> ---
>
>  drivers/net/zynq_gem.c | 26 ++++++++++++++++++++++++++
>  1 file changed, 26 insertions(+)
>
> diff --git a/drivers/net/zynq_gem.c b/drivers/net/zynq_gem.c
> index f32862fd0b2e..0e741dd605a6 100644
> --- a/drivers/net/zynq_gem.c
> +++ b/drivers/net/zynq_gem.c
> @@ -131,6 +131,10 @@ struct zynq_gem_regs {
>         u32 reserved6[18];
>  #define STAT_SIZE      44
>         u32 stat[STAT_SIZE]; /* 0x100 - Octects transmitted Low reg */
> +       u32 reserved7[164];
> +       u32 transmit_q1_ptr; /* 0x440 - Transmit priority queue 1 */
> +       u32 reserved8[15];
> +       u32 receive_q1_ptr; /* 0x480 - Receive priority queue 1 */
>  };
>
>  /* BD descriptors */
> @@ -304,6 +308,8 @@ static int zynq_gem_init(struct eth_device *dev, bd_t * bis)
>         struct phy_device *phydev;
>         struct zynq_gem_regs *regs = (struct zynq_gem_regs *)dev->iobase;
>         struct zynq_gem_priv *priv = dev->priv;
> +       struct emac_bd *dummy_tx_bd = &priv->tx_bd[4];
> +       struct emac_bd *dummy_rx_bd = &priv->tx_bd[6];

Please add comments about the magic "4" and "6".

>         const u32 supported = SUPPORTED_10baseT_Half |
>                         SUPPORTED_10baseT_Full |
>                         SUPPORTED_100baseT_Half |
> @@ -352,6 +358,26 @@ static int zynq_gem_init(struct eth_device *dev, bd_t * bis)
>                 /* Setup for Network Control register, MDIO, Rx and Tx enable */
>                 setbits_le32(&regs->nwctrl, ZYNQ_GEM_NWCTRL_MDEN_MASK);
>
> +               /*
> +                * Disable the second priority queue.
> +                * FIXME: Consider GEMs with more than 2 queues.
> +                */

Please don't include FIXME comments.

> +               dummy_tx_bd->addr = 0;
> +               dummy_tx_bd->status = ZYNQ_GEM_TXBUF_WRAP_MASK |
> +                               ZYNQ_GEM_TXBUF_LAST_MASK|
> +                               ZYNQ_GEM_TXBUF_USED_MASK;
> +
> +               dummy_rx_bd->addr = ZYNQ_GEM_RXBUF_WRAP_MASK |
> +                               ZYNQ_GEM_RXBUF_NEW_MASK;
> +               dummy_rx_bd->status = 0;
> +               flush_dcache_range((ulong)&dummy_tx_bd, (ulong)&dummy_tx_bd +
> +                                  sizeof(dummy_tx_bd));
> +               flush_dcache_range((ulong)&dummy_rx_bd, (ulong)&dummy_rx_bd +
> +                                  sizeof(dummy_rx_bd));
> +
> +               writel((u32)dummy_tx_bd, &regs->transmit_q1_ptr);
> +               writel((u32)dummy_rx_bd, &regs->receive_q1_ptr);
> +
>                 priv->init++;
>         }
>
> --
> 2.5.0
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot


More information about the U-Boot mailing list