xref: /linux/drivers/net/dsa/mv88e6xxx/port.h (revision e5c86679d5e864947a52fb31e45a425dea3e7fa9)
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