Add in a flag to control whether the low or high data word of a register access

is latched in first.

The AR8327 apparently requires the low data word be latched in first.

Obtained from:	Linux OpenWRT
This commit is contained in:
adrian 2014-02-19 04:23:01 +00:00
parent a631141dcb
commit d6af13f80d
2 changed files with 14 additions and 2 deletions

View File

@ -172,10 +172,21 @@ arswitch_readreg(device_t dev, int addr)
int
arswitch_writereg(device_t dev, int addr, int value)
{
struct arswitch_softc *sc;
int r;
sc = device_get_softc(dev);
/* XXX Check the first write too? */
arswitch_writereg_msb(dev, addr, value);
return (arswitch_writereg_lsb(dev, addr, value));
if (sc->mii_lo_first) {
r = arswitch_writereg_lsb(dev, addr, value);
r |= arswitch_writereg_msb(dev, addr, value);
} else {
r = arswitch_writereg_msb(dev, addr, value);
r |= arswitch_writereg_lsb(dev, addr, value);
}
return r;
}
int

View File

@ -53,6 +53,7 @@ struct arswitch_softc {
int is_mii; /* PHY mode is MII (XXX which PHY?) */
int page;
int is_internal_switch;
int mii_lo_first;
ar8x16_switch_type sc_switchtype;
char *ifname[AR8X16_NUM_PHYS];
device_t miibus[AR8X16_NUM_PHYS];