net: sh_eth: modify the PHY_INTERFACE_MODE
Subsystems (3)
PATCH 4/6 net: sh_eth: modify the PHY_INTERFACE_MODE
The previous code had hardcoded the PHY_INTERFACE_MODE_MII of phy_connect. So some Gigabit PHYs will not behave correctly.
The patch adds the phy_interface in sh_eth_plat_data, so we can select the phy interface.
Signed-off-by Yoshihiro Shimoda <[email protected]>
---
This patch are based on net-next-2.6.git.
arch/sh/include/asm/sh_eth.h | 3 +++ drivers/net/sh_eth.c | 3 ++- drivers/net/sh_eth.h | 1 + 3 files changed, 6 insertions(+), 1 deletions(-)
arch/sh/include/asm/sh_eth.h +3 -0
@@ -1,6 +1,8 @@#ifndef __ASM_SH_ETH_H__#define __ASM_SH_ETH_H__ +#include <linux/phy.h> +enum {EDMAC_LITTLE_ENDIAN ,EDMAC_BIG_ENDIAN };enum { SH_ETH_REG_GIGABIT,
@@ -12,6 +14,7 @@ struct sh_eth_plat_data {int phy;int edmac_endian;int register_type; +phy_interface_t phy_interface;unsigned char mac_addr[6 ]; unsigned no_ether_link:1;
drivers/net/sh_eth.c +2 -1
@@ -1071,7 +1071,7 @@ static int sh_eth_phy_init(struct net_device *ndev)/* Try connect to PHY */ phydev =phy_connect (ndev, phy_id, sh_eth_adjust_link, -0 ,PHY_INTERFACE_MODE_MII ); +0 , mdp->phy_interface);if (IS_ERR (phydev)) {dev_err (&ndev->dev,"phy_connect failed\n" );return PTR_ERR (phydev);
@@ -1669,6 +1669,7 @@ static int sh_eth_drv_probe(struct platform_device *pdev) pd = (struct sh_eth_plat_data *)(pdev->dev.platform_data);/* get PHY ID */ mdp->phy_id = pd->phy; + mdp->phy_interface = pd->phy_interface;/* EDMAC endian */ mdp->edmac_endian = pd->edmac_endian; mdp->no_ether_link = pd->no_ether_link;
drivers/net/sh_eth.h +1 -0
@@ -781,6 +781,7 @@ struct sh_eth_private {struct mii_bus *mii_bus;/* MDIO bus control */ struct phy_device *phydev;/* PHY device control */ enum phy_state link; +phy_interface_t phy_interface;int msg_enable;int speed;int duplex;
Signature · 1 line
1.7.1
From: Yoshihiro Shimoda <[email protected]>
Date: Tue, 08 Mar 2011 16:59:45 +0900
Quoted 6 lines
The previous code had hardcoded the
PHY_INTERFACE_MODE_MIIofphy_connect. So some Gigabit PHYs will not behave correctly.
The patch adds thephy_interfaceinsh_eth_plat_data, so we can select the phy interface.Signed-off-by Yoshihiro Shimoda <[email protected]>
Applied.