]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/net/dsa/mv88e6060.c
Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[karo-tx-linux.git] / drivers / net / dsa / mv88e6060.c
index 325391d19badb8366f27f726dbee042d1fe430ad..7a54ec04b4181210961f2819c7fca1e260cb7661 100644 (file)
@@ -8,6 +8,8 @@
  * (at your option) any later version.
  */
 
+#include <linux/delay.h>
+#include <linux/jiffies.h>
 #include <linux/list.h>
 #include <linux/module.h>
 #include <linux/netdevice.h>
@@ -66,36 +68,30 @@ static int mv88e6060_switch_reset(struct dsa_switch *ds)
 {
        int i;
        int ret;
+       unsigned long timeout;
 
-       /*
-        * Set all ports to the disabled state.
-        */
+       /* Set all ports to the disabled state. */
        for (i = 0; i < 6; i++) {
                ret = REG_READ(REG_PORT(i), 0x04);
                REG_WRITE(REG_PORT(i), 0x04, ret & 0xfffc);
        }
 
-       /*
-        * Wait for transmit queues to drain.
-        */
-       msleep(2);
+       /* Wait for transmit queues to drain. */
+       usleep_range(2000, 4000);
 
-       /*
-        * Reset the switch.
-        */
+       /* Reset the switch. */
        REG_WRITE(REG_GLOBAL, 0x0a, 0xa130);
 
-       /*
-        * Wait up to one second for reset to complete.
-        */
-       for (i = 0; i < 1000; i++) {
+       /* Wait up to one second for reset to complete. */
+       timeout = jiffies + 1 * HZ;
+       while (time_before(jiffies, timeout)) {
                ret = REG_READ(REG_GLOBAL, 0x00);
                if ((ret & 0x8000) == 0x0000)
                        break;
 
-               msleep(1);
+               usleep_range(1000, 2000);
        }
-       if (i == 1000)
+       if (time_after(jiffies, timeout))
                return -ETIMEDOUT;
 
        return 0;
@@ -103,15 +99,13 @@ static int mv88e6060_switch_reset(struct dsa_switch *ds)
 
 static int mv88e6060_setup_global(struct dsa_switch *ds)
 {
-       /*
-        * Disable discarding of frames with excessive collisions,
+       /* Disable discarding of frames with excessive collisions,
         * set the maximum frame size to 1536 bytes, and mask all
         * interrupt sources.
         */
        REG_WRITE(REG_GLOBAL, 0x04, 0x0800);
 
-       /*
-        * Enable automatic address learning, set the address
+       /* Enable automatic address learning, set the address
         * database size to 1024 entries, and set the default aging
         * time to 5 minutes.
         */
@@ -124,16 +118,14 @@ static int mv88e6060_setup_port(struct dsa_switch *ds, int p)
 {
        int addr = REG_PORT(p);
 
-       /*
-        * Do not force flow control, disable Ingress and Egress
+       /* Do not force flow control, disable Ingress and Egress
         * Header tagging, disable VLAN tunneling, and set the port
         * state to Forwarding.  Additionally, if this is the CPU
         * port, enable Ingress and Egress Trailer tagging mode.
         */
        REG_WRITE(addr, 0x04, dsa_is_cpu_port(ds, p) ?  0x4103 : 0x0003);
 
-       /*
-        * Port based VLAN map: give each port its own address
+       /* Port based VLAN map: give each port its own address
         * database, allow the CPU port to talk to each of the 'real'
         * ports, and allow each of the 'real' ports to only talk to
         * the CPU port.
@@ -144,8 +136,7 @@ static int mv88e6060_setup_port(struct dsa_switch *ds, int p)
                                ds->phys_port_mask :
                                (1 << ds->dst->cpu_port)));
 
-       /*
-        * Port Association Vector: when learning source addresses
+       /* Port Association Vector: when learning source addresses
         * of packets, add the address to the address database using
         * a port bitmap that has only the bit for this port set and
         * the other bits clear.
@@ -245,7 +236,7 @@ static void mv88e6060_poll_link(struct dsa_switch *ds)
 
                if (!link) {
                        if (netif_carrier_ok(dev)) {
-                               printk(KERN_INFO "%s: link down\n", dev->name);
+                               netdev_info(dev, "link down\n");
                                netif_carrier_off(dev);
                        }
                        continue;
@@ -256,10 +247,11 @@ static void mv88e6060_poll_link(struct dsa_switch *ds)
                fc = ((port_status & 0xc000) == 0xc000) ? 1 : 0;
 
                if (!netif_carrier_ok(dev)) {
-                       printk(KERN_INFO "%s: link up, %d Mb/s, %s duplex, "
-                                        "flow control %sabled\n", dev->name,
-                                        speed, duplex ? "full" : "half",
-                                        fc ? "en" : "dis");
+                       netdev_info(dev,
+                                   "link up, %d Mb/s, %s duplex, flow control %sabled\n",
+                                   speed,
+                                   duplex ? "full" : "half",
+                                   fc ? "en" : "dis");
                        netif_carrier_on(dev);
                }
        }