All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Lunn <andrew@lunn.ch>
To: Paul Burton <paul.burton@imgtec.com>
Cc: netdev@vger.kernel.org, Tobias Klauser <tklauser@distanz.ch>,
	"David S . Miller" <davem@davemloft.net>,
	Jarod Wilson <jarod@redhat.com>,
	linux-mips@linux-mips.org, Eric Dumazet <edumazet@google.com>
Subject: Re: [PATCH v3 2/7] net: pch_gbe: Pull PHY GPIO handling out of Minnow code
Date: Sat, 3 Jun 2017 19:52:00 +0200	[thread overview]
Message-ID: <20170603175200.GC17099@lunn.ch> (raw)
In-Reply-To: <20170602234042.22782-3-paul.burton@imgtec.com>

On Fri, Jun 02, 2017 at 04:40:37PM -0700, Paul Burton wrote:
> The MIPS Boston development board uses the Intel EG20T Platform
> Controller Hub, including its gigabit ethernet controller, and requires
> that its RTL8211E PHY be reset much like the Minnow platform. Pull the
> PHY reset GPIO handling out of Minnow-specific code such that it can be
> shared by later patches.
> 
> Signed-off-by: Paul Burton <paul.burton@imgtec.com>
> Cc: David S. Miller <davem@davemloft.net>
> Cc: Eric Dumazet <edumazet@google.com>
> Cc: Jarod Wilson <jarod@redhat.com>
> Cc: Tobias Klauser <tklauser@distanz.ch>
> Cc: linux-mips@linux-mips.org
> Cc: netdev@vger.kernel.org
> ---
> 
> Changes in v3:
> - Use adapter->pdata as arg to platform_init, to fix bisectability.
> 
> Changes in v2: None
> 
>  drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h    |  4 ++-
>  .../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c   | 33 +++++++++++++++-------
>  2 files changed, 26 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h
> index 8d710a3b4db0..de1dd08050f4 100644
> --- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h
> +++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h
> @@ -580,15 +580,17 @@ struct pch_gbe_hw_stats {
>  
>  /**
>   * struct pch_gbe_privdata - PCI Device ID driver data
> + * @phy_reset_gpio:		PHY reset GPIO descriptor.
>   * @phy_tx_clk_delay:		Bool, configure the PHY TX delay in software
>   * @phy_disable_hibernate:	Bool, disable PHY hibernation
>   * @platform_init:		Platform initialization callback, called from
>   *				probe, prior to PHY initialization.
>   */
>  struct pch_gbe_privdata {
> +	struct gpio_desc *phy_reset_gpio;
>  	bool phy_tx_clk_delay;
>  	bool phy_disable_hibernate;
> -	int (*platform_init)(struct pci_dev *pdev);
> +	int (*platform_init)(struct pci_dev *, struct pch_gbe_privdata *);
>  };
>  
>  /**
> diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
> index d38198718005..cb9b904786e4 100644
> --- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
> +++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
> @@ -360,6 +360,16 @@ static void pch_gbe_mac_mar_set(struct pch_gbe_hw *hw, u8 * addr, u32 index)
>  	pch_gbe_wait_clr_bit(&hw->reg->ADDR_MASK, PCH_GBE_BUSY);
>  }
>  
> +static void pch_gbe_phy_set_reset(struct pch_gbe_hw *hw, int value)
> +{
> +	struct pch_gbe_adapter *adapter = pch_gbe_hw_to_adapter(hw);
> +
> +	if (!adapter->pdata || !adapter->pdata->phy_reset_gpio)
> +		return;
> +
> +	gpiod_set_value(adapter->pdata->phy_reset_gpio, value);

Hi Paul

Since you are using the gpiod_ API, the core will take notice of the
active low/active high flag when performing this set.

> +}
> +
>  /**
>   * pch_gbe_mac_reset_hw - Reset hardware
>   * @hw:	Pointer to the HW structure
>  
>  	ret = devm_gpio_request_one(&pdev->dev, gpio, flags,
>  				    "minnow_phy_reset");
> -	if (ret) {
> +	if (!ret)
> +		pdata->phy_reset_gpio = gpio_to_desc(gpio);

Here however, you are using the gpio_ API, which ignores the active
high/low flag in device tree. And in your binding patch, you give the
example:

+               phy-reset-gpios = <&eg20t_gpio 6
+                                  GPIO_ACTIVE_LOW>;

This active low is totally ignored.

I personally would say this is all messed up, and going to result in
problems for somebody with a board which actually needs an
GPIO_ACTIVE_HIGH.

Please use the gpiod_ API through out and respect the flags in the
device tree binding.

       Andrew

  reply	other threads:[~2017-06-03 17:52 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-02 23:40 [PATCH v3 0/7] net: pch_gbe: Fixes & MIPS support Paul Burton
2017-06-02 23:40 ` Paul Burton
2017-06-02 23:40 ` [PATCH v3 1/7] net: pch_gbe: Mark Minnow PHY reset GPIO active low Paul Burton
2017-06-02 23:40   ` Paul Burton
2017-06-02 23:40 ` [PATCH v3 2/7] net: pch_gbe: Pull PHY GPIO handling out of Minnow code Paul Burton
2017-06-02 23:40   ` Paul Burton
2017-06-03 17:52   ` Andrew Lunn [this message]
2017-06-05 17:21     ` Paul Burton
2017-06-05 17:21       ` Paul Burton
2017-06-05 18:43       ` Andrew Lunn
2017-06-02 23:40 ` [PATCH v3 3/7] dt-bindings: net: Document Intel pch_gbe binding Paul Burton
2017-06-02 23:40   ` Paul Burton
2017-06-02 23:40   ` Paul Burton
2017-06-02 23:40   ` Paul Burton
2017-06-02 23:40 ` [PATCH v3 4/7] net: pch_gbe: Add device tree support Paul Burton
2017-06-02 23:40   ` Paul Burton
2017-06-03  6:36   ` [PATCH] net: pch_gbe: fix err_cast.cocci warnings kbuild test robot
2017-06-03  6:36     ` kbuild test robot
2017-06-03  6:36   ` [PATCH v3 4/7] net: pch_gbe: Add device tree support kbuild test robot
2017-06-03  6:36     ` kbuild test robot
2017-06-02 23:40 ` [PATCH v3 5/7] net: pch_gbe: Always reset PHY along with MAC Paul Burton
2017-06-02 23:40   ` Paul Burton
2017-06-02 23:40 ` [PATCH v3 6/7] net: pch_gbe: Allow longer for resets Paul Burton
2017-06-02 23:40   ` Paul Burton
2017-06-06 14:10   ` Marcin Nowakowski
2017-06-06 14:10     ` Marcin Nowakowski
2017-06-02 23:40 ` [PATCH v3 7/7] net: pch_gbe: Allow build on MIPS platforms Paul Burton
2017-06-02 23:40   ` Paul Burton
2017-06-05 17:31 ` [PATCH v4 0/7] net: pch_gbe: Fixes & MIPS support Paul Burton
2017-06-05 17:31   ` Paul Burton
2017-06-05 17:31   ` [PATCH v4 1/7] net: pch_gbe: Mark Minnow PHY reset GPIO active low Paul Burton
2017-06-05 17:31     ` Paul Burton
2017-06-05 17:31   ` [PATCH v4 2/7] net: pch_gbe: Pull PHY GPIO handling out of Minnow code Paul Burton
2017-06-05 17:31     ` Paul Burton
2017-06-05 18:55     ` Andrew Lunn
2017-06-05 17:31   ` [PATCH v4 3/7] dt-bindings: net: Document Intel pch_gbe binding Paul Burton
2017-06-05 17:31     ` Paul Burton
2017-06-05 17:31     ` Paul Burton
2017-06-05 17:31     ` Paul Burton
2017-06-05 18:45     ` Sergei Shtylyov
2017-06-05 18:45       ` Sergei Shtylyov
2017-06-09 13:21     ` Rob Herring
2017-06-09 13:21       ` Rob Herring
2017-06-05 17:31   ` [PATCH v4 4/7] net: pch_gbe: Add device tree support Paul Burton
2017-06-05 17:31     ` Paul Burton
2017-06-05 18:54     ` Andrew Lunn
2017-06-05 17:31   ` [PATCH v4 5/7] net: pch_gbe: Always reset PHY along with MAC Paul Burton
2017-06-05 17:31     ` Paul Burton
2017-06-05 17:31   ` [PATCH v4 6/7] net: pch_gbe: Allow longer for resets Paul Burton
2017-06-05 17:31     ` Paul Burton
2017-06-05 17:31   ` [PATCH v4 7/7] net: pch_gbe: Allow build on MIPS platforms Paul Burton
2017-06-05 17:31     ` Paul Burton

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=20170603175200.GC17099@lunn.ch \
    --to=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=jarod@redhat.com \
    --cc=linux-mips@linux-mips.org \
    --cc=netdev@vger.kernel.org \
    --cc=paul.burton@imgtec.com \
    --cc=tklauser@distanz.ch \
    /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.