mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-04 10:43:35 +00:00
driver: net: keystone_net: fix phy mode configuration
Phy mode is a board property and it can be different between multiple board and ports, so it should not be hardcoded in driver to one specific mode. So adding a field in eth_priv_t structure to pass phy mode to driver. Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
This commit is contained in:
parent
cddb330035
commit
bf7bd4e725
5 changed files with 20 additions and 2 deletions
|
@ -11,6 +11,7 @@
|
||||||
#define _KEYSTONE_NET_H_
|
#define _KEYSTONE_NET_H_
|
||||||
|
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
#include <phy.h>
|
||||||
|
|
||||||
/* EMAC */
|
/* EMAC */
|
||||||
#ifdef CONFIG_KSNET_NETCP_V1_0
|
#ifdef CONFIG_KSNET_NETCP_V1_0
|
||||||
|
@ -243,6 +244,7 @@ struct eth_priv_t {
|
||||||
int phy_addr;
|
int phy_addr;
|
||||||
int slave_port;
|
int slave_port;
|
||||||
int sgmii_link_type;
|
int sgmii_link_type;
|
||||||
|
phy_interface_t phy_if;
|
||||||
struct phy_device *phy_dev;
|
struct phy_device *phy_dev;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -82,6 +82,7 @@ struct eth_priv_t eth_priv_cfg[] = {
|
||||||
.phy_addr = 0,
|
.phy_addr = 0,
|
||||||
.slave_port = 1,
|
.slave_port = 1,
|
||||||
.sgmii_link_type = SGMII_LINK_MAC_PHY,
|
.sgmii_link_type = SGMII_LINK_MAC_PHY,
|
||||||
|
.phy_if = PHY_INTERFACE_MODE_SGMII,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.int_name = "K2E_EMAC1",
|
.int_name = "K2E_EMAC1",
|
||||||
|
@ -89,6 +90,7 @@ struct eth_priv_t eth_priv_cfg[] = {
|
||||||
.phy_addr = 1,
|
.phy_addr = 1,
|
||||||
.slave_port = 2,
|
.slave_port = 2,
|
||||||
.sgmii_link_type = SGMII_LINK_MAC_PHY,
|
.sgmii_link_type = SGMII_LINK_MAC_PHY,
|
||||||
|
.phy_if = PHY_INTERFACE_MODE_SGMII,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.int_name = "K2E_EMAC2",
|
.int_name = "K2E_EMAC2",
|
||||||
|
@ -96,6 +98,7 @@ struct eth_priv_t eth_priv_cfg[] = {
|
||||||
.phy_addr = 2,
|
.phy_addr = 2,
|
||||||
.slave_port = 3,
|
.slave_port = 3,
|
||||||
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
||||||
|
.phy_if = PHY_INTERFACE_MODE_SGMII,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.int_name = "K2E_EMAC3",
|
.int_name = "K2E_EMAC3",
|
||||||
|
@ -103,6 +106,7 @@ struct eth_priv_t eth_priv_cfg[] = {
|
||||||
.phy_addr = 3,
|
.phy_addr = 3,
|
||||||
.slave_port = 4,
|
.slave_port = 4,
|
||||||
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
||||||
|
.phy_if = PHY_INTERFACE_MODE_SGMII,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.int_name = "K2E_EMAC4",
|
.int_name = "K2E_EMAC4",
|
||||||
|
@ -110,6 +114,7 @@ struct eth_priv_t eth_priv_cfg[] = {
|
||||||
.phy_addr = 4,
|
.phy_addr = 4,
|
||||||
.slave_port = 5,
|
.slave_port = 5,
|
||||||
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
||||||
|
.phy_if = PHY_INTERFACE_MODE_SGMII,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.int_name = "K2E_EMAC5",
|
.int_name = "K2E_EMAC5",
|
||||||
|
@ -117,6 +122,7 @@ struct eth_priv_t eth_priv_cfg[] = {
|
||||||
.phy_addr = 5,
|
.phy_addr = 5,
|
||||||
.slave_port = 6,
|
.slave_port = 6,
|
||||||
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
||||||
|
.phy_if = PHY_INTERFACE_MODE_SGMII,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.int_name = "K2E_EMAC6",
|
.int_name = "K2E_EMAC6",
|
||||||
|
@ -124,6 +130,7 @@ struct eth_priv_t eth_priv_cfg[] = {
|
||||||
.phy_addr = 6,
|
.phy_addr = 6,
|
||||||
.slave_port = 7,
|
.slave_port = 7,
|
||||||
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
||||||
|
.phy_if = PHY_INTERFACE_MODE_SGMII,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.int_name = "K2E_EMAC7",
|
.int_name = "K2E_EMAC7",
|
||||||
|
@ -131,6 +138,7 @@ struct eth_priv_t eth_priv_cfg[] = {
|
||||||
.phy_addr = 7,
|
.phy_addr = 7,
|
||||||
.slave_port = 8,
|
.slave_port = 8,
|
||||||
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
||||||
|
.phy_if = PHY_INTERFACE_MODE_SGMII,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -76,6 +76,7 @@ struct eth_priv_t eth_priv_cfg[] = {
|
||||||
.phy_addr = 0,
|
.phy_addr = 0,
|
||||||
.slave_port = 1,
|
.slave_port = 1,
|
||||||
.sgmii_link_type = SGMII_LINK_MAC_PHY,
|
.sgmii_link_type = SGMII_LINK_MAC_PHY,
|
||||||
|
.phy_if = PHY_INTERFACE_MODE_SGMII,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.int_name = "K2HK_EMAC1",
|
.int_name = "K2HK_EMAC1",
|
||||||
|
@ -83,6 +84,7 @@ struct eth_priv_t eth_priv_cfg[] = {
|
||||||
.phy_addr = 1,
|
.phy_addr = 1,
|
||||||
.slave_port = 2,
|
.slave_port = 2,
|
||||||
.sgmii_link_type = SGMII_LINK_MAC_PHY,
|
.sgmii_link_type = SGMII_LINK_MAC_PHY,
|
||||||
|
.phy_if = PHY_INTERFACE_MODE_SGMII,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.int_name = "K2HK_EMAC2",
|
.int_name = "K2HK_EMAC2",
|
||||||
|
@ -90,6 +92,7 @@ struct eth_priv_t eth_priv_cfg[] = {
|
||||||
.phy_addr = 2,
|
.phy_addr = 2,
|
||||||
.slave_port = 3,
|
.slave_port = 3,
|
||||||
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
||||||
|
.phy_if = PHY_INTERFACE_MODE_SGMII,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.int_name = "K2HK_EMAC3",
|
.int_name = "K2HK_EMAC3",
|
||||||
|
@ -97,6 +100,7 @@ struct eth_priv_t eth_priv_cfg[] = {
|
||||||
.phy_addr = 3,
|
.phy_addr = 3,
|
||||||
.slave_port = 4,
|
.slave_port = 4,
|
||||||
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
||||||
|
.phy_if = PHY_INTERFACE_MODE_SGMII,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -75,6 +75,7 @@ struct eth_priv_t eth_priv_cfg[] = {
|
||||||
.phy_addr = 0,
|
.phy_addr = 0,
|
||||||
.slave_port = 1,
|
.slave_port = 1,
|
||||||
.sgmii_link_type = SGMII_LINK_MAC_PHY,
|
.sgmii_link_type = SGMII_LINK_MAC_PHY,
|
||||||
|
.phy_if = PHY_INTERFACE_MODE_SGMII,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.int_name = "K2L_EMAC1",
|
.int_name = "K2L_EMAC1",
|
||||||
|
@ -82,6 +83,7 @@ struct eth_priv_t eth_priv_cfg[] = {
|
||||||
.phy_addr = 1,
|
.phy_addr = 1,
|
||||||
.slave_port = 2,
|
.slave_port = 2,
|
||||||
.sgmii_link_type = SGMII_LINK_MAC_PHY,
|
.sgmii_link_type = SGMII_LINK_MAC_PHY,
|
||||||
|
.phy_if = PHY_INTERFACE_MODE_SGMII,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.int_name = "K2L_EMAC2",
|
.int_name = "K2L_EMAC2",
|
||||||
|
@ -89,6 +91,7 @@ struct eth_priv_t eth_priv_cfg[] = {
|
||||||
.phy_addr = 2,
|
.phy_addr = 2,
|
||||||
.slave_port = 3,
|
.slave_port = 3,
|
||||||
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
||||||
|
.phy_if = PHY_INTERFACE_MODE_SGMII,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.int_name = "K2L_EMAC3",
|
.int_name = "K2L_EMAC3",
|
||||||
|
@ -96,6 +99,7 @@ struct eth_priv_t eth_priv_cfg[] = {
|
||||||
.phy_addr = 3,
|
.phy_addr = 3,
|
||||||
.slave_port = 4,
|
.slave_port = 4,
|
||||||
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
||||||
|
.phy_if = PHY_INTERFACE_MODE_SGMII,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -569,11 +569,11 @@ int keystone2_emac_initialize(struct eth_priv_t *eth_priv)
|
||||||
/* Create phy device and bind it with driver */
|
/* Create phy device and bind it with driver */
|
||||||
#ifdef CONFIG_KSNET_MDIO_PHY_CONFIG_ENABLE
|
#ifdef CONFIG_KSNET_MDIO_PHY_CONFIG_ENABLE
|
||||||
phy_dev = phy_connect(mdio_bus, eth_priv->phy_addr,
|
phy_dev = phy_connect(mdio_bus, eth_priv->phy_addr,
|
||||||
dev, PHY_INTERFACE_MODE_SGMII);
|
dev, eth_priv->phy_if);
|
||||||
phy_config(phy_dev);
|
phy_config(phy_dev);
|
||||||
#else
|
#else
|
||||||
phy_dev = phy_find_by_mask(mdio_bus, 1 << eth_priv->phy_addr,
|
phy_dev = phy_find_by_mask(mdio_bus, 1 << eth_priv->phy_addr,
|
||||||
PHY_INTERFACE_MODE_SGMII);
|
eth_priv->phy_if);
|
||||||
phy_dev->dev = dev;
|
phy_dev->dev = dev;
|
||||||
#endif
|
#endif
|
||||||
eth_priv->phy_dev = phy_dev;
|
eth_priv->phy_dev = phy_dev;
|
||||||
|
|
Loading…
Add table
Reference in a new issue