diff mbox

[U-Boot] drivers: net: keystone_net: add rgmii link type support when parsing dt

Message ID 20161114091216.22166-1-mugunthanvnm@ti.com
State Changes Requested
Delegated to: Joe Hershberger
Headers show

Commit Message

Mugunthan V N Nov. 14, 2016, 9:12 a.m. UTC
Add support to detect RGMII link interface from link-interface
device tree entry. Also rename the existing link type enums so
that it provides meaning full interface like SGMII.

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

Without this support there is a crash in K2G EVM tftp boot [1].
Verified this with tftp download on K2G EVM [2]

[1] - http://pastebin.ubuntu.com/23474751/
[2] - http://pastebin.ubuntu.com/23474748/

---
 drivers/net/keystone_net.c | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

Comments

Lokesh Vutla Nov. 14, 2016, 9:27 a.m. UTC | #1
On Monday 14 November 2016 02:42 PM, Mugunthan V N wrote:
> Add support to detect RGMII link interface from link-interface
> device tree entry. Also rename the existing link type enums so
> that it provides meaning full interface like SGMII.
> 
> Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>

Tested-by: Lokesh Vutla <lokeshvutla@ti.com>

Thanks and regards,
Lokesh


> ---
> 
> Without this support there is a crash in K2G EVM tftp boot [1].
> Verified this with tftp download on K2G EVM [2]
> 
> [1] - http://pastebin.ubuntu.com/23474751/
> [2] - http://pastebin.ubuntu.com/23474748/
> 
> ---
>  drivers/net/keystone_net.c | 23 +++++++++++++++--------
>  1 file changed, 15 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/net/keystone_net.c b/drivers/net/keystone_net.c
> index f88d83e727..a5120e01ad 100644
> --- a/drivers/net/keystone_net.c
> +++ b/drivers/net/keystone_net.c
> @@ -56,13 +56,16 @@ struct rx_buff_desc net_rx_buffs = {
>  #ifdef CONFIG_DM_ETH
>  
>  enum link_type {
> -	LINK_TYPE_MAC_TO_MAC_AUTO = 0,
> -	LINK_TYPE_MAC_TO_PHY_MODE = 1,
> -	LINK_TYPE_MAC_TO_MAC_FORCED_MODE = 2,
> -	LINK_TYPE_MAC_TO_FIBRE_MODE = 3,
> -	LINK_TYPE_MAC_TO_PHY_NO_MDIO_MODE = 4,
> -	LINK_TYPE_10G_MAC_TO_PHY_MODE = 10,
> -	LINK_TYPE_10G_MAC_TO_MAC_FORCED_MODE = 11,
> +	LINK_TYPE_SGMII_MAC_TO_MAC_AUTO		= 0,
> +	LINK_TYPE_SGMII_MAC_TO_PHY_MODE		= 1,
> +	LINK_TYPE_SGMII_MAC_TO_MAC_FORCED_MODE	= 2,
> +	LINK_TYPE_SGMII_MAC_TO_FIBRE_MODE	= 3,
> +	LINK_TYPE_SGMII_MAC_TO_PHY_NO_MDIO_MODE	= 4,
> +	LINK_TYPE_RGMII_LINK_MAC_PHY		= 5,
> +	LINK_TYPE_RGMII_LINK_MAC_MAC_FORCED	= 6,
> +	LINK_TYPE_RGMII_LINK_MAC_PHY_NO_MDIO	= 7,
> +	LINK_TYPE_10G_MAC_TO_PHY_MODE		= 10,
> +	LINK_TYPE_10G_MAC_TO_MAC_FORCED_MODE	= 11,
>  };
>  
>  #define mac_hi(mac)     (((mac)[0] << 0) | ((mac)[1] << 8) |    \
> @@ -1077,11 +1080,15 @@ static int ks2_eth_parse_slave_interface(int netcp, int slave,
>  		priv->mdio_base = (void *)fdtdec_get_addr(fdt, mdio, "reg");
>  	}
>  
> -	if (priv->link_type == LINK_TYPE_MAC_TO_PHY_MODE) {
> +	if (priv->link_type == LINK_TYPE_SGMII_MAC_TO_PHY_MODE) {
>  		priv->phy_if = PHY_INTERFACE_MODE_SGMII;
>  		pdata->phy_interface = priv->phy_if;
>  		priv->sgmii_link_type = SGMII_LINK_MAC_PHY;
>  		priv->has_mdio = true;
> +	} else if (priv->link_type == LINK_TYPE_RGMII_LINK_MAC_PHY) {
> +		priv->phy_if = PHY_INTERFACE_MODE_RGMII;
> +		pdata->phy_interface = priv->phy_if;
> +		priv->has_mdio = true;
>  	}
>  
>  	return 0;
>
Joe Hershberger Nov. 15, 2016, 3:40 a.m. UTC | #2
On Mon, Nov 14, 2016 at 3:12 AM, Mugunthan V N <mugunthanvnm@ti.com> wrote:
> Add support to detect RGMII link interface from link-interface
> device tree entry. Also rename the existing link type enums so
> that it provides meaning full interface like SGMII.
>
> Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
> ---
>
> Without this support there is a crash in K2G EVM tftp boot [1].
> Verified this with tftp download on K2G EVM [2]
>
> [1] - http://pastebin.ubuntu.com/23474751/
> [2] - http://pastebin.ubuntu.com/23474748/
>
> ---
>  drivers/net/keystone_net.c | 23 +++++++++++++++--------
>  1 file changed, 15 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/net/keystone_net.c b/drivers/net/keystone_net.c
> index f88d83e727..a5120e01ad 100644
> --- a/drivers/net/keystone_net.c
> +++ b/drivers/net/keystone_net.c
> @@ -56,13 +56,16 @@ struct rx_buff_desc net_rx_buffs = {
>  #ifdef CONFIG_DM_ETH
>
>  enum link_type {
> -       LINK_TYPE_MAC_TO_MAC_AUTO = 0,
> -       LINK_TYPE_MAC_TO_PHY_MODE = 1,
> -       LINK_TYPE_MAC_TO_MAC_FORCED_MODE = 2,
> -       LINK_TYPE_MAC_TO_FIBRE_MODE = 3,
> -       LINK_TYPE_MAC_TO_PHY_NO_MDIO_MODE = 4,
> -       LINK_TYPE_10G_MAC_TO_PHY_MODE = 10,
> -       LINK_TYPE_10G_MAC_TO_MAC_FORCED_MODE = 11,
> +       LINK_TYPE_SGMII_MAC_TO_MAC_AUTO         = 0,
> +       LINK_TYPE_SGMII_MAC_TO_PHY_MODE         = 1,
> +       LINK_TYPE_SGMII_MAC_TO_MAC_FORCED_MODE  = 2,
> +       LINK_TYPE_SGMII_MAC_TO_FIBRE_MODE       = 3,
> +       LINK_TYPE_SGMII_MAC_TO_PHY_NO_MDIO_MODE = 4,
> +       LINK_TYPE_RGMII_LINK_MAC_PHY            = 5,
> +       LINK_TYPE_RGMII_LINK_MAC_MAC_FORCED     = 6,
> +       LINK_TYPE_RGMII_LINK_MAC_PHY_NO_MDIO    = 7,
> +       LINK_TYPE_10G_MAC_TO_PHY_MODE           = 10,
> +       LINK_TYPE_10G_MAC_TO_MAC_FORCED_MODE    = 11,
>  };
>
>  #define mac_hi(mac)     (((mac)[0] << 0) | ((mac)[1] << 8) |    \
> @@ -1077,11 +1080,15 @@ static int ks2_eth_parse_slave_interface(int netcp, int slave,
>                 priv->mdio_base = (void *)fdtdec_get_addr(fdt, mdio, "reg");
>         }
>
> -       if (priv->link_type == LINK_TYPE_MAC_TO_PHY_MODE) {
> +       if (priv->link_type == LINK_TYPE_SGMII_MAC_TO_PHY_MODE) {
>                 priv->phy_if = PHY_INTERFACE_MODE_SGMII;
>                 pdata->phy_interface = priv->phy_if;
>                 priv->sgmii_link_type = SGMII_LINK_MAC_PHY;
>                 priv->has_mdio = true;
> +       } else if (priv->link_type == LINK_TYPE_RGMII_LINK_MAC_PHY) {
> +               priv->phy_if = PHY_INTERFACE_MODE_RGMII;
> +               pdata->phy_interface = priv->phy_if;
> +               priv->has_mdio = true;
>         }
>
>         return 0;

This is great, but can you please add this info to a bindings file in
doc/device-tree-bindings/net/keystone-netcp.txt so that it's less
magic?

Thanks,
-Joe
Mugunthan V N Nov. 15, 2016, 6:05 a.m. UTC | #3
Joe

On Tuesday 15 November 2016 09:10 AM, Joe Hershberger wrote:
> This is great, but can you please add this info to a bindings file in
> doc/device-tree-bindings/net/keystone-netcp.txt so that it's less
> magic?

link-interface is already documented in Kernel device tree bindings
(Documentation/devicetree/bindings/net/keystone-netcp.txt), still do we
need to document the same in u-boot as well?

Regards
Mugunthan V N
Tom Rini Nov. 17, 2016, 10:12 p.m. UTC | #4
On Mon, Nov 14, 2016 at 02:42:16PM +0530, Mugunthan V N wrote:

> Add support to detect RGMII link interface from link-interface
> device tree entry. Also rename the existing link type enums so
> that it provides meaning full interface like SGMII.
> 
> Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>
Joe Hershberger Nov. 30, 2016, 7:08 p.m. UTC | #5
On Tue, Nov 15, 2016 at 12:05 AM, Mugunthan V N <mugunthanvnm@ti.com> wrote:
> Joe
>
> On Tuesday 15 November 2016 09:10 AM, Joe Hershberger wrote:
>> This is great, but can you please add this info to a bindings file in
>> doc/device-tree-bindings/net/keystone-netcp.txt so that it's less
>> magic?
>
> link-interface is already documented in Kernel device tree bindings
> (Documentation/devicetree/bindings/net/keystone-netcp.txt), still do we
> need to document the same in u-boot as well?

I guess I'll leave this to Tom and Simon, but I believe most of the
bindings are replicated to U-Boot when we begin supporting them.
Simon Glass Nov. 30, 2016, 7:28 p.m. UTC | #6
Hi Joe,

On 30 November 2016 at 12:08, Joe Hershberger <joe.hershberger@gmail.com> wrote:
>
> On Tue, Nov 15, 2016 at 12:05 AM, Mugunthan V N <mugunthanvnm@ti.com> wrote:
> > Joe
> >
> > On Tuesday 15 November 2016 09:10 AM, Joe Hershberger wrote:
> >> This is great, but can you please add this info to a bindings file in
> >> doc/device-tree-bindings/net/keystone-netcp.txt so that it's less
> >> magic?
> >
> > link-interface is already documented in Kernel device tree bindings
> > (Documentation/devicetree/bindings/net/keystone-netcp.txt), still do we
> > need to document the same in u-boot as well?
>
> I guess I'll leave this to Tom and Simon, but I believe most of the
> bindings are replicated to U-Boot when we begin supporting them.

Yes that's the idea.

Regards,
Simon
diff mbox

Patch

diff --git a/drivers/net/keystone_net.c b/drivers/net/keystone_net.c
index f88d83e727..a5120e01ad 100644
--- a/drivers/net/keystone_net.c
+++ b/drivers/net/keystone_net.c
@@ -56,13 +56,16 @@  struct rx_buff_desc net_rx_buffs = {
 #ifdef CONFIG_DM_ETH
 
 enum link_type {
-	LINK_TYPE_MAC_TO_MAC_AUTO = 0,
-	LINK_TYPE_MAC_TO_PHY_MODE = 1,
-	LINK_TYPE_MAC_TO_MAC_FORCED_MODE = 2,
-	LINK_TYPE_MAC_TO_FIBRE_MODE = 3,
-	LINK_TYPE_MAC_TO_PHY_NO_MDIO_MODE = 4,
-	LINK_TYPE_10G_MAC_TO_PHY_MODE = 10,
-	LINK_TYPE_10G_MAC_TO_MAC_FORCED_MODE = 11,
+	LINK_TYPE_SGMII_MAC_TO_MAC_AUTO		= 0,
+	LINK_TYPE_SGMII_MAC_TO_PHY_MODE		= 1,
+	LINK_TYPE_SGMII_MAC_TO_MAC_FORCED_MODE	= 2,
+	LINK_TYPE_SGMII_MAC_TO_FIBRE_MODE	= 3,
+	LINK_TYPE_SGMII_MAC_TO_PHY_NO_MDIO_MODE	= 4,
+	LINK_TYPE_RGMII_LINK_MAC_PHY		= 5,
+	LINK_TYPE_RGMII_LINK_MAC_MAC_FORCED	= 6,
+	LINK_TYPE_RGMII_LINK_MAC_PHY_NO_MDIO	= 7,
+	LINK_TYPE_10G_MAC_TO_PHY_MODE		= 10,
+	LINK_TYPE_10G_MAC_TO_MAC_FORCED_MODE	= 11,
 };
 
 #define mac_hi(mac)     (((mac)[0] << 0) | ((mac)[1] << 8) |    \
@@ -1077,11 +1080,15 @@  static int ks2_eth_parse_slave_interface(int netcp, int slave,
 		priv->mdio_base = (void *)fdtdec_get_addr(fdt, mdio, "reg");
 	}
 
-	if (priv->link_type == LINK_TYPE_MAC_TO_PHY_MODE) {
+	if (priv->link_type == LINK_TYPE_SGMII_MAC_TO_PHY_MODE) {
 		priv->phy_if = PHY_INTERFACE_MODE_SGMII;
 		pdata->phy_interface = priv->phy_if;
 		priv->sgmii_link_type = SGMII_LINK_MAC_PHY;
 		priv->has_mdio = true;
+	} else if (priv->link_type == LINK_TYPE_RGMII_LINK_MAC_PHY) {
+		priv->phy_if = PHY_INTERFACE_MODE_RGMII;
+		pdata->phy_interface = priv->phy_if;
+		priv->has_mdio = true;
 	}
 
 	return 0;