diff options
author | WingMan Kwok | 2015-02-27 15:18:33 -0600 |
---|---|---|
committer | WingMan Kwok | 2015-03-10 09:20:18 -0500 |
commit | efd468cfeeb35dbb843540d6bcc8c61231a054a7 (patch) | |
tree | 4fb93abfabe32bfe0313d3f1338f283b91126fdd /drivers/net/ethernet/ti/keystone_ethss2.c | |
parent | e55b702ba52b4e43073cb33a7a4a95c1d55ddb53 (diff) | |
download | linux-efd468cfeeb35dbb843540d6bcc8c61231a054a7.tar.gz linux-efd468cfeeb35dbb843540d6bcc8c61231a054a7.tar.xz linux-efd468cfeeb35dbb843540d6bcc8c61231a054a7.zip |
net: keystone: add support of additional 1G sgmii mode configurations
This patch adds support of 3 1G sgmii mode configurations
1. MAC-to-PHY master (SGMII_LINK_MAC_PHY_MASTER)
2. MAC-to-PHY master NO MDIO (SGMII_LINK_MAC_PHY_MASTER_NO_MDIO)
- SGMII is in master mode and auto-nego enabled
- use this mode to work around link down/up
issue observed on K2E/L.
- these 2 modes supports only gigabit fullduplex connections.
3. MAC-to-MAC Auto-negotiation Slave (SGMII_LINK_MAC_MAC_AN_SLAVE)
- When connected 2 EVMs back-to-back and one
side is configured as MAC-to-MAC Auto-negotiation master
the other side needs to be configured as auto-nego slave.
Signed-off-by: WingMan Kwok <w-kwok2@ti.com>
Diffstat (limited to 'drivers/net/ethernet/ti/keystone_ethss2.c')
-rw-r--r-- | drivers/net/ethernet/ti/keystone_ethss2.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/net/ethernet/ti/keystone_ethss2.c b/drivers/net/ethernet/ti/keystone_ethss2.c index b0f701f5289..e5fadee8c0f 100644 --- a/drivers/net/ethernet/ti/keystone_ethss2.c +++ b/drivers/net/ethernet/ti/keystone_ethss2.c | |||
@@ -164,6 +164,8 @@ | |||
164 | #define SGMII2_BASE(s) (((s) < 2) ? cpsw_dev->sgmii_port_regs : \ | 164 | #define SGMII2_BASE(s) (((s) < 2) ? cpsw_dev->sgmii_port_regs : \ |
165 | cpsw_dev->sgmii_port_regs + SGMII_REGS_SIZE * 2) | 165 | cpsw_dev->sgmii_port_regs + SGMII_REGS_SIZE * 2) |
166 | 166 | ||
167 | #define IS_SGMII_MAC_PHY(i) \ | ||
168 | (((i) == SGMII_LINK_MAC_PHY) || ((i) == SGMII_LINK_MAC_PHY_MASTER)) | ||
167 | 169 | ||
168 | /* CPSW Statistics register map size */ | 170 | /* CPSW Statistics register map size */ |
169 | #define CPSW2_STATS_REGS_SIZE 0x200 | 171 | #define CPSW2_STATS_REGS_SIZE 0x200 |
@@ -2597,7 +2599,7 @@ static void cpsw2_slave_link(struct cpsw2_slave *slave, | |||
2597 | struct netcp_priv *netcp = netdev_priv(cpsw_intf->ndev); | 2599 | struct netcp_priv *netcp = netdev_priv(cpsw_intf->ndev); |
2598 | int sn = slave->slave_num; | 2600 | int sn = slave->slave_num; |
2599 | 2601 | ||
2600 | if (slave->link_interface == SGMII_LINK_MAC_PHY) { | 2602 | if (IS_SGMII_MAC_PHY(slave->link_interface)) { |
2601 | /* check only the bit in phy_link_state_mask | 2603 | /* check only the bit in phy_link_state_mask |
2602 | * that corresponds to the slave | 2604 | * that corresponds to the slave |
2603 | */ | 2605 | */ |
@@ -2640,7 +2642,7 @@ static void cpsw2_slave_open(struct cpsw2_slave *slave, | |||
2640 | cpsw_ale_add_mcast(cpsw_dev->ale, cpsw_intf->ndev->broadcast, | 2642 | cpsw_ale_add_mcast(cpsw_dev->ale, cpsw_intf->ndev->broadcast, |
2641 | 1 << slave_port, 0, 0, ALE_MCAST_FWD_2); | 2643 | 1 << slave_port, 0, 0, ALE_MCAST_FWD_2); |
2642 | 2644 | ||
2643 | if (slave->link_interface == SGMII_LINK_MAC_PHY) { | 2645 | if (IS_SGMII_MAC_PHY(slave->link_interface)) { |
2644 | slave->phy = of_phy_connect(cpsw_intf->ndev, | 2646 | slave->phy = of_phy_connect(cpsw_intf->ndev, |
2645 | cpsw_intf->phy_node, | 2647 | cpsw_intf->phy_node, |
2646 | &cpsw2_adjust_link, 0, | 2648 | &cpsw2_adjust_link, 0, |
@@ -3044,7 +3046,7 @@ static void cpsw2_timer(unsigned long arg) | |||
3044 | */ | 3046 | */ |
3045 | if (!cpsw_dev->multi_if || | 3047 | if (!cpsw_dev->multi_if || |
3046 | (cpsw_dev->multi_if && | 3048 | (cpsw_dev->multi_if && |
3047 | cpsw_intf->slaves->link_interface != SGMII_LINK_MAC_PHY)) { | 3049 | !IS_SGMII_MAC_PHY(cpsw_intf->slaves->link_interface))) { |
3048 | if (cpsw_intf->link_state) | 3050 | if (cpsw_intf->link_state) |
3049 | netif_carrier_on(cpsw_intf->ndev); | 3051 | netif_carrier_on(cpsw_intf->ndev); |
3050 | else | 3052 | else |