Commit 158bc065 authored by Andrew Lunn's avatar Andrew Lunn Committed by David S. Miller

net: dsa: mv88e6xxx: replace ds with ps where possible

The dsa_switch structure ds is actually needed in very few places,
mostly during setup of the switch. The private structure ps is however
needed nearly everywhere. Pass ps, not ds internally.

[vd: rebased Andrew's patch.]
Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8cd14ccb
...@@ -50,6 +50,7 @@ static const char *mv88e6123_drv_probe(struct device *dsa_dev, ...@@ -50,6 +50,7 @@ static const char *mv88e6123_drv_probe(struct device *dsa_dev,
static int mv88e6123_setup_global(struct dsa_switch *ds) static int mv88e6123_setup_global(struct dsa_switch *ds)
{ {
struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
u32 upstream_port = dsa_upstream_port(ds); u32 upstream_port = dsa_upstream_port(ds);
int ret; int ret;
u32 reg; u32 reg;
...@@ -62,7 +63,7 @@ static int mv88e6123_setup_global(struct dsa_switch *ds) ...@@ -62,7 +63,7 @@ static int mv88e6123_setup_global(struct dsa_switch *ds)
* external PHYs to poll), don't discard packets with * external PHYs to poll), don't discard packets with
* excessive collisions, and mask all interrupt sources. * excessive collisions, and mask all interrupt sources.
*/ */
ret = mv88e6xxx_reg_write(ds, REG_GLOBAL, GLOBAL_CONTROL, 0x0000); ret = mv88e6xxx_reg_write(ps, REG_GLOBAL, GLOBAL_CONTROL, 0x0000);
if (ret) if (ret)
return ret; return ret;
...@@ -73,26 +74,29 @@ static int mv88e6123_setup_global(struct dsa_switch *ds) ...@@ -73,26 +74,29 @@ static int mv88e6123_setup_global(struct dsa_switch *ds)
reg = upstream_port << GLOBAL_MONITOR_CONTROL_INGRESS_SHIFT | reg = upstream_port << GLOBAL_MONITOR_CONTROL_INGRESS_SHIFT |
upstream_port << GLOBAL_MONITOR_CONTROL_EGRESS_SHIFT | upstream_port << GLOBAL_MONITOR_CONTROL_EGRESS_SHIFT |
upstream_port << GLOBAL_MONITOR_CONTROL_ARP_SHIFT; upstream_port << GLOBAL_MONITOR_CONTROL_ARP_SHIFT;
ret = mv88e6xxx_reg_write(ds, REG_GLOBAL, GLOBAL_MONITOR_CONTROL, reg); ret = mv88e6xxx_reg_write(ps, REG_GLOBAL, GLOBAL_MONITOR_CONTROL, reg);
if (ret) if (ret)
return ret; return ret;
/* Disable remote management for now, and set the switch's /* Disable remote management for now, and set the switch's
* DSA device number. * DSA device number.
*/ */
return mv88e6xxx_reg_write(ds, REG_GLOBAL, GLOBAL_CONTROL_2, return mv88e6xxx_reg_write(ps, REG_GLOBAL, GLOBAL_CONTROL_2,
ds->index & 0x1f); ds->index & 0x1f);
} }
static int mv88e6123_setup(struct dsa_switch *ds) static int mv88e6123_setup(struct dsa_switch *ds)
{ {
struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
int ret; int ret;
ret = mv88e6xxx_setup_common(ds); ps->ds = ds;
ret = mv88e6xxx_setup_common(ps);
if (ret < 0) if (ret < 0)
return ret; return ret;
ret = mv88e6xxx_switch_reset(ds, false); ret = mv88e6xxx_switch_reset(ps, false);
if (ret < 0) if (ret < 0)
return ret; return ret;
......
...@@ -56,6 +56,7 @@ static const char *mv88e6131_drv_probe(struct device *dsa_dev, ...@@ -56,6 +56,7 @@ static const char *mv88e6131_drv_probe(struct device *dsa_dev,
static int mv88e6131_setup_global(struct dsa_switch *ds) static int mv88e6131_setup_global(struct dsa_switch *ds)
{ {
struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
u32 upstream_port = dsa_upstream_port(ds); u32 upstream_port = dsa_upstream_port(ds);
int ret; int ret;
u32 reg; u32 reg;
...@@ -69,14 +70,14 @@ static int mv88e6131_setup_global(struct dsa_switch *ds) ...@@ -69,14 +70,14 @@ static int mv88e6131_setup_global(struct dsa_switch *ds)
* to arbitrate between packet queues, set the maximum frame * to arbitrate between packet queues, set the maximum frame
* size to 1632, and mask all interrupt sources. * size to 1632, and mask all interrupt sources.
*/ */
ret = mv88e6xxx_reg_write(ds, REG_GLOBAL, GLOBAL_CONTROL, ret = mv88e6xxx_reg_write(ps, REG_GLOBAL, GLOBAL_CONTROL,
GLOBAL_CONTROL_PPU_ENABLE | GLOBAL_CONTROL_PPU_ENABLE |
GLOBAL_CONTROL_MAX_FRAME_1632); GLOBAL_CONTROL_MAX_FRAME_1632);
if (ret) if (ret)
return ret; return ret;
/* Set the VLAN ethertype to 0x8100. */ /* Set the VLAN ethertype to 0x8100. */
ret = mv88e6xxx_reg_write(ds, REG_GLOBAL, GLOBAL_CORE_TAG_TYPE, 0x8100); ret = mv88e6xxx_reg_write(ps, REG_GLOBAL, GLOBAL_CORE_TAG_TYPE, 0x8100);
if (ret) if (ret)
return ret; return ret;
...@@ -87,7 +88,7 @@ static int mv88e6131_setup_global(struct dsa_switch *ds) ...@@ -87,7 +88,7 @@ static int mv88e6131_setup_global(struct dsa_switch *ds)
reg = upstream_port << GLOBAL_MONITOR_CONTROL_INGRESS_SHIFT | reg = upstream_port << GLOBAL_MONITOR_CONTROL_INGRESS_SHIFT |
upstream_port << GLOBAL_MONITOR_CONTROL_EGRESS_SHIFT | upstream_port << GLOBAL_MONITOR_CONTROL_EGRESS_SHIFT |
GLOBAL_MONITOR_CONTROL_ARP_DISABLED; GLOBAL_MONITOR_CONTROL_ARP_DISABLED;
ret = mv88e6xxx_reg_write(ds, REG_GLOBAL, GLOBAL_MONITOR_CONTROL, reg); ret = mv88e6xxx_reg_write(ps, REG_GLOBAL, GLOBAL_MONITOR_CONTROL, reg);
if (ret) if (ret)
return ret; return ret;
...@@ -96,11 +97,11 @@ static int mv88e6131_setup_global(struct dsa_switch *ds) ...@@ -96,11 +97,11 @@ static int mv88e6131_setup_global(struct dsa_switch *ds)
* DSA device number. * DSA device number.
*/ */
if (ds->dst->pd->nr_chips > 1) if (ds->dst->pd->nr_chips > 1)
ret = mv88e6xxx_reg_write(ds, REG_GLOBAL, GLOBAL_CONTROL_2, ret = mv88e6xxx_reg_write(ps, REG_GLOBAL, GLOBAL_CONTROL_2,
GLOBAL_CONTROL_2_MULTIPLE_CASCADE | GLOBAL_CONTROL_2_MULTIPLE_CASCADE |
(ds->index & 0x1f)); (ds->index & 0x1f));
else else
ret = mv88e6xxx_reg_write(ds, REG_GLOBAL, GLOBAL_CONTROL_2, ret = mv88e6xxx_reg_write(ps, REG_GLOBAL, GLOBAL_CONTROL_2,
GLOBAL_CONTROL_2_NO_CASCADE | GLOBAL_CONTROL_2_NO_CASCADE |
(ds->index & 0x1f)); (ds->index & 0x1f));
if (ret) if (ret)
...@@ -109,7 +110,7 @@ static int mv88e6131_setup_global(struct dsa_switch *ds) ...@@ -109,7 +110,7 @@ static int mv88e6131_setup_global(struct dsa_switch *ds)
/* Force the priority of IGMP/MLD snoop frames and ARP frames /* Force the priority of IGMP/MLD snoop frames and ARP frames
* to the highest setting. * to the highest setting.
*/ */
return mv88e6xxx_reg_write(ds, REG_GLOBAL2, GLOBAL2_PRIO_OVERRIDE, return mv88e6xxx_reg_write(ps, REG_GLOBAL2, GLOBAL2_PRIO_OVERRIDE,
GLOBAL2_PRIO_OVERRIDE_FORCE_SNOOP | GLOBAL2_PRIO_OVERRIDE_FORCE_SNOOP |
7 << GLOBAL2_PRIO_OVERRIDE_SNOOP_SHIFT | 7 << GLOBAL2_PRIO_OVERRIDE_SNOOP_SHIFT |
GLOBAL2_PRIO_OVERRIDE_FORCE_ARP | GLOBAL2_PRIO_OVERRIDE_FORCE_ARP |
...@@ -118,15 +119,18 @@ static int mv88e6131_setup_global(struct dsa_switch *ds) ...@@ -118,15 +119,18 @@ static int mv88e6131_setup_global(struct dsa_switch *ds)
static int mv88e6131_setup(struct dsa_switch *ds) static int mv88e6131_setup(struct dsa_switch *ds)
{ {
struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
int ret; int ret;
ret = mv88e6xxx_setup_common(ds); ps->ds = ds;
ret = mv88e6xxx_setup_common(ps);
if (ret < 0) if (ret < 0)
return ret; return ret;
mv88e6xxx_ppu_state_init(ds); mv88e6xxx_ppu_state_init(ps);
ret = mv88e6xxx_switch_reset(ds, false); ret = mv88e6xxx_switch_reset(ps, false);
if (ret < 0) if (ret < 0)
return ret; return ret;
......
...@@ -56,6 +56,7 @@ static const char *mv88e6171_drv_probe(struct device *dsa_dev, ...@@ -56,6 +56,7 @@ static const char *mv88e6171_drv_probe(struct device *dsa_dev,
static int mv88e6171_setup_global(struct dsa_switch *ds) static int mv88e6171_setup_global(struct dsa_switch *ds)
{ {
struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
u32 upstream_port = dsa_upstream_port(ds); u32 upstream_port = dsa_upstream_port(ds);
int ret; int ret;
u32 reg; u32 reg;
...@@ -67,7 +68,7 @@ static int mv88e6171_setup_global(struct dsa_switch *ds) ...@@ -67,7 +68,7 @@ static int mv88e6171_setup_global(struct dsa_switch *ds)
/* Discard packets with excessive collisions, mask all /* Discard packets with excessive collisions, mask all
* interrupt sources, enable PPU. * interrupt sources, enable PPU.
*/ */
ret = mv88e6xxx_reg_write(ds, REG_GLOBAL, GLOBAL_CONTROL, ret = mv88e6xxx_reg_write(ps, REG_GLOBAL, GLOBAL_CONTROL,
GLOBAL_CONTROL_PPU_ENABLE | GLOBAL_CONTROL_PPU_ENABLE |
GLOBAL_CONTROL_DISCARD_EXCESS); GLOBAL_CONTROL_DISCARD_EXCESS);
if (ret) if (ret)
...@@ -81,26 +82,29 @@ static int mv88e6171_setup_global(struct dsa_switch *ds) ...@@ -81,26 +82,29 @@ static int mv88e6171_setup_global(struct dsa_switch *ds)
upstream_port << GLOBAL_MONITOR_CONTROL_EGRESS_SHIFT | upstream_port << GLOBAL_MONITOR_CONTROL_EGRESS_SHIFT |
upstream_port << GLOBAL_MONITOR_CONTROL_ARP_SHIFT | upstream_port << GLOBAL_MONITOR_CONTROL_ARP_SHIFT |
upstream_port << GLOBAL_MONITOR_CONTROL_MIRROR_SHIFT; upstream_port << GLOBAL_MONITOR_CONTROL_MIRROR_SHIFT;
ret = mv88e6xxx_reg_write(ds, REG_GLOBAL, GLOBAL_MONITOR_CONTROL, reg); ret = mv88e6xxx_reg_write(ps, REG_GLOBAL, GLOBAL_MONITOR_CONTROL, reg);
if (ret) if (ret)
return ret; return ret;
/* Disable remote management for now, and set the switch's /* Disable remote management for now, and set the switch's
* DSA device number. * DSA device number.
*/ */
return mv88e6xxx_reg_write(ds, REG_GLOBAL, GLOBAL_CONTROL_2, return mv88e6xxx_reg_write(ps, REG_GLOBAL, GLOBAL_CONTROL_2,
ds->index & 0x1f); ds->index & 0x1f);
} }
static int mv88e6171_setup(struct dsa_switch *ds) static int mv88e6171_setup(struct dsa_switch *ds)
{ {
struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
int ret; int ret;
ret = mv88e6xxx_setup_common(ds); ps->ds = ds;
ret = mv88e6xxx_setup_common(ps);
if (ret < 0) if (ret < 0)
return ret; return ret;
ret = mv88e6xxx_switch_reset(ds, true); ret = mv88e6xxx_switch_reset(ps, true);
if (ret < 0) if (ret < 0)
return ret; return ret;
......
...@@ -73,6 +73,7 @@ static const char *mv88e6352_drv_probe(struct device *dsa_dev, ...@@ -73,6 +73,7 @@ static const char *mv88e6352_drv_probe(struct device *dsa_dev,
static int mv88e6352_setup_global(struct dsa_switch *ds) static int mv88e6352_setup_global(struct dsa_switch *ds)
{ {
struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
u32 upstream_port = dsa_upstream_port(ds); u32 upstream_port = dsa_upstream_port(ds);
int ret; int ret;
u32 reg; u32 reg;
...@@ -84,7 +85,7 @@ static int mv88e6352_setup_global(struct dsa_switch *ds) ...@@ -84,7 +85,7 @@ static int mv88e6352_setup_global(struct dsa_switch *ds)
/* Discard packets with excessive collisions, /* Discard packets with excessive collisions,
* mask all interrupt sources, enable PPU (bit 14, undocumented). * mask all interrupt sources, enable PPU (bit 14, undocumented).
*/ */
ret = mv88e6xxx_reg_write(ds, REG_GLOBAL, GLOBAL_CONTROL, ret = mv88e6xxx_reg_write(ps, REG_GLOBAL, GLOBAL_CONTROL,
GLOBAL_CONTROL_PPU_ENABLE | GLOBAL_CONTROL_PPU_ENABLE |
GLOBAL_CONTROL_DISCARD_EXCESS); GLOBAL_CONTROL_DISCARD_EXCESS);
if (ret) if (ret)
...@@ -97,14 +98,14 @@ static int mv88e6352_setup_global(struct dsa_switch *ds) ...@@ -97,14 +98,14 @@ static int mv88e6352_setup_global(struct dsa_switch *ds)
reg = upstream_port << GLOBAL_MONITOR_CONTROL_INGRESS_SHIFT | reg = upstream_port << GLOBAL_MONITOR_CONTROL_INGRESS_SHIFT |
upstream_port << GLOBAL_MONITOR_CONTROL_EGRESS_SHIFT | upstream_port << GLOBAL_MONITOR_CONTROL_EGRESS_SHIFT |
upstream_port << GLOBAL_MONITOR_CONTROL_ARP_SHIFT; upstream_port << GLOBAL_MONITOR_CONTROL_ARP_SHIFT;
ret = mv88e6xxx_reg_write(ds, REG_GLOBAL, GLOBAL_MONITOR_CONTROL, reg); ret = mv88e6xxx_reg_write(ps, REG_GLOBAL, GLOBAL_MONITOR_CONTROL, reg);
if (ret) if (ret)
return ret; return ret;
/* Disable remote management for now, and set the switch's /* Disable remote management for now, and set the switch's
* DSA device number. * DSA device number.
*/ */
return mv88e6xxx_reg_write(ds, REG_GLOBAL, 0x1c, ds->index & 0x1f); return mv88e6xxx_reg_write(ps, REG_GLOBAL, 0x1c, ds->index & 0x1f);
} }
static int mv88e6352_setup(struct dsa_switch *ds) static int mv88e6352_setup(struct dsa_switch *ds)
...@@ -112,13 +113,15 @@ static int mv88e6352_setup(struct dsa_switch *ds) ...@@ -112,13 +113,15 @@ static int mv88e6352_setup(struct dsa_switch *ds)
struct mv88e6xxx_priv_state *ps = ds_to_priv(ds); struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
int ret; int ret;
ret = mv88e6xxx_setup_common(ds); ps->ds = ds;
ret = mv88e6xxx_setup_common(ps);
if (ret < 0) if (ret < 0)
return ret; return ret;
mutex_init(&ps->eeprom_mutex); mutex_init(&ps->eeprom_mutex);
ret = mv88e6xxx_switch_reset(ds, true); ret = mv88e6xxx_switch_reset(ps, true);
if (ret < 0) if (ret < 0)
return ret; return ret;
...@@ -136,7 +139,7 @@ static int mv88e6352_read_eeprom_word(struct dsa_switch *ds, int addr) ...@@ -136,7 +139,7 @@ static int mv88e6352_read_eeprom_word(struct dsa_switch *ds, int addr)
mutex_lock(&ps->eeprom_mutex); mutex_lock(&ps->eeprom_mutex);
ret = mv88e6xxx_reg_write(ds, REG_GLOBAL2, GLOBAL2_EEPROM_OP, ret = mv88e6xxx_reg_write(ps, REG_GLOBAL2, GLOBAL2_EEPROM_OP,
GLOBAL2_EEPROM_OP_READ | GLOBAL2_EEPROM_OP_READ |
(addr & GLOBAL2_EEPROM_OP_ADDR_MASK)); (addr & GLOBAL2_EEPROM_OP_ADDR_MASK));
if (ret < 0) if (ret < 0)
...@@ -146,7 +149,7 @@ static int mv88e6352_read_eeprom_word(struct dsa_switch *ds, int addr) ...@@ -146,7 +149,7 @@ static int mv88e6352_read_eeprom_word(struct dsa_switch *ds, int addr)
if (ret < 0) if (ret < 0)
goto error; goto error;
ret = mv88e6xxx_reg_read(ds, REG_GLOBAL2, GLOBAL2_EEPROM_DATA); ret = mv88e6xxx_reg_read(ps, REG_GLOBAL2, GLOBAL2_EEPROM_DATA);
error: error:
mutex_unlock(&ps->eeprom_mutex); mutex_unlock(&ps->eeprom_mutex);
return ret; return ret;
...@@ -217,9 +220,10 @@ static int mv88e6352_get_eeprom(struct dsa_switch *ds, ...@@ -217,9 +220,10 @@ static int mv88e6352_get_eeprom(struct dsa_switch *ds,
static int mv88e6352_eeprom_is_readonly(struct dsa_switch *ds) static int mv88e6352_eeprom_is_readonly(struct dsa_switch *ds)
{ {
struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
int ret; int ret;
ret = mv88e6xxx_reg_read(ds, REG_GLOBAL2, GLOBAL2_EEPROM_OP); ret = mv88e6xxx_reg_read(ps, REG_GLOBAL2, GLOBAL2_EEPROM_OP);
if (ret < 0) if (ret < 0)
return ret; return ret;
...@@ -237,11 +241,11 @@ static int mv88e6352_write_eeprom_word(struct dsa_switch *ds, int addr, ...@@ -237,11 +241,11 @@ static int mv88e6352_write_eeprom_word(struct dsa_switch *ds, int addr,
mutex_lock(&ps->eeprom_mutex); mutex_lock(&ps->eeprom_mutex);
ret = mv88e6xxx_reg_write(ds, REG_GLOBAL2, GLOBAL2_EEPROM_DATA, data); ret = mv88e6xxx_reg_write(ps, REG_GLOBAL2, GLOBAL2_EEPROM_DATA, data);
if (ret < 0) if (ret < 0)
goto error; goto error;
ret = mv88e6xxx_reg_write(ds, REG_GLOBAL2, GLOBAL2_EEPROM_OP, ret = mv88e6xxx_reg_write(ps, REG_GLOBAL2, GLOBAL2_EEPROM_OP,
GLOBAL2_EEPROM_OP_WRITE | GLOBAL2_EEPROM_OP_WRITE |
(addr & GLOBAL2_EEPROM_OP_ADDR_MASK)); (addr & GLOBAL2_EEPROM_OP_ADDR_MASK));
if (ret < 0) if (ret < 0)
......
This diff is collapsed.
...@@ -388,6 +388,9 @@ struct mv88e6xxx_priv_state { ...@@ -388,6 +388,9 @@ struct mv88e6xxx_priv_state {
/* The dsa_switch this private structure is related to */ /* The dsa_switch this private structure is related to */
struct dsa_switch *ds; struct dsa_switch *ds;
/* The device this structure is associated to */
struct device *dev;
/* When using multi-chip addressing, this mutex protects /* When using multi-chip addressing, this mutex protects
* access to the indirect access registers. (In single-chip * access to the indirect access registers. (In single-chip
* mode, this mutex is effectively useless.) * mode, this mutex is effectively useless.)
...@@ -446,17 +449,18 @@ struct mv88e6xxx_hw_stat { ...@@ -446,17 +449,18 @@ struct mv88e6xxx_hw_stat {
enum stat_type type; enum stat_type type;
}; };
int mv88e6xxx_switch_reset(struct dsa_switch *ds, bool ppu_active); int mv88e6xxx_switch_reset(struct mv88e6xxx_priv_state *ps, bool ppu_active);
const char *mv88e6xxx_drv_probe(struct device *dsa_dev, struct device *host_dev, const char *mv88e6xxx_drv_probe(struct device *dsa_dev, struct device *host_dev,
int sw_addr, void **priv, int sw_addr, void **priv,
const struct mv88e6xxx_info *table, const struct mv88e6xxx_info *table,
unsigned int num); unsigned int num);
int mv88e6xxx_setup_ports(struct dsa_switch *ds); int mv88e6xxx_setup_ports(struct dsa_switch *ds);
int mv88e6xxx_setup_common(struct dsa_switch *ds); int mv88e6xxx_setup_common(struct mv88e6xxx_priv_state *ps);
int mv88e6xxx_setup_global(struct dsa_switch *ds); int mv88e6xxx_setup_global(struct dsa_switch *ds);
int mv88e6xxx_reg_read(struct dsa_switch *ds, int addr, int reg); int mv88e6xxx_reg_read(struct mv88e6xxx_priv_state *ps, int addr, int reg);
int mv88e6xxx_reg_write(struct dsa_switch *ds, int addr, int reg, u16 val); int mv88e6xxx_reg_write(struct mv88e6xxx_priv_state *ps, int addr,
int reg, u16 val);
int mv88e6xxx_set_addr_direct(struct dsa_switch *ds, u8 *addr); int mv88e6xxx_set_addr_direct(struct dsa_switch *ds, u8 *addr);
int mv88e6xxx_set_addr_indirect(struct dsa_switch *ds, u8 *addr); int mv88e6xxx_set_addr_indirect(struct dsa_switch *ds, u8 *addr);
int mv88e6xxx_phy_read(struct dsa_switch *ds, int port, int regnum); int mv88e6xxx_phy_read(struct dsa_switch *ds, int port, int regnum);
...@@ -464,7 +468,7 @@ int mv88e6xxx_phy_write(struct dsa_switch *ds, int port, int regnum, u16 val); ...@@ -464,7 +468,7 @@ int mv88e6xxx_phy_write(struct dsa_switch *ds, int port, int regnum, u16 val);
int mv88e6xxx_phy_read_indirect(struct dsa_switch *ds, int port, int regnum); int mv88e6xxx_phy_read_indirect(struct dsa_switch *ds, int port, int regnum);
int mv88e6xxx_phy_write_indirect(struct dsa_switch *ds, int port, int regnum, int mv88e6xxx_phy_write_indirect(struct dsa_switch *ds, int port, int regnum,
u16 val); u16 val);
void mv88e6xxx_ppu_state_init(struct dsa_switch *ds); void mv88e6xxx_ppu_state_init(struct mv88e6xxx_priv_state *ps);
int mv88e6xxx_phy_read_ppu(struct dsa_switch *ds, int addr, int regnum); int mv88e6xxx_phy_read_ppu(struct dsa_switch *ds, int addr, int regnum);
int mv88e6xxx_phy_write_ppu(struct dsa_switch *ds, int addr, int mv88e6xxx_phy_write_ppu(struct dsa_switch *ds, int addr,
int regnum, u16 val); int regnum, u16 val);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment