diff options
author | Wolfgang Denk <wd@denx.de> | 2008-08-10 01:01:41 +0200 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2008-08-10 01:01:41 +0200 |
commit | cd5b7d4a1e651e9197a5ac9e9e957d70b126d16d (patch) | |
tree | 92b4d8eab9b9b0e59da3e93cf8266121a9f414a7 /drivers | |
parent | fe749f0cef7b07f2e701543ac5f78cf21bc5829f (diff) | |
parent | d9d78ee46d9a396d0a81d00c2b003a9bd32c2e61 (diff) | |
download | u-boot-imx-cd5b7d4a1e651e9197a5ac9e9e957d70b126d16d.zip u-boot-imx-cd5b7d4a1e651e9197a5ac9e9e957d70b126d16d.tar.gz u-boot-imx-cd5b7d4a1e651e9197a5ac9e9e957d70b126d16d.tar.bz2 |
Merge branch 'master' of git://git.denx.de/u-boot-net
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/qe/uec.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/drivers/qe/uec.c b/drivers/qe/uec.c index d2c430b..ba89247 100644 --- a/drivers/qe/uec.c +++ b/drivers/qe/uec.c @@ -29,6 +29,7 @@ #include "uccf.h" #include "uec.h" #include "uec_phy.h" +#include "miiphy.h" #if defined(CONFIG_QE) @@ -125,6 +126,13 @@ static uec_info_t eth4_uec_info = { }; #endif +#define MAXCONTROLLERS (4) + +static struct eth_device *devlist[MAXCONTROLLERS]; + +u16 phy_read (struct uec_mii_info *mii_info, u16 regnum); +void phy_write (struct uec_mii_info *mii_info, u16 regnum, u16 val); + static int uec_mac_enable(uec_private_t *uec, comm_dir_e mode) { uec_t *uec_regs; @@ -629,6 +637,39 @@ static void phy_change(struct eth_device *dev) adjust_link(dev); } +#if defined(CONFIG_MII) || defined(CONFIG_CMD_MII) \ + && !defined(BITBANGMII) + +/* + * Read a MII PHY register. + * + * Returns: + * 0 on success + */ +static int uec_miiphy_read(char *devname, unsigned char addr, + unsigned char reg, unsigned short *value) +{ + *value = uec_read_phy_reg(devlist[0], addr, reg); + + return 0; +} + +/* + * Write a MII PHY register. + * + * Returns: + * 0 on success + */ +static int uec_miiphy_write(char *devname, unsigned char addr, + unsigned char reg, unsigned short value) +{ + uec_write_phy_reg(devlist[0], addr, reg, value); + + return 0; +} + +#endif + static int uec_set_mac_address(uec_private_t *uec, u8 *mac_addr) { uec_t *uec_regs; @@ -1334,6 +1375,8 @@ int uec_initialize(int index) return -EINVAL; } + devlist[index] = dev; + uec->uec_info = uec_info; sprintf(dev->name, "FSL UEC%d", index); @@ -1356,6 +1399,13 @@ int uec_initialize(int index) return err; } +#if defined(CONFIG_MII) || defined(CONFIG_CMD_MII) \ + && !defined(BITBANGMII) + miiphy_register(dev->name, uec_miiphy_read, uec_miiphy_write); +#endif + return 1; } + + #endif /* CONFIG_QE */ |