aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/files/drivers/net/phy/ar8216.c
diff options
context:
space:
mode:
authorJohn Crispin <blogic@openwrt.org>2014-12-01 16:15:08 +0000
committerJohn Crispin <blogic@openwrt.org>2014-12-01 16:15:08 +0000
commit9905c97216318e8a313863154c5842e2e6090e44 (patch)
tree0525e61c0d49372022287809e2c854c5c8f18de9 /target/linux/generic/files/drivers/net/phy/ar8216.c
parentdc7eaeabb78147524dc11d344462cf3d454a6afd (diff)
downloadmaster-187ad058-9905c97216318e8a313863154c5842e2e6090e44.tar.gz
master-187ad058-9905c97216318e8a313863154c5842e2e6090e44.tar.bz2
master-187ad058-9905c97216318e8a313863154c5842e2e6090e44.zip
ar8216: factor out reg_port_stats_base parameters to ar8xxx_chip
Factor out reg_port_stats_base parameters to ar8xxx_chip. Remove related chip_is_... checks. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@43471 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/generic/files/drivers/net/phy/ar8216.c')
-rw-r--r--target/linux/generic/files/drivers/net/phy/ar8216.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/target/linux/generic/files/drivers/net/phy/ar8216.c b/target/linux/generic/files/drivers/net/phy/ar8216.c
index 961803c285..558b9f7718 100644
--- a/target/linux/generic/files/drivers/net/phy/ar8216.c
+++ b/target/linux/generic/files/drivers/net/phy/ar8216.c
@@ -76,6 +76,10 @@ struct ar8xxx_chip {
bool config_at_probe;
bool mii_lo_first;
+ /* parameters to calculate REG_PORT_STATS_BASE */
+ unsigned reg_port_stats_start;
+ unsigned reg_port_stats_length;
+
int (*hw_init)(struct ar8xxx_priv *priv);
void (*cleanup)(struct ar8xxx_priv *priv);
@@ -577,13 +581,8 @@ ar8xxx_mib_fetch_port_stat(struct ar8xxx_priv *priv, int port, bool flush)
lockdep_assert_held(&priv->mib_lock);
- if (chip_is_ar8327(priv) || chip_is_ar8337(priv))
- base = AR8327_REG_PORT_STATS_BASE(port);
- else if (chip_is_ar8236(priv) ||
- chip_is_ar8316(priv))
- base = AR8236_REG_PORT_STATS_BASE(port);
- else
- base = AR8216_REG_PORT_STATS_BASE(port);
+ base = priv->chip->reg_port_stats_start +
+ priv->chip->reg_port_stats_length * port;
mib_stats = &priv->mib_stats[port * priv->chip->num_mibs];
for (i = 0; i < priv->chip->num_mibs; i++) {
@@ -885,6 +884,9 @@ ar8216_init_port(struct ar8xxx_priv *priv, int port)
static const struct ar8xxx_chip ar8216_chip = {
.caps = AR8XXX_CAP_MIB_COUNTERS,
+ .reg_port_stats_start = 0x19000,
+ .reg_port_stats_length = 0xa0,
+
.hw_init = ar8216_hw_init,
.init_globals = ar8216_init_globals,
.init_port = ar8216_init_port,
@@ -953,6 +955,10 @@ ar8236_init_globals(struct ar8xxx_priv *priv)
static const struct ar8xxx_chip ar8236_chip = {
.caps = AR8XXX_CAP_MIB_COUNTERS,
+
+ .reg_port_stats_start = 0x20000,
+ .reg_port_stats_length = 0x100,
+
.hw_init = ar8216_hw_init,
.init_globals = ar8236_init_globals,
.init_port = ar8216_init_port,
@@ -1038,6 +1044,10 @@ ar8316_init_globals(struct ar8xxx_priv *priv)
static const struct ar8xxx_chip ar8316_chip = {
.caps = AR8XXX_CAP_GIGE | AR8XXX_CAP_MIB_COUNTERS,
+
+ .reg_port_stats_start = 0x20000,
+ .reg_port_stats_length = 0x100,
+
.hw_init = ar8316_hw_init,
.init_globals = ar8316_init_globals,
.init_port = ar8216_init_port,
@@ -1831,6 +1841,9 @@ static const struct ar8xxx_chip ar8327_chip = {
.config_at_probe = true,
.mii_lo_first = true,
+ .reg_port_stats_start = 0x1000,
+ .reg_port_stats_length = 0x100,
+
.hw_init = ar8327_hw_init,
.cleanup = ar8327_cleanup,
.init_globals = ar8327_init_globals,