2016-09-03 02:45:33 +08:00
|
|
|
/*
|
|
|
|
* Marvell 88E6xxx Switch Global 2 Registers support (device address 0x1C)
|
|
|
|
*
|
|
|
|
* Copyright (c) 2008 Marvell Semiconductor
|
|
|
|
*
|
2017-03-29 03:10:36 +08:00
|
|
|
* Copyright (c) 2016-2017 Savoir-faire Linux Inc.
|
|
|
|
* Vivien Didelot <vivien.didelot@savoirfairelinux.com>
|
2016-09-03 02:45:33 +08:00
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _MV88E6XXX_GLOBAL2_H
|
|
|
|
#define _MV88E6XXX_GLOBAL2_H
|
|
|
|
|
|
|
|
#include "mv88e6xxx.h"
|
|
|
|
|
2016-09-03 02:45:34 +08:00
|
|
|
#ifdef CONFIG_NET_DSA_MV88E6XXX_GLOBAL2
|
|
|
|
|
|
|
|
static inline int mv88e6xxx_g2_require(struct mv88e6xxx_chip *chip)
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2017-01-24 21:53:48 +08:00
|
|
|
int mv88e6xxx_g2_smi_phy_read(struct mv88e6xxx_chip *chip,
|
|
|
|
struct mii_bus *bus,
|
|
|
|
int addr, int reg, u16 *val);
|
|
|
|
int mv88e6xxx_g2_smi_phy_write(struct mv88e6xxx_chip *chip,
|
|
|
|
struct mii_bus *bus,
|
|
|
|
int addr, int reg, u16 val);
|
2016-09-03 02:45:33 +08:00
|
|
|
int mv88e6xxx_g2_set_switch_mac(struct mv88e6xxx_chip *chip, u8 *addr);
|
2017-01-13 07:07:16 +08:00
|
|
|
|
|
|
|
int mv88e6xxx_g2_get_eeprom8(struct mv88e6xxx_chip *chip,
|
|
|
|
struct ethtool_eeprom *eeprom, u8 *data);
|
|
|
|
int mv88e6xxx_g2_set_eeprom8(struct mv88e6xxx_chip *chip,
|
|
|
|
struct ethtool_eeprom *eeprom, u8 *data);
|
|
|
|
|
2016-09-03 02:45:33 +08:00
|
|
|
int mv88e6xxx_g2_get_eeprom16(struct mv88e6xxx_chip *chip,
|
|
|
|
struct ethtool_eeprom *eeprom, u8 *data);
|
|
|
|
int mv88e6xxx_g2_set_eeprom16(struct mv88e6xxx_chip *chip,
|
|
|
|
struct ethtool_eeprom *eeprom, u8 *data);
|
2017-01-13 07:07:16 +08:00
|
|
|
|
2016-09-03 02:45:33 +08:00
|
|
|
int mv88e6xxx_g2_setup(struct mv88e6xxx_chip *chip);
|
2016-10-17 01:56:49 +08:00
|
|
|
int mv88e6xxx_g2_irq_setup(struct mv88e6xxx_chip *chip);
|
|
|
|
void mv88e6xxx_g2_irq_free(struct mv88e6xxx_chip *chip);
|
2016-12-03 11:45:16 +08:00
|
|
|
int mv88e6095_g2_mgmt_rsvd2cpu(struct mv88e6xxx_chip *chip);
|
2016-09-03 02:45:33 +08:00
|
|
|
|
2017-02-09 07:03:42 +08:00
|
|
|
extern const struct mv88e6xxx_irq_ops mv88e6097_watchdog_ops;
|
2017-02-09 07:03:43 +08:00
|
|
|
extern const struct mv88e6xxx_irq_ops mv88e6390_watchdog_ops;
|
2017-02-09 07:03:42 +08:00
|
|
|
|
2016-09-03 02:45:34 +08:00
|
|
|
#else /* !CONFIG_NET_DSA_MV88E6XXX_GLOBAL2 */
|
|
|
|
|
|
|
|
static inline int mv88e6xxx_g2_require(struct mv88e6xxx_chip *chip)
|
|
|
|
{
|
|
|
|
if (mv88e6xxx_has(chip, MV88E6XXX_FLAG_GLOBAL2)) {
|
|
|
|
dev_err(chip->dev, "this chip requires CONFIG_NET_DSA_MV88E6XXX_GLOBAL2 enabled\n");
|
|
|
|
return -EOPNOTSUPP;
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline int mv88e6xxx_g2_smi_phy_read(struct mv88e6xxx_chip *chip,
|
2017-01-24 21:53:48 +08:00
|
|
|
struct mii_bus *bus,
|
2016-09-03 02:45:34 +08:00
|
|
|
int addr, int reg, u16 *val)
|
|
|
|
{
|
|
|
|
return -EOPNOTSUPP;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline int mv88e6xxx_g2_smi_phy_write(struct mv88e6xxx_chip *chip,
|
2017-01-24 21:53:48 +08:00
|
|
|
struct mii_bus *bus,
|
2016-09-03 02:45:34 +08:00
|
|
|
int addr, int reg, u16 val)
|
|
|
|
{
|
|
|
|
return -EOPNOTSUPP;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline int mv88e6xxx_g2_set_switch_mac(struct mv88e6xxx_chip *chip,
|
|
|
|
u8 *addr)
|
|
|
|
{
|
|
|
|
return -EOPNOTSUPP;
|
|
|
|
}
|
|
|
|
|
2017-01-13 07:07:16 +08:00
|
|
|
static inline int mv88e6xxx_g2_get_eeprom8(struct mv88e6xxx_chip *chip,
|
|
|
|
struct ethtool_eeprom *eeprom,
|
|
|
|
u8 *data)
|
|
|
|
{
|
|
|
|
return -EOPNOTSUPP;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline int mv88e6xxx_g2_set_eeprom8(struct mv88e6xxx_chip *chip,
|
|
|
|
struct ethtool_eeprom *eeprom,
|
|
|
|
u8 *data)
|
|
|
|
{
|
|
|
|
return -EOPNOTSUPP;
|
|
|
|
}
|
|
|
|
|
2016-09-03 02:45:34 +08:00
|
|
|
static inline int mv88e6xxx_g2_get_eeprom16(struct mv88e6xxx_chip *chip,
|
|
|
|
struct ethtool_eeprom *eeprom,
|
|
|
|
u8 *data)
|
|
|
|
{
|
|
|
|
return -EOPNOTSUPP;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline int mv88e6xxx_g2_set_eeprom16(struct mv88e6xxx_chip *chip,
|
|
|
|
struct ethtool_eeprom *eeprom,
|
|
|
|
u8 *data)
|
|
|
|
{
|
|
|
|
return -EOPNOTSUPP;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline int mv88e6xxx_g2_setup(struct mv88e6xxx_chip *chip)
|
|
|
|
{
|
|
|
|
return -EOPNOTSUPP;
|
|
|
|
}
|
|
|
|
|
2016-10-17 01:56:49 +08:00
|
|
|
static inline int mv88e6xxx_g2_irq_setup(struct mv88e6xxx_chip *chip)
|
|
|
|
{
|
|
|
|
return -EOPNOTSUPP;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline void mv88e6xxx_g2_irq_free(struct mv88e6xxx_chip *chip)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2016-12-03 11:45:16 +08:00
|
|
|
static inline int mv88e6095_g2_mgmt_rsvd2cpu(struct mv88e6xxx_chip *chip)
|
|
|
|
{
|
|
|
|
return -EOPNOTSUPP;
|
|
|
|
}
|
|
|
|
|
2017-02-09 07:03:42 +08:00
|
|
|
static const struct mv88e6xxx_irq_ops mv88e6097_watchdog_ops = {};
|
2017-02-09 07:03:43 +08:00
|
|
|
static const struct mv88e6xxx_irq_ops mv88e6390_watchdog_ops = {};
|
2017-02-09 07:03:42 +08:00
|
|
|
|
2016-09-03 02:45:34 +08:00
|
|
|
#endif /* CONFIG_NET_DSA_MV88E6XXX_GLOBAL2 */
|
|
|
|
|
2016-09-03 02:45:33 +08:00
|
|
|
#endif /* _MV88E6XXX_GLOBAL2_H */
|