1 /* 2 * Marvell 88E6xxx Switch Port Registers support 3 * 4 * Copyright (c) 2008 Marvell Semiconductor 5 * 6 * Copyright (c) 2016-2017 Savoir-faire Linux Inc. 7 * Vivien Didelot <vivien.didelot@savoirfairelinux.com> 8 * 9 * This program is free software; you can redistribute it and/or modify 10 * it under the terms of the GNU General Public License as published by 11 * the Free Software Foundation; either version 2 of the License, or 12 * (at your option) any later version. 13 */ 14 15 #ifndef _MV88E6XXX_PORT_H 16 #define _MV88E6XXX_PORT_H 17 18 #include "mv88e6xxx.h" 19 20 int mv88e6xxx_port_read(struct mv88e6xxx_chip *chip, int port, int reg, 21 u16 *val); 22 int mv88e6xxx_port_write(struct mv88e6xxx_chip *chip, int port, int reg, 23 u16 val); 24 25 int mv88e6352_port_set_rgmii_delay(struct mv88e6xxx_chip *chip, int port, 26 phy_interface_t mode); 27 int mv88e6390_port_set_rgmii_delay(struct mv88e6xxx_chip *chip, int port, 28 phy_interface_t mode); 29 30 int mv88e6xxx_port_set_link(struct mv88e6xxx_chip *chip, int port, int link); 31 32 int mv88e6xxx_port_set_duplex(struct mv88e6xxx_chip *chip, int port, int dup); 33 34 int mv88e6065_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed); 35 int mv88e6185_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed); 36 int mv88e6352_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed); 37 int mv88e6390_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed); 38 int mv88e6390x_port_set_speed(struct mv88e6xxx_chip *chip, int port, int speed); 39 40 int mv88e6xxx_port_set_state(struct mv88e6xxx_chip *chip, int port, u8 state); 41 42 int mv88e6xxx_port_set_vlan_map(struct mv88e6xxx_chip *chip, int port, u16 map); 43 44 int mv88e6xxx_port_get_fid(struct mv88e6xxx_chip *chip, int port, u16 *fid); 45 int mv88e6xxx_port_set_fid(struct mv88e6xxx_chip *chip, int port, u16 fid); 46 47 int mv88e6xxx_port_get_pvid(struct mv88e6xxx_chip *chip, int port, u16 *pvid); 48 int mv88e6xxx_port_set_pvid(struct mv88e6xxx_chip *chip, int port, u16 pvid); 49 50 int mv88e6xxx_port_set_8021q_mode(struct mv88e6xxx_chip *chip, int port, 51 u16 mode); 52 int mv88e6095_port_tag_remap(struct mv88e6xxx_chip *chip, int port); 53 int mv88e6390_port_tag_remap(struct mv88e6xxx_chip *chip, int port); 54 int mv88e6xxx_port_set_egress_mode(struct mv88e6xxx_chip *chip, int port, 55 u16 mode); 56 int mv88e6085_port_set_frame_mode(struct mv88e6xxx_chip *chip, int port, 57 enum mv88e6xxx_frame_mode mode); 58 int mv88e6351_port_set_frame_mode(struct mv88e6xxx_chip *chip, int port, 59 enum mv88e6xxx_frame_mode mode); 60 int mv88e6185_port_set_egress_floods(struct mv88e6xxx_chip *chip, int port, 61 bool unicast, bool multicast); 62 int mv88e6352_port_set_egress_floods(struct mv88e6xxx_chip *chip, int port, 63 bool unicast, bool multicast); 64 int mv88e6351_port_set_ether_type(struct mv88e6xxx_chip *chip, int port, 65 u16 etype); 66 int mv88e6xxx_port_set_message_port(struct mv88e6xxx_chip *chip, int port, 67 bool message_port); 68 int mv88e6165_port_jumbo_config(struct mv88e6xxx_chip *chip, int port); 69 int mv88e6095_port_egress_rate_limiting(struct mv88e6xxx_chip *chip, int port); 70 int mv88e6097_port_egress_rate_limiting(struct mv88e6xxx_chip *chip, int port); 71 int mv88e6097_port_pause_config(struct mv88e6xxx_chip *chip, int port); 72 int mv88e6390_port_pause_config(struct mv88e6xxx_chip *chip, int port); 73 int mv88e6390x_port_set_cmode(struct mv88e6xxx_chip *chip, int port, 74 phy_interface_t mode); 75 int mv88e6xxx_port_get_cmode(struct mv88e6xxx_chip *chip, int port, u8 *cmode); 76 int mv88e6xxx_port_set_map_da(struct mv88e6xxx_chip *chip, int port); 77 int mv88e6095_port_set_upstream_port(struct mv88e6xxx_chip *chip, int port, 78 int upstream_port); 79 80 int mv88e6xxx_port_disable_learn_limit(struct mv88e6xxx_chip *chip, int port); 81 int mv88e6xxx_port_disable_pri_override(struct mv88e6xxx_chip *chip, int port); 82 83 #endif /* _MV88E6XXX_PORT_H */ 84