* reimplemented. For now it should be sufficient.
*/
+struct rtmdio_bus_priv {
+ struct rtl838x_eth_priv *eth_priv;
+ int extaddr;
+ int rawpage;
+ int page[64];
+ bool raw[64];
+ int (*read_mmd_phy)(u32 port, u32 addr, u32 reg, u32 *val);
+ int (*write_mmd_phy)(u32 port, u32 addr, u32 reg, u32 val);
+ int (*read_phy)(u32 port, u32 page, u32 reg, u32 *val);
+ int (*write_phy)(u32 port, u32 page, u32 reg, u32 val);
+};
+
/*
* Provide a generic read/write function so we can access arbitrary ports on the bus.
* E.g. other ports of a PHY package on the bus. This basically resembles the kernel
static int rtmdio_read_c45(struct mii_bus *bus, int addr, int devnum, int regnum)
{
int err, val;
- struct rtl838x_bus_priv *bus_priv = bus->priv;
+ struct rtmdio_bus_priv *bus_priv = bus->priv;
if (bus_priv->extaddr >= 0)
addr = bus_priv->extaddr;
static int rtmdio_83xx_read(struct mii_bus *bus, int addr, int regnum)
{
int err, val;
- struct rtl838x_bus_priv *bus_priv = bus->priv;
+ struct rtmdio_bus_priv *bus_priv = bus->priv;
struct rtl838x_eth_priv *eth_priv = bus_priv->eth_priv;
if (bus_priv->extaddr >= 0)
static int rtmdio_93xx_read(struct mii_bus *bus, int addr, int regnum)
{
int err, val;
- struct rtl838x_bus_priv *bus_priv = bus->priv;
+ struct rtmdio_bus_priv *bus_priv = bus->priv;
struct rtl838x_eth_priv *eth_priv = bus_priv->eth_priv;
if (bus_priv->extaddr >= 0)
static int rtmdio_write_c45(struct mii_bus *bus, int addr, int devnum, int regnum, u16 val)
{
int err;
- struct rtl838x_bus_priv *bus_priv = bus->priv;
+ struct rtmdio_bus_priv *bus_priv = bus->priv;
if (bus_priv->extaddr >= 0)
addr = bus_priv->extaddr;
static int rtmdio_83xx_write(struct mii_bus *bus, int addr, int regnum, u16 val)
{
int err, page, offset = 0;
- struct rtl838x_bus_priv *bus_priv = bus->priv;
+ struct rtmdio_bus_priv *bus_priv = bus->priv;
struct rtl838x_eth_priv *eth_priv = bus_priv->eth_priv;
if (regnum == RTMDIO_PORT_SELECT) {
static int rtmdio_93xx_write(struct mii_bus *bus, int addr, int regnum, u16 val)
{
int err, page;
- struct rtl838x_bus_priv *bus_priv = bus->priv;
+ struct rtmdio_bus_priv *bus_priv = bus->priv;
struct rtl838x_eth_priv *eth_priv = bus_priv->eth_priv;
if (regnum == RTMDIO_PORT_SELECT) {
static int rtmdio_930x_reset(struct mii_bus *bus)
{
- struct rtl838x_bus_priv *bus_priv = bus->priv;
+ struct rtmdio_bus_priv *bus_priv = bus->priv;
struct rtl838x_eth_priv *priv = bus_priv->eth_priv;
u32 c45_mask = 0;
u32 poll_sel[2];
static int rtmdio_931x_reset(struct mii_bus *bus)
{
- struct rtl838x_bus_priv *bus_priv = bus->priv;
+ struct rtmdio_bus_priv *bus_priv = bus->priv;
struct rtl838x_eth_priv *priv = bus_priv->eth_priv;
u32 c45_mask = 0;
u32 poll_sel[4];
static int rtl838x_mdio_init(struct rtl838x_eth_priv *priv)
{
struct device_node *mii_np, *dn;
- struct rtl838x_bus_priv *bus_priv;
+ struct rtmdio_bus_priv *bus_priv;
u32 pn;
int i, ret;