.. | .. |
---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0-or-later */ |
---|
1 | 2 | /* |
---|
2 | 3 | * Marvell 88E6xxx Switch Global 2 Registers support |
---|
3 | 4 | * |
---|
.. | .. |
---|
5 | 6 | * |
---|
6 | 7 | * Copyright (c) 2016-2017 Savoir-faire Linux Inc. |
---|
7 | 8 | * 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 | 9 | */ |
---|
14 | 10 | |
---|
15 | 11 | #ifndef _MV88E6XXX_GLOBAL2_H |
---|
.. | .. |
---|
117 | 113 | #define MV88E6XXX_G2_SWITCH_MAC_DATA_MASK 0x00ff |
---|
118 | 114 | |
---|
119 | 115 | /* Offset 0x0E: ATU Stats Register */ |
---|
120 | | -#define MV88E6XXX_G2_ATU_STATS 0x0e |
---|
| 116 | +#define MV88E6XXX_G2_ATU_STATS 0x0e |
---|
| 117 | +#define MV88E6XXX_G2_ATU_STATS_BIN_0 (0x0 << 14) |
---|
| 118 | +#define MV88E6XXX_G2_ATU_STATS_BIN_1 (0x1 << 14) |
---|
| 119 | +#define MV88E6XXX_G2_ATU_STATS_BIN_2 (0x2 << 14) |
---|
| 120 | +#define MV88E6XXX_G2_ATU_STATS_BIN_3 (0x3 << 14) |
---|
| 121 | +#define MV88E6XXX_G2_ATU_STATS_MODE_ALL (0x0 << 12) |
---|
| 122 | +#define MV88E6XXX_G2_ATU_STATS_MODE_ALL_DYNAMIC (0x1 << 12) |
---|
| 123 | +#define MV88E6XXX_G2_ATU_STATS_MODE_FID_ALL (0x2 << 12) |
---|
| 124 | +#define MV88E6XXX_G2_ATU_STATS_MODE_FID_ALL_DYNAMIC (0x3 << 12) |
---|
| 125 | +#define MV88E6XXX_G2_ATU_STATS_MASK 0x0fff |
---|
121 | 126 | |
---|
122 | 127 | /* Offset 0x0F: Priority Override Table */ |
---|
123 | 128 | #define MV88E6XXX_G2_PRIO_OVERRIDE 0x0f |
---|
.. | .. |
---|
206 | 211 | #define MV88E6XXX_G2_SCRATCH_MISC_DATA_MASK 0x00ff |
---|
207 | 212 | |
---|
208 | 213 | /* Offset 0x1B: Watch Dog Control Register */ |
---|
| 214 | +#define MV88E6250_G2_WDOG_CTL 0x1b |
---|
| 215 | +#define MV88E6250_G2_WDOG_CTL_QC_HISTORY 0x0100 |
---|
| 216 | +#define MV88E6250_G2_WDOG_CTL_QC_EVENT 0x0080 |
---|
| 217 | +#define MV88E6250_G2_WDOG_CTL_QC_ENABLE 0x0040 |
---|
| 218 | +#define MV88E6250_G2_WDOG_CTL_EGRESS_HISTORY 0x0020 |
---|
| 219 | +#define MV88E6250_G2_WDOG_CTL_EGRESS_EVENT 0x0010 |
---|
| 220 | +#define MV88E6250_G2_WDOG_CTL_EGRESS_ENABLE 0x0008 |
---|
| 221 | +#define MV88E6250_G2_WDOG_CTL_FORCE_IRQ 0x0004 |
---|
| 222 | +#define MV88E6250_G2_WDOG_CTL_HISTORY 0x0002 |
---|
| 223 | +#define MV88E6250_G2_WDOG_CTL_SWRESET 0x0001 |
---|
| 224 | + |
---|
| 225 | +/* Offset 0x1B: Watch Dog Control Register */ |
---|
209 | 226 | #define MV88E6352_G2_WDOG_CTL 0x1b |
---|
210 | 227 | #define MV88E6352_G2_WDOG_CTL_EGRESS_EVENT 0x0080 |
---|
211 | 228 | #define MV88E6352_G2_WDOG_CTL_RMU_TIMEOUT 0x0040 |
---|
.. | .. |
---|
287 | 304 | |
---|
288 | 305 | int mv88e6xxx_g2_read(struct mv88e6xxx_chip *chip, int reg, u16 *val); |
---|
289 | 306 | int mv88e6xxx_g2_write(struct mv88e6xxx_chip *chip, int reg, u16 val); |
---|
290 | | -int mv88e6xxx_g2_update(struct mv88e6xxx_chip *chip, int reg, u16 update); |
---|
291 | | -int mv88e6xxx_g2_wait(struct mv88e6xxx_chip *chip, int reg, u16 mask); |
---|
| 307 | +int mv88e6xxx_g2_wait_bit(struct mv88e6xxx_chip *chip, int reg, |
---|
| 308 | + int bit, int val); |
---|
292 | 309 | |
---|
293 | 310 | int mv88e6352_g2_irl_init_all(struct mv88e6xxx_chip *chip, int port); |
---|
294 | 311 | int mv88e6390_g2_irl_init_all(struct mv88e6xxx_chip *chip, int port); |
---|
.. | .. |
---|
332 | 349 | |
---|
333 | 350 | int mv88e6xxx_g2_device_mapping_write(struct mv88e6xxx_chip *chip, int target, |
---|
334 | 351 | int port); |
---|
| 352 | +int mv88e6xxx_g2_eeprom_wait(struct mv88e6xxx_chip *chip); |
---|
335 | 353 | |
---|
336 | 354 | extern const struct mv88e6xxx_irq_ops mv88e6097_watchdog_ops; |
---|
| 355 | +extern const struct mv88e6xxx_irq_ops mv88e6250_watchdog_ops; |
---|
337 | 356 | extern const struct mv88e6xxx_irq_ops mv88e6390_watchdog_ops; |
---|
338 | 357 | |
---|
339 | 358 | extern const struct mv88e6xxx_avb_ops mv88e6165_avb_ops; |
---|
.. | .. |
---|
344 | 363 | |
---|
345 | 364 | int mv88e6xxx_g2_scratch_gpio_set_smi(struct mv88e6xxx_chip *chip, |
---|
346 | 365 | bool external); |
---|
| 366 | +int mv88e6xxx_g2_atu_stats_set(struct mv88e6xxx_chip *chip, u16 kind, u16 bin); |
---|
| 367 | +int mv88e6xxx_g2_atu_stats_get(struct mv88e6xxx_chip *chip, u16 *stats); |
---|
347 | 368 | |
---|
348 | 369 | #else /* !CONFIG_NET_DSA_MV88E6XXX_GLOBAL2 */ |
---|
349 | 370 | |
---|
.. | .. |
---|
367 | 388 | return -EOPNOTSUPP; |
---|
368 | 389 | } |
---|
369 | 390 | |
---|
370 | | -static inline int mv88e6xxx_g2_update(struct mv88e6xxx_chip *chip, int reg, u16 update) |
---|
371 | | -{ |
---|
372 | | - return -EOPNOTSUPP; |
---|
373 | | -} |
---|
374 | | - |
---|
375 | | -static inline int mv88e6xxx_g2_wait(struct mv88e6xxx_chip *chip, int reg, u16 mask) |
---|
| 391 | +static inline int mv88e6xxx_g2_wait_bit(struct mv88e6xxx_chip *chip, |
---|
| 392 | + int reg, int bit, int val) |
---|
376 | 393 | { |
---|
377 | 394 | return -EOPNOTSUPP; |
---|
378 | 395 | } |
---|
.. | .. |
---|
484 | 501 | } |
---|
485 | 502 | |
---|
486 | 503 | static const struct mv88e6xxx_irq_ops mv88e6097_watchdog_ops = {}; |
---|
| 504 | +static const struct mv88e6xxx_irq_ops mv88e6250_watchdog_ops = {}; |
---|
487 | 505 | static const struct mv88e6xxx_irq_ops mv88e6390_watchdog_ops = {}; |
---|
488 | 506 | |
---|
489 | 507 | static const struct mv88e6xxx_avb_ops mv88e6165_avb_ops = {}; |
---|
.. | .. |
---|
509 | 527 | return -EOPNOTSUPP; |
---|
510 | 528 | } |
---|
511 | 529 | |
---|
| 530 | +static inline int mv88e6xxx_g2_atu_stats_set(struct mv88e6xxx_chip *chip, |
---|
| 531 | + u16 kind, u16 bin) |
---|
| 532 | +{ |
---|
| 533 | + return -EOPNOTSUPP; |
---|
| 534 | +} |
---|
| 535 | + |
---|
| 536 | +static inline int mv88e6xxx_g2_atu_stats_get(struct mv88e6xxx_chip *chip, |
---|
| 537 | + u16 *stats) |
---|
| 538 | +{ |
---|
| 539 | + return -EOPNOTSUPP; |
---|
| 540 | +} |
---|
| 541 | + |
---|
512 | 542 | #endif /* CONFIG_NET_DSA_MV88E6XXX_GLOBAL2 */ |
---|
513 | 543 | |
---|
514 | 544 | #endif /* _MV88E6XXX_GLOBAL2_H */ |
---|