All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jagan Teki <jagan@amarulasolutions.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/2] sun8i_emac: add support for setting EMAC TX/RX delay
Date: Thu, 22 Nov 2018 12:21:12 +0530	[thread overview]
Message-ID: <CAMty3ZAcUthTP_CL279ZBuEAO7Ngde_Fo7rqsBjQ4DuhN-7ffQ@mail.gmail.com> (raw)
In-Reply-To: <20181115220742.2530-1-alexander.weidinger@tum.de>

On Fri, Nov 16, 2018 at 9:08 PM Alexander Weidinger
<alexander.weidinger@tum.de> wrote:
>
> From: Icenowy Zheng <icenowy@aosc.io>
>
> Some boards have the EMAC TX/RX lanes wired with a different length with
> the clock lane, which can be workarounded by setting a TX/RX delay in
> the EMAC.
>
> This kind of delays are already defined in the newest device tree
> binding of dwmac-sun8i, which has already entered linux-next.
>
> Add support for setting these delays.
>
> Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
> ---
>  drivers/net/sun8i_emac.c | 31 +++++++++++++++++++++++++++++--
>  1 file changed, 29 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c
> index 3ba3a1ff8b..230ff045d5 100644
> --- a/drivers/net/sun8i_emac.c
> +++ b/drivers/net/sun8i_emac.c
> @@ -60,6 +60,10 @@
>  #define SC_ETCS_MASK           GENMASK(1, 0)
>  #define SC_ETCS_EXT_GMII       0x1
>  #define SC_ETCS_INT_GMII       0x2
> +#define SC_ETXDC_MASK          GENMASK(12, 10)
> +#define SC_ETXDC_OFFSET                10
> +#define SC_ERXDC_MASK          GENMASK(9, 5)
> +#define SC_ERXDC_OFFSET                5
>
>  #define CONFIG_MDIO_TIMEOUT    (3 * CONFIG_SYS_HZ)
>
> @@ -140,6 +144,8 @@ struct emac_eth_dev {
>  struct sun8i_eth_pdata {
>         struct eth_pdata eth_pdata;
>         u32 reset_delays[3];
> +       int tx_delay_ps;
> +       int rx_delay_ps;
>  };
>
>
> @@ -273,7 +279,8 @@ static int sun8i_emac_set_syscon_ephy(struct emac_eth_dev *priv, u32 *reg)
>         return 0;
>  }
>
> -static int sun8i_emac_set_syscon(struct emac_eth_dev *priv)
> +static int sun8i_emac_set_syscon(struct sun8i_eth_pdata *pdata,
> +                                struct emac_eth_dev *priv)
>  {
>         int ret;
>         u32 reg;
> @@ -312,6 +319,14 @@ static int sun8i_emac_set_syscon(struct emac_eth_dev *priv)
>                 return -EINVAL;
>         }
>
> +       if (pdata->tx_delay_ps)
> +               reg |= ((pdata->tx_delay_ps / 100) << SC_ETXDC_OFFSET)
> +                        & SC_ETXDC_MASK;
> +
> +       if (pdata->rx_delay_ps)
> +               reg |= ((pdata->rx_delay_ps / 100) << SC_ERXDC_OFFSET)
> +                        & SC_ERXDC_MASK;
> +
>         writel(reg, priv->sysctl_reg + 0x30);
>
>         return 0;
> @@ -790,7 +805,7 @@ static int sun8i_emac_eth_probe(struct udevice *dev)
>         priv->mac_reg = (void *)pdata->iobase;
>
>         sun8i_emac_board_setup(priv);
> -       sun8i_emac_set_syscon(priv);
> +       sun8i_emac_set_syscon((struct sun8i_eth_pdata *)pdata, priv);

We can get the platdata using dev_get_platdata instead of this type casting.

  parent reply	other threads:[~2018-11-22  6:51 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-15 22:07 [U-Boot] [PATCH 1/2] sun8i_emac: add support for setting EMAC TX/RX delay Alexander Weidinger
2018-11-15 22:07 ` [U-Boot] [PATCH 2/2] enable EMAC for A64-OLinuXino Alexander Weidinger
2018-11-22  6:52   ` Jagan Teki
2018-11-22  6:51 ` Jagan Teki [this message]
2018-11-22 23:37 ` [U-Boot] [PATCH v2] sun8i_emac: add support for setting EMAC TX/RX delay Alexander Weidinger
2018-11-23  5:34   ` Jagan Teki
2018-11-23  9:56     ` Alexander Weidinger

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=CAMty3ZAcUthTP_CL279ZBuEAO7Ngde_Fo7rqsBjQ4DuhN-7ffQ@mail.gmail.com \
    --to=jagan@amarulasolutions.com \
    --cc=u-boot@lists.denx.de \
    /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.