mvsw61xx: use standard swconfig get_port_link
authorFelix Fietkau <nbd@openwrt.org>
Fri, 11 Sep 2015 16:34:35 +0000 (16:34 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Fri, 11 Sep 2015 16:34:35 +0000 (16:34 +0000)
The previous "link" and "status" functions were non-standard,
and thus less useful for parsing.

Signed-off-by: Claudio Leite <leitec@staticky.com>
SVN-Revision: 46864

target/linux/generic/files/drivers/net/phy/mvsw61xx.c

index 9417fd4133426e98b33e67a02f11d65efd1efc62..07b4343bcdba0d0afb598fac80c98ad23d779a64 100644 (file)
@@ -219,73 +219,32 @@ mvsw61xx_set_pvid(struct switch_dev *dev, int port, int val)
 }
 
 static int
-mvsw61xx_get_port_status(struct switch_dev *dev,
-               const struct switch_attr *attr, struct switch_val *val)
+mvsw61xx_get_port_link(struct switch_dev *dev, int port,
+               struct switch_port_link *link)
 {
-       struct mvsw61xx_state *state = get_state(dev);
-       char *buf = state->buf;
        u16 status, speed;
-       int len;
-
-       status = sr16(dev, MV_PORTREG(STATUS, val->port_vlan));
-       speed = (status & MV_PORT_STATUS_SPEED_MASK) >>
-                       MV_PORT_STATUS_SPEED_SHIFT;
-
-       len = sprintf(buf, "link: ");
-       if (status & MV_PORT_STATUS_LINK) {
-               len += sprintf(buf + len, "up, speed: ");
-
-               switch (speed) {
-               case MV_PORT_STATUS_SPEED_10:
-                       len += sprintf(buf + len, "10");
-                       break;
-               case MV_PORT_STATUS_SPEED_100:
-                       len += sprintf(buf + len, "100");
-                       break;
-               case MV_PORT_STATUS_SPEED_1000:
-                       len += sprintf(buf + len, "1000");
-                       break;
-               }
 
-               len += sprintf(buf + len, " Mbps, duplex: ");
+       status = sr16(dev, MV_PORTREG(STATUS, port));
 
-               if (status & MV_PORT_STATUS_FDX)
-                       len += sprintf(buf + len, "full");
-               else
-                       len += sprintf(buf + len, "half");
-       } else {
-               len += sprintf(buf + len, "down");
-       }
-
-       val->value.s = buf;
-
-       return 0;
-}
+       link->link = status & MV_PORT_STATUS_LINK;
+       if (!link->link)
+               return 0;
 
-static int
-mvsw61xx_get_port_speed(struct switch_dev *dev,
-               const struct switch_attr *attr, struct switch_val *val)
-{
-       u16 status, speed;
+       link->duplex = status & MV_PORT_STATUS_FDX;
 
-       status = sr16(dev, MV_PORTREG(STATUS, val->port_vlan));
        speed = (status & MV_PORT_STATUS_SPEED_MASK) >>
                        MV_PORT_STATUS_SPEED_SHIFT;
 
-       val->value.i = 0;
-
-       if (status & MV_PORT_STATUS_LINK) {
-               switch (speed) {
-               case MV_PORT_STATUS_SPEED_10:
-                       val->value.i = 10;
-                       break;
-               case MV_PORT_STATUS_SPEED_100:
-                       val->value.i = 100;
-                       break;
-               case MV_PORT_STATUS_SPEED_1000:
-                       val->value.i = 1000;
-                       break;
-               }
+       switch (speed) {
+       case MV_PORT_STATUS_SPEED_10:
+               link->speed = SWITCH_PORT_SPEED_10;
+               break;
+       case MV_PORT_STATUS_SPEED_100:
+               link->speed = SWITCH_PORT_SPEED_100;
+               break;
+       case MV_PORT_STATUS_SPEED_1000:
+               link->speed = SWITCH_PORT_SPEED_1000;
+               break;
        }
 
        return 0;
@@ -676,8 +635,6 @@ enum {
 enum {
        MVSW61XX_PORT_MASK,
        MVSW61XX_PORT_QMODE,
-       MVSW61XX_PORT_STATUS,
-       MVSW61XX_PORT_LINK,
 };
 
 static const struct switch_attr mvsw61xx_global[] = {
@@ -727,22 +684,6 @@ static const struct switch_attr mvsw61xx_port[] = {
                .get = mvsw61xx_get_port_qmode,
                .set = mvsw61xx_set_port_qmode,
        },
-       [MVSW61XX_PORT_STATUS] = {
-               .id = MVSW61XX_PORT_STATUS,
-               .type = SWITCH_TYPE_STRING,
-               .description = "Return port status",
-               .name = "status",
-               .get = mvsw61xx_get_port_status,
-               .set = NULL,
-       },
-       [MVSW61XX_PORT_LINK] = {
-               .id = MVSW61XX_PORT_LINK,
-               .type = SWITCH_TYPE_INT,
-               .description = "Get link speed",
-               .name = "link",
-               .get = mvsw61xx_get_port_speed,
-               .set = NULL,
-       },
 };
 
 static const struct switch_dev_ops mvsw61xx_ops = {
@@ -758,6 +699,7 @@ static const struct switch_dev_ops mvsw61xx_ops = {
                .attr = mvsw61xx_port,
                .n_attr = ARRAY_SIZE(mvsw61xx_port),
        },
+       .get_port_link = mvsw61xx_get_port_link,
        .get_port_pvid = mvsw61xx_get_pvid,
        .set_port_pvid = mvsw61xx_set_pvid,
        .get_vlan_ports = mvsw61xx_get_vlan_ports,