Merge branch 'rmobile' of git://git.denx.de/u-boot-sh
[platform/kernel/u-boot.git] / drivers / net / eepro100.c
index f2cd32c..0f350cb 100644 (file)
@@ -240,23 +240,23 @@ static void eepro100_halt (struct eth_device *dev);
 
 static inline int INW (struct eth_device *dev, u_long addr)
 {
-       return le16_to_cpu (*(volatile u16 *) (addr + dev->iobase));
+       return le16_to_cpu(*(volatile u16 *)(addr + (u_long)dev->iobase));
 }
 
 static inline void OUTW (struct eth_device *dev, int command, u_long addr)
 {
-       *(volatile u16 *) ((addr + dev->iobase)) = cpu_to_le16 (command);
+       *(volatile u16 *)((addr + (u_long)dev->iobase)) = cpu_to_le16(command);
 }
 
 static inline void OUTL (struct eth_device *dev, int command, u_long addr)
 {
-       *(volatile u32 *) ((addr + dev->iobase)) = cpu_to_le32 (command);
+       *(volatile u32 *)((addr + (u_long)dev->iobase)) = cpu_to_le32(command);
 }
 
 #if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
 static inline int INL (struct eth_device *dev, u_long addr)
 {
-       return le32_to_cpu (*(volatile u32 *) (addr + dev->iobase));
+       return le32_to_cpu(*(volatile u32 *)(addr + (u_long)dev->iobase));
 }
 
 static int get_phyreg (struct eth_device *dev, unsigned char addr,
@@ -334,34 +334,35 @@ static struct eth_device* verify_phyaddr (const char *devname,
        return dev;
 }
 
-static int eepro100_miiphy_read(const char *devname, unsigned char addr,
-               unsigned char reg, unsigned short *value)
+static int eepro100_miiphy_read(struct mii_dev *bus, int addr, int devad,
+                               int reg)
 {
+       unsigned short value = 0;
        struct eth_device *dev;
 
-       dev = verify_phyaddr(devname, addr);
+       dev = verify_phyaddr(bus->name, addr);
        if (dev == NULL)
                return -1;
 
-       if (get_phyreg(dev, addr, reg, value) != 0) {
-               printf("%s: mii read timeout!\n", devname);
+       if (get_phyreg(dev, addr, reg, &value) != 0) {
+               printf("%s: mii read timeout!\n", bus->name);
                return -1;
        }
 
-       return 0;
+       return value;
 }
 
-static int eepro100_miiphy_write(const char *devname, unsigned char addr,
-               unsigned char reg, unsigned short value)
+static int eepro100_miiphy_write(struct mii_dev *bus, int addr, int devad,
+                                int reg, u16 value)
 {
        struct eth_device *dev;
 
-       dev = verify_phyaddr(devname, addr);
+       dev = verify_phyaddr(bus->name, addr);
        if (dev == NULL)
                return -1;
 
        if (set_phyreg(dev, addr, reg, value) != 0) {
-               printf("%s: mii write timeout!\n", devname);
+               printf("%s: mii write timeout!\n", bus->name);
                return -1;
        }
 
@@ -451,8 +452,17 @@ int eepro100_initialize (bd_t * bis)
 
 #if defined (CONFIG_MII) || defined(CONFIG_CMD_MII)
                /* register mii command access routines */
-               miiphy_register(dev->name,
-                               eepro100_miiphy_read, eepro100_miiphy_write);
+               int retval;
+               struct mii_dev *mdiodev = mdio_alloc();
+               if (!mdiodev)
+                       return -ENOMEM;
+               strncpy(mdiodev->name, dev->name, MDIO_NAME_LEN);
+               mdiodev->read = eepro100_miiphy_read;
+               mdiodev->write = eepro100_miiphy_write;
+
+               retval = mdio_register(mdiodev);
+               if (retval < 0)
+                       return retval;
 #endif
 
                card_number++;