فهرست منبع

Add support for MII in eepro100 driver.
Patch by Gleb Natapov, 21 Mar 2005

Wolfgang Denk 19 سال پیش
والد
کامیت
a912733e9b
2فایلهای تغییر یافته به همراه44 افزوده شده و 0 حذف شده
  1. 3 0
      CHANGELOG
  2. 41 0
      drivers/eepro100.c

+ 3 - 0
CHANGELOG

@@ -2,6 +2,9 @@
 Changes for U-Boot 1.1.4:
 ======================================================================
 
+* Add support for MII in eepro100 driver.
+  Patch by Gleb Natapov, 21 Mar 2005
+
 * Fixes to the Lubbock (PXA 25x) support:
   - Resolve the FIXME with respect to saving the u-boot environment.
   - Make the default load address land in real memory.

+ 41 - 0
drivers/eepro100.c

@@ -271,6 +271,47 @@ static inline void OUTL (struct eth_device *dev, int command, u_long addr)
 	*(volatile u32 *) ((addr + dev->iobase)) = cpu_to_le32 (command);
 }
 
+#if defined (CONFIG_MII) || (CONFIG_COMMANDS & CFG_CMD_MII)
+static inline int INL (struct eth_device *dev, u_long addr)
+{
+	return le32_to_cpu (*(volatile u32 *) (addr + dev->iobase));
+}
+
+int miiphy_read (unsigned char  addr,
+                unsigned char  reg,
+                unsigned short *value)
+{
+	int cmd = (2 << 26) | ((addr & 0x1f) << 21) | ((reg & 0x1f) << 16);
+
+	struct eth_device *dev = eth_get_dev ();
+
+	OUTL (dev, cmd, SCBCtrlMDI);
+	
+	do {
+		cmd = INL (dev, SCBCtrlMDI);
+	} while (!(cmd & (1 << 28)));
+
+	*value = (unsigned short) (cmd & 0xffff);
+	
+	return 0;
+}
+
+int miiphy_write (unsigned char  addr,
+		unsigned char  reg,
+		unsigned short value)
+{
+	int cmd = (1 << 26) | ((addr & 0x1f) << 21) | ((reg & 0x1f) << 16);
+
+	struct eth_device *dev = eth_get_dev ();
+
+	OUTL (dev, cmd | value, SCBCtrlMDI);
+
+	while (!(INL (dev, SCBCtrlMDI) & (1 << 28)));
+
+	return 0;
+}
+#endif /* (CONFIG_MII) || (CONFIG_COMMANDS & CFG_CMD_MII) */
+
 	/* Wait for the chip get the command.
 	 */
 static int wait_for_eepro100 (struct eth_device *dev)