diff mbox

[U-Boot,v6,1/7] drivers: net: cpsw: Add reading of DT phy-handle node

Message ID 1460723242-20805-1-git-send-email-dmurphy@ti.com
State Superseded
Delegated to: Joe Hershberger
Headers show

Commit Message

Dan Murphy April 15, 2016, 12:27 p.m. UTC
Add the ability to read the phy-handle node of the
cpsw slave.  Upon reading this handle the phy-id
can be stored based on the reg node in the DT.

The phy-handle also needs to be stored and passed
to the phy to access any phy data that is available.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
---

v6 - Fix build error when DM_ETH is not defined and updated phy_handle error handling - https://patchwork.ozlabs.org/patch/608763/

 drivers/net/cpsw.c | 20 ++++++++++++++++++--
 include/cpsw.h     |  1 +
 2 files changed, 19 insertions(+), 2 deletions(-)

Comments

Dan Murphy April 20, 2016, 7:41 p.m. UTC | #1
Bump?

On 04/15/2016 07:27 AM, Dan Murphy wrote:
> Add the ability to read the phy-handle node of the
> cpsw slave.  Upon reading this handle the phy-id
> can be stored based on the reg node in the DT.
>
> The phy-handle also needs to be stored and passed
> to the phy to access any phy data that is available.
>
> Signed-off-by: Dan Murphy <dmurphy@ti.com>
> ---
>
> v6 - Fix build error when DM_ETH is not defined and updated phy_handle error handling - https://patchwork.ozlabs.org/patch/608763/
>
>  drivers/net/cpsw.c | 20 ++++++++++++++++++--
>  include/cpsw.h     |  1 +
>  2 files changed, 19 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c
> index 7104754..3d6f0ce 100644
> --- a/drivers/net/cpsw.c
> +++ b/drivers/net/cpsw.c
> @@ -965,6 +965,11 @@ static int cpsw_phy_init(struct cpsw_priv *priv, struct cpsw_slave *slave)
>  	phydev->supported &= supported;
>  	phydev->advertising = phydev->supported;
>  
> +#ifdef CONFIG_DM_ETH
> +	if (slave->data->phy_of_handle)
> +		phydev->dev->of_offset = slave->data->phy_of_handle;
> +#endif
> +
>  	priv->phydev = phydev;
>  	phy_config(phydev);
>  
> @@ -1217,8 +1222,19 @@ static int cpsw_eth_ofdata_to_platdata(struct udevice *dev)
>  			if (phy_mode)
>  				priv->data.slave_data[slave_index].phy_if =
>  					phy_get_interface_by_name(phy_mode);
> -			fdtdec_get_int_array(fdt, subnode, "phy_id", phy_id, 2);
> -			priv->data.slave_data[slave_index].phy_addr = phy_id[1];
> +
> +			priv->data.slave_data[slave_index].phy_of_handle =
> +				fdtdec_lookup_phandle(fdt, subnode, "phy-handle");
> +
> +			if (priv->data.slave_data[slave_index].phy_of_handle >= 0) {
> +				priv->data.slave_data[slave_index].phy_addr =
> +					fdtdec_get_int(gd->fdt_blob,
> +						priv->data.slave_data[slave_index].phy_of_handle,
> +						"reg", -1);
> +			} else {
> +				fdtdec_get_int_array(fdt, subnode, "phy_id", phy_id, 2);
> +				priv->data.slave_data[slave_index].phy_addr = phy_id[1];
> +			}
>  			slave_index++;
>  		}
>  
> diff --git a/include/cpsw.h b/include/cpsw.h
> index cf1d30b..ff95cd8 100644
> --- a/include/cpsw.h
> +++ b/include/cpsw.h
> @@ -21,6 +21,7 @@ struct cpsw_slave_data {
>  	u32		sliver_reg_ofs;
>  	int		phy_addr;
>  	int		phy_if;
> +	int		phy_of_handle;
>  };
>  
>  enum {
Mugunthan V N April 21, 2016, 5:59 a.m. UTC | #2
On Friday 15 April 2016 05:57 PM, Dan Murphy wrote:
> Add the ability to read the phy-handle node of the
> cpsw slave.  Upon reading this handle the phy-id
> can be stored based on the reg node in the DT.
> 
> The phy-handle also needs to be stored and passed
> to the phy to access any phy data that is available.
> 
> Signed-off-by: Dan Murphy <dmurphy@ti.com>

Tested this on dra72 rev C evm

Tested-by: Mugunthan V N <mugunthanvnm@ti.com>

Regards
Mugutnhan V N
Joe Hershberger April 25, 2016, 9:32 p.m. UTC | #3
On Fri, Apr 15, 2016 at 7:27 AM, Dan Murphy <dmurphy@ti.com> wrote:
> Add the ability to read the phy-handle node of the
> cpsw slave.  Upon reading this handle the phy-id
> can be stored based on the reg node in the DT.

It would be great if the phy could be handled generically.
Unfortunately there is no uniform description so far, so having each
driver parse it is the best we can do for now.

> The phy-handle also needs to be stored and passed
> to the phy to access any phy data that is available.
>
> Signed-off-by: Dan Murphy <dmurphy@ti.com>

Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Joe Hershberger April 26, 2016, 9:42 p.m. UTC | #4
On Mon, Apr 25, 2016 at 4:32 PM, Joe Hershberger
<joe.hershberger@gmail.com> wrote:
> On Fri, Apr 15, 2016 at 7:27 AM, Dan Murphy <dmurphy@ti.com> wrote:
>> Add the ability to read the phy-handle node of the
>> cpsw slave.  Upon reading this handle the phy-id
>> can be stored based on the reg node in the DT.
>
> It would be great if the phy could be handled generically.
> Unfortunately there is no uniform description so far, so having each
> driver parse it is the best we can do for now.
>
>> The phy-handle also needs to be stored and passed
>> to the phy to access any phy data that is available.
>>
>> Signed-off-by: Dan Murphy <dmurphy@ti.com>
>
> Acked-by: Joe Hershberger <joe.hershberger@ni.com>

This patch is not checkpatch.pl clean. Please resubmit.


610946.mbox:57: WARNING: line over 80 characters
610946.mbox:59: WARNING: line over 80 characters
610946.mbox:62: WARNING: line over 80 characters
610946.mbox:62: CHECK: Alignment should match open parenthesis
610946.mbox:65: WARNING: line over 80 characters
610946.mbox:66: WARNING: line over 80 characters
total: 0 errors, 5 warnings, 1 checks, 39 lines checked
Dan Murphy April 27, 2016, 3:44 p.m. UTC | #5
Joe

On 04/26/2016 04:42 PM, Joe Hershberger wrote:
> On Mon, Apr 25, 2016 at 4:32 PM, Joe Hershberger
> <joe.hershberger@gmail.com> wrote:
>> On Fri, Apr 15, 2016 at 7:27 AM, Dan Murphy <dmurphy@ti.com> wrote:
>>> Add the ability to read the phy-handle node of the
>>> cpsw slave.  Upon reading this handle the phy-id
>>> can be stored based on the reg node in the DT.
>> It would be great if the phy could be handled generically.
>> Unfortunately there is no uniform description so far, so having each
>> driver parse it is the best we can do for now.
>>
>>> The phy-handle also needs to be stored and passed
>>> to the phy to access any phy data that is available.
>>>
>>> Signed-off-by: Dan Murphy <dmurphy@ti.com>
>> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
> This patch is not checkpatch.pl clean. Please resubmit.
>
>
> 610946.mbox:57: WARNING: line over 80 characters
> 610946.mbox:59: WARNING: line over 80 characters
> 610946.mbox:62: WARNING: line over 80 characters
> 610946.mbox:62: CHECK: Alignment should match open parenthesis
> 610946.mbox:65: WARNING: line over 80 characters
> 610946.mbox:66: WARNING: line over 80 characters
> total: 0 errors, 5 warnings, 1 checks, 39 lines checked
I can only fix a few there will still be at least 2 LTL warnings on this file and fixing
it will break readability

I don't see how to fix this.

WARNING: line over 80 characters
#46: FILE: drivers/net/cpsw.c:1230:
+            if (priv->data.slave_data[slave_index].phy_of_handle >= 0) {

WARNING: line over 80 characters
#49: FILE: drivers/net/cpsw.c:1233:
+                                   priv->data.slave_data[slave_index].phy_of_handle,

Dan
Joe Hershberger April 28, 2016, 4:47 a.m. UTC | #6
On Wed, Apr 27, 2016 at 10:44 AM, Dan Murphy <dmurphy@ti.com> wrote:
> Joe
>
> On 04/26/2016 04:42 PM, Joe Hershberger wrote:
>> On Mon, Apr 25, 2016 at 4:32 PM, Joe Hershberger
>> <joe.hershberger@gmail.com> wrote:
>>> On Fri, Apr 15, 2016 at 7:27 AM, Dan Murphy <dmurphy@ti.com> wrote:
>>>> Add the ability to read the phy-handle node of the
>>>> cpsw slave.  Upon reading this handle the phy-id
>>>> can be stored based on the reg node in the DT.
>>> It would be great if the phy could be handled generically.
>>> Unfortunately there is no uniform description so far, so having each
>>> driver parse it is the best we can do for now.
>>>
>>>> The phy-handle also needs to be stored and passed
>>>> to the phy to access any phy data that is available.
>>>>
>>>> Signed-off-by: Dan Murphy <dmurphy@ti.com>
>>> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
>> This patch is not checkpatch.pl clean. Please resubmit.
>>
>>
>> 610946.mbox:57: WARNING: line over 80 characters
>> 610946.mbox:59: WARNING: line over 80 characters
>> 610946.mbox:62: WARNING: line over 80 characters
>> 610946.mbox:62: CHECK: Alignment should match open parenthesis
>> 610946.mbox:65: WARNING: line over 80 characters
>> 610946.mbox:66: WARNING: line over 80 characters
>> total: 0 errors, 5 warnings, 1 checks, 39 lines checked
> I can only fix a few there will still be at least 2 LTL warnings on this file and fixing
> it will break readability
>
> I don't see how to fix this.
>
> WARNING: line over 80 characters
> #46: FILE: drivers/net/cpsw.c:1230:
> +            if (priv->data.slave_data[slave_index].phy_of_handle >= 0) {
>
> WARNING: line over 80 characters
> #49: FILE: drivers/net/cpsw.c:1233:
> +                                   priv->data.slave_data[slave_index].phy_of_handle,

If you plan to have a patch that you feel can't be clean, please
comment after the patch log with the reasoning. I had enough failures
in the patches this release that I have not investigated each one on
my own.

Thanks,
-Joe
diff mbox

Patch

diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c
index 7104754..3d6f0ce 100644
--- a/drivers/net/cpsw.c
+++ b/drivers/net/cpsw.c
@@ -965,6 +965,11 @@  static int cpsw_phy_init(struct cpsw_priv *priv, struct cpsw_slave *slave)
 	phydev->supported &= supported;
 	phydev->advertising = phydev->supported;
 
+#ifdef CONFIG_DM_ETH
+	if (slave->data->phy_of_handle)
+		phydev->dev->of_offset = slave->data->phy_of_handle;
+#endif
+
 	priv->phydev = phydev;
 	phy_config(phydev);
 
@@ -1217,8 +1222,19 @@  static int cpsw_eth_ofdata_to_platdata(struct udevice *dev)
 			if (phy_mode)
 				priv->data.slave_data[slave_index].phy_if =
 					phy_get_interface_by_name(phy_mode);
-			fdtdec_get_int_array(fdt, subnode, "phy_id", phy_id, 2);
-			priv->data.slave_data[slave_index].phy_addr = phy_id[1];
+
+			priv->data.slave_data[slave_index].phy_of_handle =
+				fdtdec_lookup_phandle(fdt, subnode, "phy-handle");
+
+			if (priv->data.slave_data[slave_index].phy_of_handle >= 0) {
+				priv->data.slave_data[slave_index].phy_addr =
+					fdtdec_get_int(gd->fdt_blob,
+						priv->data.slave_data[slave_index].phy_of_handle,
+						"reg", -1);
+			} else {
+				fdtdec_get_int_array(fdt, subnode, "phy_id", phy_id, 2);
+				priv->data.slave_data[slave_index].phy_addr = phy_id[1];
+			}
 			slave_index++;
 		}
 
diff --git a/include/cpsw.h b/include/cpsw.h
index cf1d30b..ff95cd8 100644
--- a/include/cpsw.h
+++ b/include/cpsw.h
@@ -21,6 +21,7 @@  struct cpsw_slave_data {
 	u32		sliver_reg_ofs;
 	int		phy_addr;
 	int		phy_if;
+	int		phy_of_handle;
 };
 
 enum {