All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
To: Caesar Wang <wxt@rock-chips.com>,
	Heiko Stuebner <heiko@sntech.de>,
	"David S. Miller" <davem@davemloft.net>,
	Rob Herring <robh+dt@kernel.org>
Cc: linux-rockchip@lists.infradead.org, keescook@google.com,
	leozwang@google.com, Alexander Kochetkov <al.kochet@gmail.com>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/6] net: arc_emac: support the phy reset for emac driver
Date: Fri, 11 Mar 2016 16:47:59 +0300	[thread overview]
Message-ID: <56E2CC8F.5040703@cogentembedded.com> (raw)
In-Reply-To: <1457693731-6966-4-git-send-email-wxt@rock-chips.com>

Hello.

On 3/11/2016 1:55 PM, Caesar Wang wrote:

> This patch adds to support the emac phy reset.
>
> 1) phy-reset-gpios:
> The phy-reset-gpios is an optional property for arc emac device tree boot.
> Change the binding document to match the driver code.
>
> 2) phy-reset-duration:
> Different boards may require different phy reset duration. Add property
> phy-reset-duration for device tree probe, so that the boards that need
> a longer reset duration can specify it in their device tree.
>
> 3) phy-reset-active-high:
> We need that for a custom hardware that needs the reverse reset sequence.
>
> Of course, this patch will fix the issue on
> https://patchwork.kernel.org/patch/8186801/.
>
> In some cases, the emac couldn't work if you don't have reset the phy.
> Let's add it to happy work.
>
> Signed-off-by: Caesar Wang <wxt@rock-chips.com>
> ---
>
>   drivers/net/ethernet/arc/emac_main.c | 41 ++++++++++++++++++++++++++++++++++++
>   1 file changed, 41 insertions(+)
>
> diff --git a/drivers/net/ethernet/arc/emac_main.c b/drivers/net/ethernet/arc/emac_main.c
> index 6446af1..42384f6a 100644
> --- a/drivers/net/ethernet/arc/emac_main.c
> +++ b/drivers/net/ethernet/arc/emac_main.c
> @@ -764,6 +764,45 @@ static const struct net_device_ops arc_emac_netdev_ops = {
>   #endif
>   };
>
> +#ifdef CONFIG_OF
> +static void emac_reset_phy(struct net_device *pdev)
> +{
> +	int err, phy_reset;
> +	bool active_high = false;
> +	int msec = 10;
> +	struct device *dev = pdev->dev.parent;
> +	struct device_node *np = dev->of_node;
> +
> +	if (!np)
> +		return;
> +
> +	of_property_read_u32(np, "phy-reset-duration", &msec);
> +	/* A sane reset duration should not be longer than 1s */
> +	if (msec > 1000)
> +		msec = 1;
> +
> +	phy_reset = of_get_named_gpio(np, "phy-reset-gpios", 0);
> +	if (!gpio_is_valid(phy_reset))
> +		return;
> +
> +	active_high = of_property_read_bool(np, "phy-reset-active-high");
> +
> +	err = devm_gpio_request_one(dev, phy_reset, active_high ?
> +				    GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW,
> +				    "phy-reset");
> +	if (err) {
> +		dev_err(dev, "failed to get phy-reset-gpios: %d\n", err);
> +		return;
> +	}
> +	msleep(msec);
> +	gpio_set_value_cansleep(phy_reset, !active_high);
> +}
[...]

    Why not make it the mii_bus::reset() method? It gets called before the 
MDIO bus scan.

MBR, Sergei

  reply	other threads:[~2016-03-11 13:47 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-11 10:55 [PATCH 0/6] arc_emac: fixes the emac issues oand cleanup emac drivers Caesar Wang
2016-03-11 10:55 ` Caesar Wang
2016-03-11 10:55 ` [PATCH 1/6] net: arc_emac: make the rockchip emac document more compatible Caesar Wang
2016-03-11 10:55   ` Caesar Wang
2016-03-11 10:55 ` [PATCH 4/6] net: arc: trivial: cleanup the emac driver Caesar Wang
2016-03-11 10:55   ` Caesar Wang
2016-03-11 11:28   ` kbuild test robot
2016-03-11 11:28     ` kbuild test robot
2016-03-11 11:28     ` kbuild test robot
2016-03-11 10:55 ` [PATCH 5/6] clk: rockchip: rk3036: fix and add node id for emac clock Caesar Wang
2016-03-11 10:55   ` Caesar Wang
2016-03-11 11:15   ` Heiko Stübner
2016-03-11 11:15     ` Heiko Stübner
2016-03-11 11:15     ` Heiko Stübner
2016-03-11 11:15     ` Heiko Stübner
2016-03-11 12:01     ` Caesar Wang
2016-03-11 12:01       ` Caesar Wang
2016-03-11 12:28       ` Heiko Stübner
2016-03-11 12:28         ` Heiko Stübner
2016-03-11 12:28         ` Heiko Stübner
     [not found] ` <1457693731-6966-1-git-send-email-wxt-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-03-11 10:55   ` [PATCH 2/6] net: arc_emac: add phy-reset-* are optional for device tree Caesar Wang
2016-03-11 10:55     ` Caesar Wang
     [not found]     ` <1457693731-6966-3-git-send-email-wxt-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-03-18 19:21       ` Rob Herring
2016-03-18 19:21         ` Rob Herring
2016-03-11 10:55   ` [PATCH 3/6] net: arc_emac: support the phy reset for emac driver Caesar Wang
2016-03-11 10:55     ` Caesar Wang
2016-03-11 13:47     ` Sergei Shtylyov [this message]
2016-03-11 14:56       ` Heiko Stübner
2016-03-11 14:59         ` Heiko Stübner
2016-03-11 18:35     ` Sergei Shtylyov
2016-03-13  3:57       ` Caesar Wang
2016-03-11 19:22     ` Sergei Shtylyov
2016-03-11 10:55   ` [PATCH 6/6] ARM: dts: rockchip: add support emac for RK3036 Caesar Wang
2016-03-11 10:55     ` Caesar Wang
2016-03-11 10:55     ` Caesar Wang
2016-03-11 13:46 ` [PATCH 0/6] arc_emac: fixes the emac issues oand cleanup emac drivers Sergei Shtylyov
2016-03-11 13:46   ` Sergei Shtylyov
2016-03-11 14:48   ` Caesar Wang
2016-03-11 14:48     ` Caesar Wang
2016-03-11 18:46     ` Sergei Shtylyov
2016-03-11 18:46       ` Sergei Shtylyov
2016-03-13  4:04       ` Caesar Wang
2016-03-13  4:04         ` Caesar Wang

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=56E2CC8F.5040703@cogentembedded.com \
    --to=sergei.shtylyov@cogentembedded.com \
    --cc=al.kochet@gmail.com \
    --cc=davem@davemloft.net \
    --cc=heiko@sntech.de \
    --cc=keescook@google.com \
    --cc=leozwang@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=netdev@vger.kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=wxt@rock-chips.com \
    /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.