Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dm9161: add configuration for MII/RMII

Signed-off-by: Frederic Rodo <f.rodo@til-technologies.fr>
Signed-off-by: Jeff Garzik <jeff@garzik.org>

authored by

frederic Rodo and committed by
Jeff Garzik
8b7c1664 dea75bdf

+14 -3
+14 -3
drivers/net/phy/davicom.c
··· 37 37 38 38 #define MII_DM9161_SCR 0x10 39 39 #define MII_DM9161_SCR_INIT 0x0610 40 + #define MII_DM9161_SCR_RMII 0x0100 40 41 41 42 /* DM9161 Interrupt Register */ 42 43 #define MII_DM9161_INTR 0x15 ··· 104 103 105 104 static int dm9161_config_init(struct phy_device *phydev) 106 105 { 107 - int err; 106 + int err, temp; 108 107 109 108 /* Isolate the PHY */ 110 109 err = phy_write(phydev, MII_BMCR, BMCR_ISOLATE); ··· 112 111 if (err < 0) 113 112 return err; 114 113 115 - /* Do not bypass the scrambler/descrambler */ 116 - err = phy_write(phydev, MII_DM9161_SCR, MII_DM9161_SCR_INIT); 114 + switch (phydev->interface) { 115 + case PHY_INTERFACE_MODE_MII: 116 + temp = MII_DM9161_SCR_INIT; 117 + break; 118 + case PHY_INTERFACE_MODE_RMII: 119 + temp = MII_DM9161_SCR_INIT | MII_DM9161_SCR_RMII; 120 + break; 121 + default: 122 + return -EINVAL; 123 + } 117 124 125 + /* Do not bypass the scrambler/descrambler */ 126 + err = phy_write(phydev, MII_DM9161_SCR, temp); 118 127 if (err < 0) 119 128 return err; 120 129