forked from luck/tmp_suning_uos_patched
phy: SMSC device Energy Detect power-down mode
SMSC Ethernet Transceivers (LAN88710, LAN8710, LAN8720, LAN8187, LAN8700, LAN83C185) provide a mechanism to conserve power when the device is not connected to an active link partner (Energy Detect Mode). So this patch enables the Energy Detect power-down mode for these Transceivers. Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6352671308
commit
698244ace8
@ -25,6 +25,7 @@
|
||||
|
||||
#define MII_LAN83C185_ISF 29 /* Interrupt Source Flags */
|
||||
#define MII_LAN83C185_IM 30 /* Interrupt Mask */
|
||||
#define MII_LAN83C185_CTRL_STATUS 17 /* Mode/Status Register */
|
||||
|
||||
#define MII_LAN83C185_ISF_INT1 (1<<1) /* Auto-Negotiation Page Received */
|
||||
#define MII_LAN83C185_ISF_INT2 (1<<2) /* Parallel Detection Fault */
|
||||
@ -37,8 +38,10 @@
|
||||
#define MII_LAN83C185_ISF_INT_ALL (0x0e)
|
||||
|
||||
#define MII_LAN83C185_ISF_INT_PHYLIB_EVENTS \
|
||||
(MII_LAN83C185_ISF_INT6 | MII_LAN83C185_ISF_INT4)
|
||||
(MII_LAN83C185_ISF_INT6 | MII_LAN83C185_ISF_INT4 | \
|
||||
MII_LAN83C185_ISF_INT7)
|
||||
|
||||
#define MII_LAN83C185_EDPWRDOWN (1 << 13) /* EDPWRDOWN */
|
||||
|
||||
static int smsc_phy_config_intr(struct phy_device *phydev)
|
||||
{
|
||||
@ -59,9 +62,23 @@ static int smsc_phy_ack_interrupt(struct phy_device *phydev)
|
||||
|
||||
static int smsc_phy_config_init(struct phy_device *phydev)
|
||||
{
|
||||
int rc = phy_read(phydev, MII_LAN83C185_CTRL_STATUS);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
|
||||
/* Enable energy detect mode for this SMSC Transceivers */
|
||||
rc = phy_write(phydev, MII_LAN83C185_CTRL_STATUS,
|
||||
rc | MII_LAN83C185_EDPWRDOWN);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
|
||||
return smsc_phy_ack_interrupt (phydev);
|
||||
}
|
||||
|
||||
static int lan911x_config_init(struct phy_device *phydev)
|
||||
{
|
||||
return smsc_phy_ack_interrupt(phydev);
|
||||
}
|
||||
|
||||
static struct phy_driver lan83c185_driver = {
|
||||
.phy_id = 0x0007c0a0, /* OUI=0x00800f, Model#=0x0a */
|
||||
@ -147,7 +164,7 @@ static struct phy_driver lan911x_int_driver = {
|
||||
/* basic functions */
|
||||
.config_aneg = genphy_config_aneg,
|
||||
.read_status = genphy_read_status,
|
||||
.config_init = smsc_phy_config_init,
|
||||
.config_init = lan911x_config_init,
|
||||
|
||||
/* IRQ related */
|
||||
.ack_interrupt = smsc_phy_ack_interrupt,
|
||||
|
Loading…
Reference in New Issue
Block a user