RT305X_ESW_SGC2_LAN_PMAP_M << RT305X_ESW_SGC2_LAN_PMAP_S,
port_map << RT305X_ESW_SGC2_LAN_PMAP_S);
+ /* make the switch leds blink */
+ for (i = 0; i < RT305X_ESW_NUM_LEDS; i++)
+ esw->ports[i].led = 0x05;
+
/* Apply the empty config. */
rt305x_esw_apply_config(&esw->swdev);
}
untag |= esw->ports[i].untag << i;
pvid = esw->ports[i].pvid;
} else {
- int x = esw->alt_vlan_disable ? 1 : 0;
+ int x = esw->alt_vlan_disable ? 0 : 1;
doubletag |= x << i;
en_vlan |= x << i;
untag |= x << i;
struct rt305x_esw *esw = container_of(dev, struct rt305x_esw, swdev);
int idx = val->port_vlan;
int shift = attr->id == RT305X_ESW_ATTR_PORT_RECV_GOOD ? 0 : 16;
+ u32 reg;
if (idx < 0 || idx >= RT305X_ESW_NUM_LANWAN)
return -EINVAL;
- val->value.i = rt305x_esw_rr(esw, RT305X_ESW_REG_P0PC + 4*idx) >> shift;
+ reg = rt305x_esw_rr(esw, RT305X_ESW_REG_P0PC + 4*idx);
+ val->value.i = (reg >> shift) & 0xffff;
return 0;
}