mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-24 00:22:07 +07:00
2874c5fd28
Based on 1 normalized pattern(s): 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 extracted by the scancode license scanner the SPDX license identifier GPL-2.0-or-later has been chosen to replace the boilerplate/reference in 3029 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Allison Randal <allison@lohutok.net> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190527070032.746973796@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
56 lines
1.6 KiB
C
56 lines
1.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Marvell 88E6xxx System Management Interface (SMI) support
|
|
*
|
|
* Copyright (c) 2008 Marvell Semiconductor
|
|
*
|
|
* Copyright (c) 2019 Vivien Didelot <vivien.didelot@gmail.com>
|
|
*/
|
|
|
|
#ifndef _MV88E6XXX_SMI_H
|
|
#define _MV88E6XXX_SMI_H
|
|
|
|
#include "chip.h"
|
|
|
|
/* Offset 0x00: SMI Command Register */
|
|
#define MV88E6XXX_SMI_CMD 0x00
|
|
#define MV88E6XXX_SMI_CMD_BUSY 0x8000
|
|
#define MV88E6XXX_SMI_CMD_MODE_MASK 0x1000
|
|
#define MV88E6XXX_SMI_CMD_MODE_45 0x0000
|
|
#define MV88E6XXX_SMI_CMD_MODE_22 0x1000
|
|
#define MV88E6XXX_SMI_CMD_OP_MASK 0x0c00
|
|
#define MV88E6XXX_SMI_CMD_OP_22_WRITE 0x0400
|
|
#define MV88E6XXX_SMI_CMD_OP_22_READ 0x0800
|
|
#define MV88E6XXX_SMI_CMD_OP_45_WRITE_ADDR 0x0000
|
|
#define MV88E6XXX_SMI_CMD_OP_45_WRITE_DATA 0x0400
|
|
#define MV88E6XXX_SMI_CMD_OP_45_READ_DATA 0x0800
|
|
#define MV88E6XXX_SMI_CMD_OP_45_READ_DATA_INC 0x0c00
|
|
#define MV88E6XXX_SMI_CMD_DEV_ADDR_MASK 0x003e
|
|
#define MV88E6XXX_SMI_CMD_REG_ADDR_MASK 0x001f
|
|
|
|
/* Offset 0x01: SMI Data Register */
|
|
#define MV88E6XXX_SMI_DATA 0x01
|
|
|
|
int mv88e6xxx_smi_init(struct mv88e6xxx_chip *chip,
|
|
struct mii_bus *bus, int sw_addr);
|
|
|
|
static inline int mv88e6xxx_smi_read(struct mv88e6xxx_chip *chip,
|
|
int dev, int reg, u16 *data)
|
|
{
|
|
if (chip->smi_ops && chip->smi_ops->read)
|
|
return chip->smi_ops->read(chip, dev, reg, data);
|
|
|
|
return -EOPNOTSUPP;
|
|
}
|
|
|
|
static inline int mv88e6xxx_smi_write(struct mv88e6xxx_chip *chip,
|
|
int dev, int reg, u16 data)
|
|
{
|
|
if (chip->smi_ops && chip->smi_ops->write)
|
|
return chip->smi_ops->write(chip, dev, reg, data);
|
|
|
|
return -EOPNOTSUPP;
|
|
}
|
|
|
|
#endif /* _MV88E6XXX_SMI_H */
|