hc
2024-09-20 cf4ce59b3b70238352c7f1729f0f7223214828ad
kernel/drivers/net/dsa/mv88e6xxx/global1.h
....@@ -1,3 +1,4 @@
1
+/* SPDX-License-Identifier: GPL-2.0-or-later */
12 /*
23 * Marvell 88E6xxx Switch Global (1) Registers support
34 *
....@@ -5,11 +6,6 @@
56 *
67 * Copyright (c) 2016-2017 Savoir-faire Linux Inc.
78 * 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.
139 */
1410
1511 #ifndef _MV88E6XXX_GLOBAL1_H
....@@ -113,6 +109,7 @@
113109 /* Offset 0x0A: ATU Control Register */
114110 #define MV88E6XXX_G1_ATU_CTL 0x0a
115111 #define MV88E6XXX_G1_ATU_CTL_LEARN2ALL 0x0008
112
+#define MV88E6161_G1_ATU_CTL_HASH_MASK 0x0003
116113
117114 /* Offset 0x0B: ATU Operation Register */
118115 #define MV88E6XXX_G1_ATU_OP 0x0b
....@@ -132,19 +129,36 @@
132129 #define MV88E6XXX_G1_ATU_OP_FULL_VIOLATION BIT(4)
133130
134131 /* Offset 0x0C: ATU Data Register */
135
-#define MV88E6XXX_G1_ATU_DATA 0x0c
136
-#define MV88E6XXX_G1_ATU_DATA_TRUNK 0x8000
137
-#define MV88E6XXX_G1_ATU_DATA_TRUNK_ID_MASK 0x00f0
138
-#define MV88E6XXX_G1_ATU_DATA_PORT_VECTOR_MASK 0x3ff0
139
-#define MV88E6XXX_G1_ATU_DATA_STATE_MASK 0x000f
140
-#define MV88E6XXX_G1_ATU_DATA_STATE_UNUSED 0x0000
141
-#define MV88E6XXX_G1_ATU_DATA_STATE_UC_MGMT 0x000d
142
-#define MV88E6XXX_G1_ATU_DATA_STATE_UC_STATIC 0x000e
143
-#define MV88E6XXX_G1_ATU_DATA_STATE_UC_PRIO_OVER 0x000f
144
-#define MV88E6XXX_G1_ATU_DATA_STATE_MC_NONE_RATE 0x0005
145
-#define MV88E6XXX_G1_ATU_DATA_STATE_MC_STATIC 0x0007
146
-#define MV88E6XXX_G1_ATU_DATA_STATE_MC_MGMT 0x000e
147
-#define MV88E6XXX_G1_ATU_DATA_STATE_MC_PRIO_OVER 0x000f
132
+#define MV88E6XXX_G1_ATU_DATA 0x0c
133
+#define MV88E6XXX_G1_ATU_DATA_TRUNK 0x8000
134
+#define MV88E6XXX_G1_ATU_DATA_TRUNK_ID_MASK 0x00f0
135
+#define MV88E6XXX_G1_ATU_DATA_PORT_VECTOR_MASK 0x3ff0
136
+#define MV88E6XXX_G1_ATU_DATA_STATE_MASK 0x000f
137
+#define MV88E6XXX_G1_ATU_DATA_STATE_UC_UNUSED 0x0000
138
+#define MV88E6XXX_G1_ATU_DATA_STATE_UC_AGE_1_OLDEST 0x0001
139
+#define MV88E6XXX_G1_ATU_DATA_STATE_UC_AGE_2 0x0002
140
+#define MV88E6XXX_G1_ATU_DATA_STATE_UC_AGE_3 0x0003
141
+#define MV88E6XXX_G1_ATU_DATA_STATE_UC_AGE_4 0x0004
142
+#define MV88E6XXX_G1_ATU_DATA_STATE_UC_AGE_5 0x0005
143
+#define MV88E6XXX_G1_ATU_DATA_STATE_UC_AGE_6 0x0006
144
+#define MV88E6XXX_G1_ATU_DATA_STATE_UC_AGE_7_NEWEST 0x0007
145
+#define MV88E6XXX_G1_ATU_DATA_STATE_UC_STATIC_POLICY 0x0008
146
+#define MV88E6XXX_G1_ATU_DATA_STATE_UC_STATIC_POLICY_PO 0x0009
147
+#define MV88E6XXX_G1_ATU_DATA_STATE_UC_STATIC_AVB_NRL 0x000a
148
+#define MV88E6XXX_G1_ATU_DATA_STATE_UC_STATIC_AVB_NRL_PO 0x000b
149
+#define MV88E6XXX_G1_ATU_DATA_STATE_UC_STATIC_DA_MGMT 0x000c
150
+#define MV88E6XXX_G1_ATU_DATA_STATE_UC_STATIC_DA_MGMT_PO 0x000d
151
+#define MV88E6XXX_G1_ATU_DATA_STATE_UC_STATIC 0x000e
152
+#define MV88E6XXX_G1_ATU_DATA_STATE_UC_STATIC_PO 0x000f
153
+#define MV88E6XXX_G1_ATU_DATA_STATE_MC_UNUSED 0x0000
154
+#define MV88E6XXX_G1_ATU_DATA_STATE_MC_STATIC_POLICY 0x0004
155
+#define MV88E6XXX_G1_ATU_DATA_STATE_MC_STATIC_AVB_NRL 0x0005
156
+#define MV88E6XXX_G1_ATU_DATA_STATE_MC_STATIC_DA_MGMT 0x0006
157
+#define MV88E6XXX_G1_ATU_DATA_STATE_MC_STATIC 0x0007
158
+#define MV88E6XXX_G1_ATU_DATA_STATE_MC_STATIC_POLICY_PO 0x000c
159
+#define MV88E6XXX_G1_ATU_DATA_STATE_MC_STATIC_AVB_NRL_PO 0x000d
160
+#define MV88E6XXX_G1_ATU_DATA_STATE_MC_STATIC_DA_MGMT_PO 0x000e
161
+#define MV88E6XXX_G1_ATU_DATA_STATE_MC_STATIC_PO 0x000f
148162
149163 /* Offset 0x0D: ATU MAC Address Register Bytes 0 & 1
150164 * Offset 0x0E: ATU MAC Address Register Bytes 2 & 3
....@@ -190,10 +204,10 @@
190204 #define MV88E6390_G1_MONITOR_MGMT_CTL 0x1a
191205 #define MV88E6390_G1_MONITOR_MGMT_CTL_UPDATE 0x8000
192206 #define MV88E6390_G1_MONITOR_MGMT_CTL_PTR_MASK 0x3f00
193
-#define MV88E6390_G1_MONITOR_MGMT_CTL_PTR_0180C280000000XLO 0x0000
194
-#define MV88E6390_G1_MONITOR_MGMT_CTL_PTR_0180C280000000XHI 0x0100
195
-#define MV88E6390_G1_MONITOR_MGMT_CTL_PTR_0180C280000002XLO 0x0200
196
-#define MV88E6390_G1_MONITOR_MGMT_CTL_PTR_0180C280000002XHI 0x0300
207
+#define MV88E6390_G1_MONITOR_MGMT_CTL_PTR_0180C200000XLO 0x0000
208
+#define MV88E6390_G1_MONITOR_MGMT_CTL_PTR_0180C200000XHI 0x0100
209
+#define MV88E6390_G1_MONITOR_MGMT_CTL_PTR_0180C200002XLO 0x0200
210
+#define MV88E6390_G1_MONITOR_MGMT_CTL_PTR_0180C200002XHI 0x0300
197211 #define MV88E6390_G1_MONITOR_MGMT_CTL_PTR_INGRESS_DEST 0x2000
198212 #define MV88E6390_G1_MONITOR_MGMT_CTL_PTR_EGRESS_DEST 0x2100
199213 #define MV88E6390_G1_MONITOR_MGMT_CTL_PTR_CPU_DEST 0x3000
....@@ -254,17 +268,22 @@
254268
255269 int mv88e6xxx_g1_read(struct mv88e6xxx_chip *chip, int reg, u16 *val);
256270 int mv88e6xxx_g1_write(struct mv88e6xxx_chip *chip, int reg, u16 val);
257
-int mv88e6xxx_g1_wait(struct mv88e6xxx_chip *chip, int reg, u16 mask);
271
+int mv88e6xxx_g1_wait_bit(struct mv88e6xxx_chip *chip, int reg, int
272
+ bit, int val);
273
+int mv88e6xxx_g1_wait_mask(struct mv88e6xxx_chip *chip, int reg,
274
+ u16 mask, u16 val);
258275
259276 int mv88e6xxx_g1_set_switch_mac(struct mv88e6xxx_chip *chip, u8 *addr);
260277
261278 int mv88e6185_g1_reset(struct mv88e6xxx_chip *chip);
262279 int mv88e6352_g1_reset(struct mv88e6xxx_chip *chip);
280
+int mv88e6250_g1_reset(struct mv88e6xxx_chip *chip);
263281
264282 int mv88e6185_g1_ppu_enable(struct mv88e6xxx_chip *chip);
265283 int mv88e6185_g1_ppu_disable(struct mv88e6xxx_chip *chip);
266284
267
-int mv88e6xxx_g1_stats_wait(struct mv88e6xxx_chip *chip);
285
+int mv88e6185_g1_set_max_frame_size(struct mv88e6xxx_chip *chip, int mtu);
286
+
268287 int mv88e6xxx_g1_stats_snapshot(struct mv88e6xxx_chip *chip, int port);
269288 int mv88e6320_g1_stats_snapshot(struct mv88e6xxx_chip *chip, int port);
270289 int mv88e6390_g1_stats_snapshot(struct mv88e6xxx_chip *chip, int port);
....@@ -272,14 +291,20 @@
272291 int mv88e6390_g1_stats_set_histogram(struct mv88e6xxx_chip *chip);
273292 void mv88e6xxx_g1_stats_read(struct mv88e6xxx_chip *chip, int stat, u32 *val);
274293 int mv88e6xxx_g1_stats_clear(struct mv88e6xxx_chip *chip);
275
-int mv88e6095_g1_set_egress_port(struct mv88e6xxx_chip *chip, int port);
276
-int mv88e6390_g1_set_egress_port(struct mv88e6xxx_chip *chip, int port);
294
+int mv88e6095_g1_set_egress_port(struct mv88e6xxx_chip *chip,
295
+ enum mv88e6xxx_egress_direction direction,
296
+ int port);
297
+int mv88e6390_g1_set_egress_port(struct mv88e6xxx_chip *chip,
298
+ enum mv88e6xxx_egress_direction direction,
299
+ int port);
277300 int mv88e6095_g1_set_cpu_port(struct mv88e6xxx_chip *chip, int port);
278301 int mv88e6390_g1_set_cpu_port(struct mv88e6xxx_chip *chip, int port);
279302 int mv88e6390_g1_mgmt_rsvd2cpu(struct mv88e6xxx_chip *chip);
280303
281304 int mv88e6085_g1_ip_pri_map(struct mv88e6xxx_chip *chip);
305
+
282306 int mv88e6085_g1_ieee_pri_map(struct mv88e6xxx_chip *chip);
307
+int mv88e6250_g1_ieee_pri_map(struct mv88e6xxx_chip *chip);
283308
284309 int mv88e6185_g1_set_cascade_port(struct mv88e6xxx_chip *chip, int port);
285310
....@@ -301,10 +326,16 @@
301326 bool all);
302327 int mv88e6xxx_g1_atu_prob_irq_setup(struct mv88e6xxx_chip *chip);
303328 void mv88e6xxx_g1_atu_prob_irq_free(struct mv88e6xxx_chip *chip);
329
+int mv88e6165_g1_atu_get_hash(struct mv88e6xxx_chip *chip, u8 *hash);
330
+int mv88e6165_g1_atu_set_hash(struct mv88e6xxx_chip *chip, u8 hash);
304331
305332 int mv88e6185_g1_vtu_getnext(struct mv88e6xxx_chip *chip,
306333 struct mv88e6xxx_vtu_entry *entry);
307334 int mv88e6185_g1_vtu_loadpurge(struct mv88e6xxx_chip *chip,
335
+ struct mv88e6xxx_vtu_entry *entry);
336
+int mv88e6250_g1_vtu_getnext(struct mv88e6xxx_chip *chip,
337
+ struct mv88e6xxx_vtu_entry *entry);
338
+int mv88e6250_g1_vtu_loadpurge(struct mv88e6xxx_chip *chip,
308339 struct mv88e6xxx_vtu_entry *entry);
309340 int mv88e6352_g1_vtu_getnext(struct mv88e6xxx_chip *chip,
310341 struct mv88e6xxx_vtu_entry *entry);
....@@ -317,5 +348,6 @@
317348 int mv88e6xxx_g1_vtu_flush(struct mv88e6xxx_chip *chip);
318349 int mv88e6xxx_g1_vtu_prob_irq_setup(struct mv88e6xxx_chip *chip);
319350 void mv88e6xxx_g1_vtu_prob_irq_free(struct mv88e6xxx_chip *chip);
351
+int mv88e6xxx_g1_atu_get_next(struct mv88e6xxx_chip *chip, u16 fid);
320352
321353 #endif /* _MV88E6XXX_GLOBAL1_H */