1ec561276SVivien Didelot /* 2ec561276SVivien Didelot * Marvell 88E6xxx Switch Global 2 Registers support (device address 0x1C) 3ec561276SVivien Didelot * 4ec561276SVivien Didelot * Copyright (c) 2008 Marvell Semiconductor 5ec561276SVivien Didelot * 6ec561276SVivien Didelot * Copyright (c) 2016 Vivien Didelot <vivien.didelot@savoirfairelinux.com> 7ec561276SVivien Didelot * 8ec561276SVivien Didelot * This program is free software; you can redistribute it and/or modify 9ec561276SVivien Didelot * it under the terms of the GNU General Public License as published by 10ec561276SVivien Didelot * the Free Software Foundation; either version 2 of the License, or 11ec561276SVivien Didelot * (at your option) any later version. 12ec561276SVivien Didelot */ 13ec561276SVivien Didelot 14ec561276SVivien Didelot #ifndef _MV88E6XXX_GLOBAL2_H 15ec561276SVivien Didelot #define _MV88E6XXX_GLOBAL2_H 16ec561276SVivien Didelot 17ec561276SVivien Didelot #include "mv88e6xxx.h" 18ec561276SVivien Didelot 19ca070c10SVivien Didelot #ifdef CONFIG_NET_DSA_MV88E6XXX_GLOBAL2 20ca070c10SVivien Didelot 21ca070c10SVivien Didelot static inline int mv88e6xxx_g2_require(struct mv88e6xxx_chip *chip) 22ca070c10SVivien Didelot { 23ca070c10SVivien Didelot return 0; 24ca070c10SVivien Didelot } 25ca070c10SVivien Didelot 26ec561276SVivien Didelot int mv88e6xxx_g2_smi_phy_read(struct mv88e6xxx_chip *chip, int addr, int reg, 27ec561276SVivien Didelot u16 *val); 28ec561276SVivien Didelot int mv88e6xxx_g2_smi_phy_write(struct mv88e6xxx_chip *chip, int addr, int reg, 29ec561276SVivien Didelot u16 val); 30ec561276SVivien Didelot int mv88e6xxx_g2_set_switch_mac(struct mv88e6xxx_chip *chip, u8 *addr); 3198fc3c6fSVivien Didelot 3298fc3c6fSVivien Didelot int mv88e6xxx_g2_get_eeprom8(struct mv88e6xxx_chip *chip, 3398fc3c6fSVivien Didelot struct ethtool_eeprom *eeprom, u8 *data); 3498fc3c6fSVivien Didelot int mv88e6xxx_g2_set_eeprom8(struct mv88e6xxx_chip *chip, 3598fc3c6fSVivien Didelot struct ethtool_eeprom *eeprom, u8 *data); 3698fc3c6fSVivien Didelot 37ec561276SVivien Didelot int mv88e6xxx_g2_get_eeprom16(struct mv88e6xxx_chip *chip, 38ec561276SVivien Didelot struct ethtool_eeprom *eeprom, u8 *data); 39ec561276SVivien Didelot int mv88e6xxx_g2_set_eeprom16(struct mv88e6xxx_chip *chip, 40ec561276SVivien Didelot struct ethtool_eeprom *eeprom, u8 *data); 4198fc3c6fSVivien Didelot 42ec561276SVivien Didelot int mv88e6xxx_g2_setup(struct mv88e6xxx_chip *chip); 43dc30c35bSAndrew Lunn int mv88e6xxx_g2_irq_setup(struct mv88e6xxx_chip *chip); 44dc30c35bSAndrew Lunn void mv88e6xxx_g2_irq_free(struct mv88e6xxx_chip *chip); 456e55f698SAndrew Lunn int mv88e6095_g2_mgmt_rsvd2cpu(struct mv88e6xxx_chip *chip); 46ec561276SVivien Didelot 47ca070c10SVivien Didelot #else /* !CONFIG_NET_DSA_MV88E6XXX_GLOBAL2 */ 48ca070c10SVivien Didelot 49ca070c10SVivien Didelot static inline int mv88e6xxx_g2_require(struct mv88e6xxx_chip *chip) 50ca070c10SVivien Didelot { 51ca070c10SVivien Didelot if (mv88e6xxx_has(chip, MV88E6XXX_FLAG_GLOBAL2)) { 52ca070c10SVivien Didelot dev_err(chip->dev, "this chip requires CONFIG_NET_DSA_MV88E6XXX_GLOBAL2 enabled\n"); 53ca070c10SVivien Didelot return -EOPNOTSUPP; 54ca070c10SVivien Didelot } 55ca070c10SVivien Didelot 56ca070c10SVivien Didelot return 0; 57ca070c10SVivien Didelot } 58ca070c10SVivien Didelot 59ca070c10SVivien Didelot static inline int mv88e6xxx_g2_smi_phy_read(struct mv88e6xxx_chip *chip, 60ca070c10SVivien Didelot int addr, int reg, u16 *val) 61ca070c10SVivien Didelot { 62ca070c10SVivien Didelot return -EOPNOTSUPP; 63ca070c10SVivien Didelot } 64ca070c10SVivien Didelot 65ca070c10SVivien Didelot static inline int mv88e6xxx_g2_smi_phy_write(struct mv88e6xxx_chip *chip, 66ca070c10SVivien Didelot int addr, int reg, u16 val) 67ca070c10SVivien Didelot { 68ca070c10SVivien Didelot return -EOPNOTSUPP; 69ca070c10SVivien Didelot } 70ca070c10SVivien Didelot 71ca070c10SVivien Didelot static inline int mv88e6xxx_g2_set_switch_mac(struct mv88e6xxx_chip *chip, 72ca070c10SVivien Didelot u8 *addr) 73ca070c10SVivien Didelot { 74ca070c10SVivien Didelot return -EOPNOTSUPP; 75ca070c10SVivien Didelot } 76ca070c10SVivien Didelot 7798fc3c6fSVivien Didelot static inline int mv88e6xxx_g2_get_eeprom8(struct mv88e6xxx_chip *chip, 7898fc3c6fSVivien Didelot struct ethtool_eeprom *eeprom, 7998fc3c6fSVivien Didelot u8 *data) 8098fc3c6fSVivien Didelot { 8198fc3c6fSVivien Didelot return -EOPNOTSUPP; 8298fc3c6fSVivien Didelot } 8398fc3c6fSVivien Didelot 8498fc3c6fSVivien Didelot static inline int mv88e6xxx_g2_set_eeprom8(struct mv88e6xxx_chip *chip, 8598fc3c6fSVivien Didelot struct ethtool_eeprom *eeprom, 8698fc3c6fSVivien Didelot u8 *data) 8798fc3c6fSVivien Didelot { 8898fc3c6fSVivien Didelot return -EOPNOTSUPP; 8998fc3c6fSVivien Didelot } 9098fc3c6fSVivien Didelot 91ca070c10SVivien Didelot static inline int mv88e6xxx_g2_get_eeprom16(struct mv88e6xxx_chip *chip, 92ca070c10SVivien Didelot struct ethtool_eeprom *eeprom, 93ca070c10SVivien Didelot u8 *data) 94ca070c10SVivien Didelot { 95ca070c10SVivien Didelot return -EOPNOTSUPP; 96ca070c10SVivien Didelot } 97ca070c10SVivien Didelot 98ca070c10SVivien Didelot static inline int mv88e6xxx_g2_set_eeprom16(struct mv88e6xxx_chip *chip, 99ca070c10SVivien Didelot struct ethtool_eeprom *eeprom, 100ca070c10SVivien Didelot u8 *data) 101ca070c10SVivien Didelot { 102ca070c10SVivien Didelot return -EOPNOTSUPP; 103ca070c10SVivien Didelot } 104ca070c10SVivien Didelot 105ca070c10SVivien Didelot static inline int mv88e6xxx_g2_setup(struct mv88e6xxx_chip *chip) 106ca070c10SVivien Didelot { 107ca070c10SVivien Didelot return -EOPNOTSUPP; 108ca070c10SVivien Didelot } 109ca070c10SVivien Didelot 110dc30c35bSAndrew Lunn static inline int mv88e6xxx_g2_irq_setup(struct mv88e6xxx_chip *chip) 111dc30c35bSAndrew Lunn { 112dc30c35bSAndrew Lunn return -EOPNOTSUPP; 113dc30c35bSAndrew Lunn } 114dc30c35bSAndrew Lunn 115dc30c35bSAndrew Lunn static inline void mv88e6xxx_g2_irq_free(struct mv88e6xxx_chip *chip) 116dc30c35bSAndrew Lunn { 117dc30c35bSAndrew Lunn } 118dc30c35bSAndrew Lunn 1196e55f698SAndrew Lunn static inline int mv88e6095_g2_mgmt_rsvd2cpu(struct mv88e6xxx_chip *chip) 1206e55f698SAndrew Lunn { 1216e55f698SAndrew Lunn return -EOPNOTSUPP; 1226e55f698SAndrew Lunn } 1236e55f698SAndrew Lunn 124ca070c10SVivien Didelot #endif /* CONFIG_NET_DSA_MV88E6XXX_GLOBAL2 */ 125ca070c10SVivien Didelot 126ec561276SVivien Didelot #endif /* _MV88E6XXX_GLOBAL2_H */ 127