mirror of
https://github.com/openwrt/openwrt.git
synced 2025-02-09 12:21:33 +00:00
ar8216: factor out mii_lo_first to ar8xxx_chip
Factor out mii_lo_first to ar8xxx_chip. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> SVN-Revision: 43470
This commit is contained in:
parent
ea9324f3d3
commit
ae15531bd2
@ -74,6 +74,7 @@ struct ar8xxx_mib_desc {
|
|||||||
struct ar8xxx_chip {
|
struct ar8xxx_chip {
|
||||||
unsigned long caps;
|
unsigned long caps;
|
||||||
bool config_at_probe;
|
bool config_at_probe;
|
||||||
|
bool mii_lo_first;
|
||||||
|
|
||||||
int (*hw_init)(struct ar8xxx_priv *priv);
|
int (*hw_init)(struct ar8xxx_priv *priv);
|
||||||
void (*cleanup)(struct ar8xxx_priv *priv);
|
void (*cleanup)(struct ar8xxx_priv *priv);
|
||||||
@ -152,7 +153,6 @@ struct ar8xxx_priv {
|
|||||||
char buf[2048];
|
char buf[2048];
|
||||||
|
|
||||||
bool init;
|
bool init;
|
||||||
bool mii_lo_first;
|
|
||||||
|
|
||||||
struct mutex mib_lock;
|
struct mutex mib_lock;
|
||||||
struct delayed_work mib_work;
|
struct delayed_work mib_work;
|
||||||
@ -428,7 +428,7 @@ ar8xxx_mii_write(struct ar8xxx_priv *priv, int reg, u32 val)
|
|||||||
|
|
||||||
bus->write(bus, 0x18, 0, r3);
|
bus->write(bus, 0x18, 0, r3);
|
||||||
usleep_range(1000, 2000); /* wait for the page switch to propagate */
|
usleep_range(1000, 2000); /* wait for the page switch to propagate */
|
||||||
if (priv->mii_lo_first) {
|
if (priv->chip->mii_lo_first) {
|
||||||
bus->write(bus, 0x10 | r2, r1, lo);
|
bus->write(bus, 0x10 | r2, r1, lo);
|
||||||
bus->write(bus, 0x10 | r2, r1 + 1, hi);
|
bus->write(bus, 0x10 | r2, r1 + 1, hi);
|
||||||
} else {
|
} else {
|
||||||
@ -464,7 +464,7 @@ ar8xxx_mii_rmw(struct ar8xxx_priv *priv, int reg, u32 mask, u32 val)
|
|||||||
lo = ret & 0xffff;
|
lo = ret & 0xffff;
|
||||||
hi = (u16) (ret >> 16);
|
hi = (u16) (ret >> 16);
|
||||||
|
|
||||||
if (priv->mii_lo_first) {
|
if (priv->chip->mii_lo_first) {
|
||||||
bus->write(bus, 0x10 | r2, r1, lo);
|
bus->write(bus, 0x10 | r2, r1, lo);
|
||||||
bus->write(bus, 0x10 | r2, r1 + 1, hi);
|
bus->write(bus, 0x10 | r2, r1 + 1, hi);
|
||||||
} else {
|
} else {
|
||||||
@ -1829,6 +1829,8 @@ ar8327_setup_port(struct ar8xxx_priv *priv, int port, u32 members)
|
|||||||
static const struct ar8xxx_chip ar8327_chip = {
|
static const struct ar8xxx_chip ar8327_chip = {
|
||||||
.caps = AR8XXX_CAP_GIGE | AR8XXX_CAP_MIB_COUNTERS,
|
.caps = AR8XXX_CAP_GIGE | AR8XXX_CAP_MIB_COUNTERS,
|
||||||
.config_at_probe = true,
|
.config_at_probe = true,
|
||||||
|
.mii_lo_first = true,
|
||||||
|
|
||||||
.hw_init = ar8327_hw_init,
|
.hw_init = ar8327_hw_init,
|
||||||
.cleanup = ar8327_cleanup,
|
.cleanup = ar8327_cleanup,
|
||||||
.init_globals = ar8327_init_globals,
|
.init_globals = ar8327_init_globals,
|
||||||
@ -2596,11 +2598,9 @@ ar8xxx_id_chip(struct ar8xxx_priv *priv)
|
|||||||
priv->chip = &ar8316_chip;
|
priv->chip = &ar8316_chip;
|
||||||
break;
|
break;
|
||||||
case AR8XXX_VER_AR8327:
|
case AR8XXX_VER_AR8327:
|
||||||
priv->mii_lo_first = true;
|
|
||||||
priv->chip = &ar8327_chip;
|
priv->chip = &ar8327_chip;
|
||||||
break;
|
break;
|
||||||
case AR8XXX_VER_AR8337:
|
case AR8XXX_VER_AR8337:
|
||||||
priv->mii_lo_first = true;
|
|
||||||
priv->chip = &ar8327_chip;
|
priv->chip = &ar8327_chip;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user