chelsio: Use generic MDIO definitions and mdio_mii_ioctl()
Compile-tested only. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
68e7f45e11
commit
23c3320cb0
@ -284,32 +284,29 @@ static void mi1_mdio_init(adapter_t *adapter, const struct board_info *bi)
|
||||
/*
|
||||
* Elmer MI1 MDIO read/write operations.
|
||||
*/
|
||||
static int mi1_mdio_read(adapter_t *adapter, int phy_addr, int mmd_addr,
|
||||
int reg_addr, unsigned int *valp)
|
||||
static int mi1_mdio_read(struct net_device *dev, int phy_addr, int mmd_addr,
|
||||
u16 reg_addr)
|
||||
{
|
||||
struct adapter *adapter = dev->ml_priv;
|
||||
u32 addr = V_MI1_REG_ADDR(reg_addr) | V_MI1_PHY_ADDR(phy_addr);
|
||||
|
||||
if (mmd_addr)
|
||||
return -EINVAL;
|
||||
unsigned int val;
|
||||
|
||||
spin_lock(&adapter->tpi_lock);
|
||||
__t1_tpi_write(adapter, A_ELMER0_PORT0_MI1_ADDR, addr);
|
||||
__t1_tpi_write(adapter,
|
||||
A_ELMER0_PORT0_MI1_OP, MI1_OP_DIRECT_READ);
|
||||
mi1_wait_until_ready(adapter, A_ELMER0_PORT0_MI1_OP);
|
||||
__t1_tpi_read(adapter, A_ELMER0_PORT0_MI1_DATA, valp);
|
||||
__t1_tpi_read(adapter, A_ELMER0_PORT0_MI1_DATA, &val);
|
||||
spin_unlock(&adapter->tpi_lock);
|
||||
return 0;
|
||||
return val;
|
||||
}
|
||||
|
||||
static int mi1_mdio_write(adapter_t *adapter, int phy_addr, int mmd_addr,
|
||||
int reg_addr, unsigned int val)
|
||||
static int mi1_mdio_write(struct net_device *dev, int phy_addr, int mmd_addr,
|
||||
u16 reg_addr, u16 val)
|
||||
{
|
||||
struct adapter *adapter = dev->ml_priv;
|
||||
u32 addr = V_MI1_REG_ADDR(reg_addr) | V_MI1_PHY_ADDR(phy_addr);
|
||||
|
||||
if (mmd_addr)
|
||||
return -EINVAL;
|
||||
|
||||
spin_lock(&adapter->tpi_lock);
|
||||
__t1_tpi_write(adapter, A_ELMER0_PORT0_MI1_ADDR, addr);
|
||||
__t1_tpi_write(adapter, A_ELMER0_PORT0_MI1_DATA, val);
|
||||
@ -324,16 +321,19 @@ static int mi1_mdio_write(adapter_t *adapter, int phy_addr, int mmd_addr,
|
||||
static const struct mdio_ops mi1_mdio_ops = {
|
||||
.init = mi1_mdio_init,
|
||||
.read = mi1_mdio_read,
|
||||
.write = mi1_mdio_write
|
||||
.write = mi1_mdio_write,
|
||||
.mode_support = MDIO_SUPPORTS_C22
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
static int mi1_mdio_ext_read(adapter_t *adapter, int phy_addr, int mmd_addr,
|
||||
int reg_addr, unsigned int *valp)
|
||||
static int mi1_mdio_ext_read(struct net_device *dev, int phy_addr, int mmd_addr,
|
||||
u16 reg_addr)
|
||||
{
|
||||
struct adapter *adapter = dev->ml_priv;
|
||||
u32 addr = V_MI1_REG_ADDR(mmd_addr) | V_MI1_PHY_ADDR(phy_addr);
|
||||
unsigned int val;
|
||||
|
||||
spin_lock(&adapter->tpi_lock);
|
||||
|
||||
@ -350,14 +350,15 @@ static int mi1_mdio_ext_read(adapter_t *adapter, int phy_addr, int mmd_addr,
|
||||
mi1_wait_until_ready(adapter, A_ELMER0_PORT0_MI1_OP);
|
||||
|
||||
/* Read the data. */
|
||||
__t1_tpi_read(adapter, A_ELMER0_PORT0_MI1_DATA, valp);
|
||||
__t1_tpi_read(adapter, A_ELMER0_PORT0_MI1_DATA, &val);
|
||||
spin_unlock(&adapter->tpi_lock);
|
||||
return 0;
|
||||
return val;
|
||||
}
|
||||
|
||||
static int mi1_mdio_ext_write(adapter_t *adapter, int phy_addr, int mmd_addr,
|
||||
int reg_addr, unsigned int val)
|
||||
static int mi1_mdio_ext_write(struct net_device *dev, int phy_addr,
|
||||
int mmd_addr, u16 reg_addr, u16 val)
|
||||
{
|
||||
struct adapter *adapter = dev->ml_priv;
|
||||
u32 addr = V_MI1_REG_ADDR(mmd_addr) | V_MI1_PHY_ADDR(phy_addr);
|
||||
|
||||
spin_lock(&adapter->tpi_lock);
|
||||
@ -380,7 +381,8 @@ static int mi1_mdio_ext_write(adapter_t *adapter, int phy_addr, int mmd_addr,
|
||||
static const struct mdio_ops mi1_mdio_ext_ops = {
|
||||
.init = mi1_mdio_init,
|
||||
.read = mi1_mdio_ext_read,
|
||||
.write = mi1_mdio_ext_write
|
||||
.write = mi1_mdio_ext_write,
|
||||
.mode_support = MDIO_SUPPORTS_C45 | MDIO_EMULATE_C22
|
||||
};
|
||||
|
||||
enum {
|
||||
@ -1140,6 +1142,7 @@ int __devinit t1_init_sw_modules(adapter_t *adapter,
|
||||
adapter->name, i);
|
||||
goto error;
|
||||
}
|
||||
adapter->port[i].phy->mdio.dev = adapter->port[i].dev;
|
||||
|
||||
adapter->port[i].mac = mac = bi->gmac->create(adapter, i);
|
||||
if (!mac) {
|
||||
|
Reference in New Issue
Block a user