blob: 9aefb7d8b0ad78dbec865593e0842b91ffc2062b [file] [log] [blame]
Vivien Didelotec561272016-09-02 14:45:33 -04001/*
2 * Marvell 88E6xxx Switch Global 2 Registers support (device address 0x1C)
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_GLOBAL2_H
15#define _MV88E6XXX_GLOBAL2_H
16
17#include "mv88e6xxx.h"
18
Vivien Didelotca070c12016-09-02 14:45:34 -040019#ifdef CONFIG_NET_DSA_MV88E6XXX_GLOBAL2
20
21static inline int mv88e6xxx_g2_require(struct mv88e6xxx_chip *chip)
22{
23 return 0;
24}
25
Vivien Didelotec561272016-09-02 14:45:33 -040026int mv88e6xxx_g2_smi_phy_read(struct mv88e6xxx_chip *chip, int addr, int reg,
27 u16 *val);
28int mv88e6xxx_g2_smi_phy_write(struct mv88e6xxx_chip *chip, int addr, int reg,
29 u16 val);
30int mv88e6xxx_g2_set_switch_mac(struct mv88e6xxx_chip *chip, u8 *addr);
31int mv88e6xxx_g2_get_eeprom16(struct mv88e6xxx_chip *chip,
32 struct ethtool_eeprom *eeprom, u8 *data);
33int mv88e6xxx_g2_set_eeprom16(struct mv88e6xxx_chip *chip,
34 struct ethtool_eeprom *eeprom, u8 *data);
35int mv88e6xxx_g2_setup(struct mv88e6xxx_chip *chip);
Andrew Lunndc30c352016-10-16 19:56:49 +020036int mv88e6xxx_g2_irq_setup(struct mv88e6xxx_chip *chip);
37void mv88e6xxx_g2_irq_free(struct mv88e6xxx_chip *chip);
Andrew Lunn6e55f692016-12-03 04:45:16 +010038int mv88e6095_g2_mgmt_rsvd2cpu(struct mv88e6xxx_chip *chip);
Vivien Didelotec561272016-09-02 14:45:33 -040039
Vivien Didelotca070c12016-09-02 14:45:34 -040040#else /* !CONFIG_NET_DSA_MV88E6XXX_GLOBAL2 */
41
42static inline int mv88e6xxx_g2_require(struct mv88e6xxx_chip *chip)
43{
44 if (mv88e6xxx_has(chip, MV88E6XXX_FLAG_GLOBAL2)) {
45 dev_err(chip->dev, "this chip requires CONFIG_NET_DSA_MV88E6XXX_GLOBAL2 enabled\n");
46 return -EOPNOTSUPP;
47 }
48
49 return 0;
50}
51
52static inline int mv88e6xxx_g2_smi_phy_read(struct mv88e6xxx_chip *chip,
53 int addr, int reg, u16 *val)
54{
55 return -EOPNOTSUPP;
56}
57
58static inline int mv88e6xxx_g2_smi_phy_write(struct mv88e6xxx_chip *chip,
59 int addr, int reg, u16 val)
60{
61 return -EOPNOTSUPP;
62}
63
64static inline int mv88e6xxx_g2_set_switch_mac(struct mv88e6xxx_chip *chip,
65 u8 *addr)
66{
67 return -EOPNOTSUPP;
68}
69
70static inline int mv88e6xxx_g2_get_eeprom16(struct mv88e6xxx_chip *chip,
71 struct ethtool_eeprom *eeprom,
72 u8 *data)
73{
74 return -EOPNOTSUPP;
75}
76
77static inline int mv88e6xxx_g2_set_eeprom16(struct mv88e6xxx_chip *chip,
78 struct ethtool_eeprom *eeprom,
79 u8 *data)
80{
81 return -EOPNOTSUPP;
82}
83
84static inline int mv88e6xxx_g2_setup(struct mv88e6xxx_chip *chip)
85{
86 return -EOPNOTSUPP;
87}
88
Andrew Lunndc30c352016-10-16 19:56:49 +020089static inline int mv88e6xxx_g2_irq_setup(struct mv88e6xxx_chip *chip)
90{
91 return -EOPNOTSUPP;
92}
93
94static inline void mv88e6xxx_g2_irq_free(struct mv88e6xxx_chip *chip)
95{
96}
97
Andrew Lunn6e55f692016-12-03 04:45:16 +010098static inline int mv88e6095_g2_mgmt_rsvd2cpu(struct mv88e6xxx_chip *chip)
99{
100 return -EOPNOTSUPP;
101}
102
Vivien Didelotca070c12016-09-02 14:45:34 -0400103#endif /* CONFIG_NET_DSA_MV88E6XXX_GLOBAL2 */
104
Vivien Didelotec561272016-09-02 14:45:33 -0400105#endif /* _MV88E6XXX_GLOBAL2_H */