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