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