summaryrefslogtreecommitdiff
path: root/drivers/qe
diff options
context:
space:
mode:
authorStefan Roese <sr@denx.de>2008-08-12 20:39:27 +0200
committerStefan Roese <sr@denx.de>2008-08-12 20:39:27 +0200
commit9939ffd5fbf1f5aff4d8172531d4fc33797c62c8 (patch)
tree40e9295368c82a9c7f2b09e7b1fb76c2c44df0ce /drivers/qe
parent1c7015100a620582224f25eb057573a0fe147648 (diff)
parentcd82919e6c8a73b363a26f34b734923844e52d1c (diff)
downloadu-boot-imx-9939ffd5fbf1f5aff4d8172531d4fc33797c62c8.zip
u-boot-imx-9939ffd5fbf1f5aff4d8172531d4fc33797c62c8.tar.gz
u-boot-imx-9939ffd5fbf1f5aff4d8172531d4fc33797c62c8.tar.bz2
Merge branch 'master' of /home/stefan/git/u-boot/u-boot into next
Diffstat (limited to 'drivers/qe')
-rw-r--r--drivers/qe/uec.c50
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 */