From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH/RFC 2/3] ethernet: add a PHY reset GPIO DT binding to sh_eth
Date: Fri, 25 Jan 2013 10:21:12 +0000 [thread overview]
Message-ID: <7921225.sfO3PIeLVS@avalon> (raw)
In-Reply-To: <1359043653-11374-3-git-send-email-g.liakhovetski@gmx.de>
Hi Guennadi,
On Thursday 24 January 2013 17:07:32 Guennadi Liakhovetski wrote:
> If an ethernet PHY can be reset by a GPIO, it can be specified in DT. Add
> a binding and code to parse it, request the GPIO and take the PHY out of
> reset.
>
> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
> Cc: devicetree-discuss@lists.ozlabs.org
> Cc: netdev@vger.kernel.org
> ---
> Documentation/devicetree/bindings/net/sh_ether.txt | 2 ++
> drivers/net/ethernet/renesas/sh_eth.c | 9 ++++++++-
> 2 files changed, 10 insertions(+), 1 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/net/sh_ether.txt
> b/Documentation/devicetree/bindings/net/sh_ether.txt index c11e45d..edaf683
> 100644
> --- a/Documentation/devicetree/bindings/net/sh_ether.txt
> +++ b/Documentation/devicetree/bindings/net/sh_ether.txt
> @@ -12,6 +12,7 @@ Required properties:
> - interrupts: Interrupt mapping for the sh_eth interrupt
> sources (vector id).
> - phy-mode: String, operation mode of the PHY interface.
> +- phy-reset-gpios: PHY reset GPIO tuple
If you can't have more than one GPIO here, what about calling it phy-reset-
gpio ?
> - sh-eth,edmac-endian: String, endian of sh_eth dmac.
> - sh-eth,register-type: String, register type of sh_eth.
> Please select "gigabit", "fast-sh4" or
> @@ -37,6 +38,7 @@ Example (armadillo800eva):
> reg = <0xe9a00000 0x800>, <0xe9a01800 0x800>;
> interrupts = <0x500>;
> phy-mode = "mii";
> + phy-reset-gpios = <&gpio 18 0>;
> sh-eth,edmac-endian = "little";
> sh-eth,register-type = "gigabit";
> sh-eth,phy-id = <0>;
> diff --git a/drivers/net/ethernet/renesas/sh_eth.c
> b/drivers/net/ethernet/renesas/sh_eth.c index 1f64848..06035a2 100644
> --- a/drivers/net/ethernet/renesas/sh_eth.c
> +++ b/drivers/net/ethernet/renesas/sh_eth.c
> @@ -20,6 +20,7 @@
> * the file called "COPYING".
> */
>
> +#include <linux/gpio.h>
> #include <linux/init.h>
> #include <linux/module.h>
> #include <linux/kernel.h>
> @@ -33,6 +34,7 @@
> #include <linux/netdevice.h>
> #include <linux/of.h>
> #include <linux/of_device.h>
> +#include <linux/of_gpio.h>
> #include <linux/of_platform.h>
> #include <linux/of_address.h>
> #include <linux/of_irq.h>
> @@ -2376,10 +2378,11 @@ sh_eth_of_get_register_type(struct device_node *np)
> static struct sh_eth_plat_data *
> sh_eth_parse_dt(struct device *dev, struct net_device *ndev)
> {
> - int ret;
> + int ret, gpio;
> const char *of_str;
> struct device_node *np = dev->of_node;
> struct sh_eth_plat_data *pdata;
> + enum of_gpio_flags flags;
>
> pdata = devm_kzalloc(dev, sizeof(struct sh_eth_plat_data),
> GFP_KERNEL);
> @@ -2420,6 +2423,10 @@ sh_eth_parse_dt(struct device *dev, struct net_device
> *ndev) else
> pdata->needs_init = 0;
>
> + gpio = of_get_named_gpio_flags(np, "phy-reset-gpios", 0, &flags);
> + if (gpio_is_valid(gpio) && !devm_gpio_request(dev, gpio, NULL))
> + gpio_direction_output(gpio, !!(flags & OF_GPIO_ACTIVE_LOW));
You could use devm_gpio_request_one() here.
Is there no need to reset the phy at runtime ?
> +
> #ifdef CONFIG_OF_NET
> if (!is_valid_ether_addr(ndev->dev_addr)) {
> const char *macaddr = of_get_mac_address(np);
--
Regards,
Laurent Pinchart
WARNING: multiple messages have this Message-ID (diff)
From: laurent.pinchart@ideasonboard.com (Laurent Pinchart)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH/RFC 2/3] ethernet: add a PHY reset GPIO DT binding to sh_eth
Date: Fri, 25 Jan 2013 11:21:12 +0100 [thread overview]
Message-ID: <7921225.sfO3PIeLVS@avalon> (raw)
In-Reply-To: <1359043653-11374-3-git-send-email-g.liakhovetski@gmx.de>
Hi Guennadi,
On Thursday 24 January 2013 17:07:32 Guennadi Liakhovetski wrote:
> If an ethernet PHY can be reset by a GPIO, it can be specified in DT. Add
> a binding and code to parse it, request the GPIO and take the PHY out of
> reset.
>
> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
> Cc: devicetree-discuss at lists.ozlabs.org
> Cc: netdev at vger.kernel.org
> ---
> Documentation/devicetree/bindings/net/sh_ether.txt | 2 ++
> drivers/net/ethernet/renesas/sh_eth.c | 9 ++++++++-
> 2 files changed, 10 insertions(+), 1 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/net/sh_ether.txt
> b/Documentation/devicetree/bindings/net/sh_ether.txt index c11e45d..edaf683
> 100644
> --- a/Documentation/devicetree/bindings/net/sh_ether.txt
> +++ b/Documentation/devicetree/bindings/net/sh_ether.txt
> @@ -12,6 +12,7 @@ Required properties:
> - interrupts: Interrupt mapping for the sh_eth interrupt
> sources (vector id).
> - phy-mode: String, operation mode of the PHY interface.
> +- phy-reset-gpios: PHY reset GPIO tuple
If you can't have more than one GPIO here, what about calling it phy-reset-
gpio ?
> - sh-eth,edmac-endian: String, endian of sh_eth dmac.
> - sh-eth,register-type: String, register type of sh_eth.
> Please select "gigabit", "fast-sh4" or
> @@ -37,6 +38,7 @@ Example (armadillo800eva):
> reg = <0xe9a00000 0x800>, <0xe9a01800 0x800>;
> interrupts = <0x500>;
> phy-mode = "mii";
> + phy-reset-gpios = <&gpio 18 0>;
> sh-eth,edmac-endian = "little";
> sh-eth,register-type = "gigabit";
> sh-eth,phy-id = <0>;
> diff --git a/drivers/net/ethernet/renesas/sh_eth.c
> b/drivers/net/ethernet/renesas/sh_eth.c index 1f64848..06035a2 100644
> --- a/drivers/net/ethernet/renesas/sh_eth.c
> +++ b/drivers/net/ethernet/renesas/sh_eth.c
> @@ -20,6 +20,7 @@
> * the file called "COPYING".
> */
>
> +#include <linux/gpio.h>
> #include <linux/init.h>
> #include <linux/module.h>
> #include <linux/kernel.h>
> @@ -33,6 +34,7 @@
> #include <linux/netdevice.h>
> #include <linux/of.h>
> #include <linux/of_device.h>
> +#include <linux/of_gpio.h>
> #include <linux/of_platform.h>
> #include <linux/of_address.h>
> #include <linux/of_irq.h>
> @@ -2376,10 +2378,11 @@ sh_eth_of_get_register_type(struct device_node *np)
> static struct sh_eth_plat_data *
> sh_eth_parse_dt(struct device *dev, struct net_device *ndev)
> {
> - int ret;
> + int ret, gpio;
> const char *of_str;
> struct device_node *np = dev->of_node;
> struct sh_eth_plat_data *pdata;
> + enum of_gpio_flags flags;
>
> pdata = devm_kzalloc(dev, sizeof(struct sh_eth_plat_data),
> GFP_KERNEL);
> @@ -2420,6 +2423,10 @@ sh_eth_parse_dt(struct device *dev, struct net_device
> *ndev) else
> pdata->needs_init = 0;
>
> + gpio = of_get_named_gpio_flags(np, "phy-reset-gpios", 0, &flags);
> + if (gpio_is_valid(gpio) && !devm_gpio_request(dev, gpio, NULL))
> + gpio_direction_output(gpio, !!(flags & OF_GPIO_ACTIVE_LOW));
You could use devm_gpio_request_one() here.
Is there no need to reset the phy at runtime ?
> +
> #ifdef CONFIG_OF_NET
> if (!is_valid_ether_addr(ndev->dev_addr)) {
> const char *macaddr = of_get_mac_address(np);
--
Regards,
Laurent Pinchart
WARNING: multiple messages have this Message-ID (diff)
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Cc: linux-sh@vger.kernel.org, Magnus Damm <magnus.damm@gmail.com>,
Simon Horman <horms@verge.net.au>,
linux-arm-kernel@lists.infradead.org,
devicetree-discuss@lists.ozlabs.org, netdev@vger.kernel.org
Subject: Re: [PATCH/RFC 2/3] ethernet: add a PHY reset GPIO DT binding to sh_eth
Date: Fri, 25 Jan 2013 11:21:12 +0100 [thread overview]
Message-ID: <7921225.sfO3PIeLVS@avalon> (raw)
In-Reply-To: <1359043653-11374-3-git-send-email-g.liakhovetski@gmx.de>
Hi Guennadi,
On Thursday 24 January 2013 17:07:32 Guennadi Liakhovetski wrote:
> If an ethernet PHY can be reset by a GPIO, it can be specified in DT. Add
> a binding and code to parse it, request the GPIO and take the PHY out of
> reset.
>
> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
> Cc: devicetree-discuss@lists.ozlabs.org
> Cc: netdev@vger.kernel.org
> ---
> Documentation/devicetree/bindings/net/sh_ether.txt | 2 ++
> drivers/net/ethernet/renesas/sh_eth.c | 9 ++++++++-
> 2 files changed, 10 insertions(+), 1 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/net/sh_ether.txt
> b/Documentation/devicetree/bindings/net/sh_ether.txt index c11e45d..edaf683
> 100644
> --- a/Documentation/devicetree/bindings/net/sh_ether.txt
> +++ b/Documentation/devicetree/bindings/net/sh_ether.txt
> @@ -12,6 +12,7 @@ Required properties:
> - interrupts: Interrupt mapping for the sh_eth interrupt
> sources (vector id).
> - phy-mode: String, operation mode of the PHY interface.
> +- phy-reset-gpios: PHY reset GPIO tuple
If you can't have more than one GPIO here, what about calling it phy-reset-
gpio ?
> - sh-eth,edmac-endian: String, endian of sh_eth dmac.
> - sh-eth,register-type: String, register type of sh_eth.
> Please select "gigabit", "fast-sh4" or
> @@ -37,6 +38,7 @@ Example (armadillo800eva):
> reg = <0xe9a00000 0x800>, <0xe9a01800 0x800>;
> interrupts = <0x500>;
> phy-mode = "mii";
> + phy-reset-gpios = <&gpio 18 0>;
> sh-eth,edmac-endian = "little";
> sh-eth,register-type = "gigabit";
> sh-eth,phy-id = <0>;
> diff --git a/drivers/net/ethernet/renesas/sh_eth.c
> b/drivers/net/ethernet/renesas/sh_eth.c index 1f64848..06035a2 100644
> --- a/drivers/net/ethernet/renesas/sh_eth.c
> +++ b/drivers/net/ethernet/renesas/sh_eth.c
> @@ -20,6 +20,7 @@
> * the file called "COPYING".
> */
>
> +#include <linux/gpio.h>
> #include <linux/init.h>
> #include <linux/module.h>
> #include <linux/kernel.h>
> @@ -33,6 +34,7 @@
> #include <linux/netdevice.h>
> #include <linux/of.h>
> #include <linux/of_device.h>
> +#include <linux/of_gpio.h>
> #include <linux/of_platform.h>
> #include <linux/of_address.h>
> #include <linux/of_irq.h>
> @@ -2376,10 +2378,11 @@ sh_eth_of_get_register_type(struct device_node *np)
> static struct sh_eth_plat_data *
> sh_eth_parse_dt(struct device *dev, struct net_device *ndev)
> {
> - int ret;
> + int ret, gpio;
> const char *of_str;
> struct device_node *np = dev->of_node;
> struct sh_eth_plat_data *pdata;
> + enum of_gpio_flags flags;
>
> pdata = devm_kzalloc(dev, sizeof(struct sh_eth_plat_data),
> GFP_KERNEL);
> @@ -2420,6 +2423,10 @@ sh_eth_parse_dt(struct device *dev, struct net_device
> *ndev) else
> pdata->needs_init = 0;
>
> + gpio = of_get_named_gpio_flags(np, "phy-reset-gpios", 0, &flags);
> + if (gpio_is_valid(gpio) && !devm_gpio_request(dev, gpio, NULL))
> + gpio_direction_output(gpio, !!(flags & OF_GPIO_ACTIVE_LOW));
You could use devm_gpio_request_one() here.
Is there no need to reset the phy at runtime ?
> +
> #ifdef CONFIG_OF_NET
> if (!is_valid_ether_addr(ndev->dev_addr)) {
> const char *macaddr = of_get_mac_address(np);
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2013-01-25 10:21 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-24 16:07 [PATCH 0/3] ARM: shmobile: sh-eth pins in DT for armadillo800eva Guennadi Liakhovetski
2013-01-24 16:07 ` Guennadi Liakhovetski
2013-01-24 16:07 ` [PATCH 1/3] pinctrl: add ethernet pin groups to r8a7740 Guennadi Liakhovetski
2013-01-24 16:07 ` Guennadi Liakhovetski
2013-01-25 10:15 ` Laurent Pinchart
2013-01-25 10:15 ` Laurent Pinchart
2013-01-24 16:07 ` [PATCH/RFC 2/3] ethernet: add a PHY reset GPIO DT binding to sh_eth Guennadi Liakhovetski
2013-01-24 16:07 ` Guennadi Liakhovetski
2013-01-24 16:07 ` Guennadi Liakhovetski
2013-01-25 10:21 ` Laurent Pinchart [this message]
2013-01-25 10:21 ` Laurent Pinchart
2013-01-25 10:21 ` Laurent Pinchart
2013-01-25 10:34 ` Guennadi Liakhovetski
2013-01-25 10:34 ` Guennadi Liakhovetski
2013-01-25 10:34 ` Guennadi Liakhovetski
2013-01-25 18:21 ` Jason Gunthorpe
2013-01-25 18:21 ` Jason Gunthorpe
2013-01-25 18:21 ` Jason Gunthorpe
2013-07-08 10:49 ` Guennadi Liakhovetski
2013-07-08 10:49 ` Guennadi Liakhovetski
2013-07-08 10:49 ` Guennadi Liakhovetski
2013-01-26 1:04 ` Laurent Pinchart
2013-01-26 1:04 ` Laurent Pinchart
2013-01-26 1:04 ` Laurent Pinchart
2013-01-24 16:07 ` [PATCH 3/3] ARM: shmobile: move pin configuration on armadillo800eva-reference to DT Guennadi Liakhovetski
2013-01-24 16:07 ` Guennadi Liakhovetski
2013-01-25 4:37 ` [PATCH 0/3] ARM: shmobile: sh-eth pins in DT for armadillo800eva Simon Horman
2013-01-25 4:37 ` Simon Horman
2013-01-25 8:09 ` Guennadi Liakhovetski
2013-01-25 8:09 ` Guennadi Liakhovetski
2013-01-25 9:05 ` Simon Horman
2013-01-25 9:05 ` Simon Horman
2013-01-25 9:57 ` Laurent Pinchart
2013-01-25 9:57 ` Laurent Pinchart
2013-01-28 1:02 ` Simon Horman
2013-01-28 1:02 ` Simon Horman
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=7921225.sfO3PIeLVS@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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.