diff options
author | John Crispin <john@openwrt.org> | 2014-12-01 16:15:08 +0000 |
---|---|---|
committer | John Crispin <john@openwrt.org> | 2014-12-01 16:15:08 +0000 |
commit | ecd27db7573fd76347ef62c6d3bacba600e1c0cc (patch) | |
tree | 17d912ca7b0d7f3b23fd1ab496e8877c4fd3ff26 /target/linux/generic/files/drivers/net/phy/ar8216.c | |
parent | ae15531bd245b4db7433d6580ae8af4d99bd806c (diff) | |
download | upstream-ecd27db7573fd76347ef62c6d3bacba600e1c0cc.tar.gz upstream-ecd27db7573fd76347ef62c6d3bacba600e1c0cc.tar.bz2 upstream-ecd27db7573fd76347ef62c6d3bacba600e1c0cc.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>
SVN-Revision: 43471
Diffstat (limited to 'target/linux/generic/files/drivers/net/phy/ar8216.c')
-rw-r--r-- | target/linux/generic/files/drivers/net/phy/ar8216.c | 27 |
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, |