chip.c (7b314362a2344feaafbdf6aa8f3d57077728e37a) | chip.c (2bbb33be037361882527c9c762cb9fc928ab0ff7) |
---|---|
1/* 2 * Marvell 88e6xxx Ethernet switch single-chip support 3 * 4 * Copyright (c) 2008 Marvell Semiconductor 5 * 6 * Copyright (c) 2015 CMC Electronics, Inc. 7 * Added support for VLAN Table Unit operations 8 * --- 2469 unchanged lines hidden (view full) --- 2478 if (mv88e6xxx_6352_family(chip) || mv88e6xxx_6351_family(chip) || 2479 mv88e6xxx_6165_family(chip) || mv88e6xxx_6097_family(chip) || 2480 mv88e6xxx_6095_family(chip) || mv88e6xxx_6065_family(chip) || 2481 mv88e6xxx_6185_family(chip) || mv88e6xxx_6320_family(chip)) 2482 reg = PORT_CONTROL_IGMP_MLD_SNOOP | 2483 PORT_CONTROL_USE_TAG | PORT_CONTROL_USE_IP | 2484 PORT_CONTROL_STATE_FORWARDING; 2485 if (dsa_is_cpu_port(ds, port)) { | 1/* 2 * Marvell 88e6xxx Ethernet switch single-chip support 3 * 4 * Copyright (c) 2008 Marvell Semiconductor 5 * 6 * Copyright (c) 2015 CMC Electronics, Inc. 7 * Added support for VLAN Table Unit operations 8 * --- 2469 unchanged lines hidden (view full) --- 2478 if (mv88e6xxx_6352_family(chip) || mv88e6xxx_6351_family(chip) || 2479 mv88e6xxx_6165_family(chip) || mv88e6xxx_6097_family(chip) || 2480 mv88e6xxx_6095_family(chip) || mv88e6xxx_6065_family(chip) || 2481 mv88e6xxx_6185_family(chip) || mv88e6xxx_6320_family(chip)) 2482 reg = PORT_CONTROL_IGMP_MLD_SNOOP | 2483 PORT_CONTROL_USE_TAG | PORT_CONTROL_USE_IP | 2484 PORT_CONTROL_STATE_FORWARDING; 2485 if (dsa_is_cpu_port(ds, port)) { |
2486 if (mv88e6xxx_6095_family(chip) || mv88e6xxx_6185_family(chip)) 2487 reg |= PORT_CONTROL_DSA_TAG; 2488 if (mv88e6xxx_6352_family(chip) || 2489 mv88e6xxx_6351_family(chip) || 2490 mv88e6xxx_6165_family(chip) || 2491 mv88e6xxx_6097_family(chip) || 2492 mv88e6xxx_6320_family(chip)) { | 2486 if (mv88e6xxx_has(chip, MV88E6XXX_FLAG_EDSA)) |
2493 reg |= PORT_CONTROL_FRAME_ETHER_TYPE_DSA | 2494 PORT_CONTROL_FORWARD_UNKNOWN | 2495 PORT_CONTROL_FORWARD_UNKNOWN_MC; | 2487 reg |= PORT_CONTROL_FRAME_ETHER_TYPE_DSA | 2488 PORT_CONTROL_FORWARD_UNKNOWN | 2489 PORT_CONTROL_FORWARD_UNKNOWN_MC; |
2496 } 2497 2498 if (mv88e6xxx_6352_family(chip) || 2499 mv88e6xxx_6351_family(chip) || 2500 mv88e6xxx_6165_family(chip) || 2501 mv88e6xxx_6097_family(chip) || 2502 mv88e6xxx_6095_family(chip) || 2503 mv88e6xxx_6065_family(chip) || 2504 mv88e6xxx_6185_family(chip) || 2505 mv88e6xxx_6320_family(chip)) { 2506 reg |= PORT_CONTROL_EGRESS_ADD_TAG; 2507 } | 2490 else 2491 reg |= PORT_CONTROL_DSA_TAG; 2492 reg |= PORT_CONTROL_EGRESS_ADD_TAG; |
2508 } 2509 if (dsa_is_dsa_port(ds, port)) { 2510 if (mv88e6xxx_6095_family(chip) || 2511 mv88e6xxx_6185_family(chip)) 2512 reg |= PORT_CONTROL_DSA_TAG; 2513 if (mv88e6xxx_6352_family(chip) || 2514 mv88e6xxx_6351_family(chip) || 2515 mv88e6xxx_6165_family(chip) || --- 111 unchanged lines hidden (view full) --- 2627 ret = _mv88e6xxx_reg_write(chip, REG_PORT(port), 2628 PORT_PRI_OVERRIDE, 0x0000); 2629 if (ret) 2630 return ret; 2631 2632 /* Port Ethertype: use the Ethertype DSA Ethertype 2633 * value. 2634 */ | 2493 } 2494 if (dsa_is_dsa_port(ds, port)) { 2495 if (mv88e6xxx_6095_family(chip) || 2496 mv88e6xxx_6185_family(chip)) 2497 reg |= PORT_CONTROL_DSA_TAG; 2498 if (mv88e6xxx_6352_family(chip) || 2499 mv88e6xxx_6351_family(chip) || 2500 mv88e6xxx_6165_family(chip) || --- 111 unchanged lines hidden (view full) --- 2612 ret = _mv88e6xxx_reg_write(chip, REG_PORT(port), 2613 PORT_PRI_OVERRIDE, 0x0000); 2614 if (ret) 2615 return ret; 2616 2617 /* Port Ethertype: use the Ethertype DSA Ethertype 2618 * value. 2619 */ |
2635 ret = _mv88e6xxx_reg_write(chip, REG_PORT(port), 2636 PORT_ETH_TYPE, ETH_P_EDSA); 2637 if (ret) 2638 return ret; | 2620 if (mv88e6xxx_has(chip, MV88E6XXX_FLAG_EDSA)) { 2621 ret = _mv88e6xxx_reg_write(chip, REG_PORT(port), 2622 PORT_ETH_TYPE, ETH_P_EDSA); 2623 if (ret) 2624 return ret; 2625 } 2626 |
2639 /* Tag Remap: use an identity 802.1p prio -> switch 2640 * prio mapping. 2641 */ 2642 ret = _mv88e6xxx_reg_write(chip, REG_PORT(port), 2643 PORT_TAG_REGMAP_0123, 0x3210); 2644 if (ret) 2645 return ret; 2646 --- 1274 unchanged lines hidden (view full) --- 3921 chip->bus = bus; 3922 chip->sw_addr = sw_addr; 3923 3924 return 0; 3925} 3926 3927static enum dsa_tag_protocol mv88e6xxx_get_tag_protocol(struct dsa_switch *ds) 3928{ | 2627 /* Tag Remap: use an identity 802.1p prio -> switch 2628 * prio mapping. 2629 */ 2630 ret = _mv88e6xxx_reg_write(chip, REG_PORT(port), 2631 PORT_TAG_REGMAP_0123, 0x3210); 2632 if (ret) 2633 return ret; 2634 --- 1274 unchanged lines hidden (view full) --- 3909 chip->bus = bus; 3910 chip->sw_addr = sw_addr; 3911 3912 return 0; 3913} 3914 3915static enum dsa_tag_protocol mv88e6xxx_get_tag_protocol(struct dsa_switch *ds) 3916{ |
3929 return DSA_TAG_PROTO_EDSA; | 3917 struct mv88e6xxx_chip *chip = ds_to_priv(ds); 3918 3919 if (mv88e6xxx_has(chip, MV88E6XXX_FLAG_EDSA)) 3920 return DSA_TAG_PROTO_EDSA; 3921 3922 return DSA_TAG_PROTO_DSA; |
3930} 3931 3932static const char *mv88e6xxx_drv_probe(struct device *dsa_dev, 3933 struct device *host_dev, int sw_addr, 3934 void **priv) 3935{ 3936 struct mv88e6xxx_chip *chip; 3937 struct mii_bus *bus; --- 192 unchanged lines hidden --- | 3923} 3924 3925static const char *mv88e6xxx_drv_probe(struct device *dsa_dev, 3926 struct device *host_dev, int sw_addr, 3927 void **priv) 3928{ 3929 struct mv88e6xxx_chip *chip; 3930 struct mii_bus *bus; --- 192 unchanged lines hidden --- |