diff options
author | Andrea Merello <andrea.merello@gmail.com> | 2014-03-26 16:02:05 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-03-27 14:20:08 -0400 |
commit | ff3cbc2cb606c8f804b611291efe207d07275a18 (patch) | |
tree | d3596097c4113e4c4b7ff0dacd69c78aafda0bdc | |
parent | fc32ac911ef49bb716ba52fab6b294f7a412e6be (diff) |
rtl8180: introduce functions for setting ANAPARAM 2 and 3 params
rtl8180 has one register for analog converters setting ,rtl8185 has
two and rtl8187se has three.
Setting those registers require more than a simple write, and for
one of them a function is already provided.
This patch introduces functions for the other two.
rtl8187se will use them. rtl8185 doesen't yet, but should
Signed-off-by: Andrea Merello <andrea.merello@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/rtl818x/rtl8180/dev.c | 40 | ||||
-rw-r--r-- | drivers/net/wireless/rtl818x/rtl8180/rtl8180.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/rtl818x/rtl8180/rtl8225.c | 1 |
3 files changed, 42 insertions, 0 deletions
diff --git a/drivers/net/wireless/rtl818x/rtl8180/dev.c b/drivers/net/wireless/rtl818x/rtl8180/dev.c index 740a58308a90..a3b67e656e59 100644 --- a/drivers/net/wireless/rtl818x/rtl8180/dev.c +++ b/drivers/net/wireless/rtl818x/rtl8180/dev.c | |||
@@ -523,6 +523,46 @@ static void rtl8180_tx(struct ieee80211_hw *dev, | |||
523 | } | 523 | } |
524 | } | 524 | } |
525 | 525 | ||
526 | static void rtl8180_set_anaparam3(struct rtl8180_priv *priv, u16 anaparam3) | ||
527 | { | ||
528 | u8 reg; | ||
529 | |||
530 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, | ||
531 | RTL818X_EEPROM_CMD_CONFIG); | ||
532 | |||
533 | reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); | ||
534 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, | ||
535 | reg | RTL818X_CONFIG3_ANAPARAM_WRITE); | ||
536 | |||
537 | rtl818x_iowrite16(priv, &priv->map->ANAPARAM3, anaparam3); | ||
538 | |||
539 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, | ||
540 | reg & ~RTL818X_CONFIG3_ANAPARAM_WRITE); | ||
541 | |||
542 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, | ||
543 | RTL818X_EEPROM_CMD_NORMAL); | ||
544 | } | ||
545 | |||
546 | void rtl8180_set_anaparam2(struct rtl8180_priv *priv, u32 anaparam2) | ||
547 | { | ||
548 | u8 reg; | ||
549 | |||
550 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, | ||
551 | RTL818X_EEPROM_CMD_CONFIG); | ||
552 | |||
553 | reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); | ||
554 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, | ||
555 | reg | RTL818X_CONFIG3_ANAPARAM_WRITE); | ||
556 | |||
557 | rtl818x_iowrite32(priv, &priv->map->ANAPARAM2, anaparam2); | ||
558 | |||
559 | rtl818x_iowrite8(priv, &priv->map->CONFIG3, | ||
560 | reg & ~RTL818X_CONFIG3_ANAPARAM_WRITE); | ||
561 | |||
562 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, | ||
563 | RTL818X_EEPROM_CMD_NORMAL); | ||
564 | } | ||
565 | |||
526 | void rtl8180_set_anaparam(struct rtl8180_priv *priv, u32 anaparam) | 566 | void rtl8180_set_anaparam(struct rtl8180_priv *priv, u32 anaparam) |
527 | { | 567 | { |
528 | u8 reg; | 568 | u8 reg; |
diff --git a/drivers/net/wireless/rtl818x/rtl8180/rtl8180.h b/drivers/net/wireless/rtl818x/rtl8180/rtl8180.h index d8f92de19634..0ef3fc758928 100644 --- a/drivers/net/wireless/rtl818x/rtl8180/rtl8180.h +++ b/drivers/net/wireless/rtl818x/rtl8180/rtl8180.h | |||
@@ -145,6 +145,7 @@ struct rtl8180_priv { | |||
145 | 145 | ||
146 | void rtl8180_write_phy(struct ieee80211_hw *dev, u8 addr, u32 data); | 146 | void rtl8180_write_phy(struct ieee80211_hw *dev, u8 addr, u32 data); |
147 | void rtl8180_set_anaparam(struct rtl8180_priv *priv, u32 anaparam); | 147 | void rtl8180_set_anaparam(struct rtl8180_priv *priv, u32 anaparam); |
148 | void rtl8180_set_anaparam2(struct rtl8180_priv *priv, u32 anaparam2); | ||
148 | 149 | ||
149 | static inline u8 rtl818x_ioread8(struct rtl8180_priv *priv, u8 __iomem *addr) | 150 | static inline u8 rtl818x_ioread8(struct rtl8180_priv *priv, u8 __iomem *addr) |
150 | { | 151 | { |
diff --git a/drivers/net/wireless/rtl818x/rtl8180/rtl8225.c b/drivers/net/wireless/rtl818x/rtl8180/rtl8225.c index 1c0fe238d995..9bda5bc78eda 100644 --- a/drivers/net/wireless/rtl818x/rtl8180/rtl8225.c +++ b/drivers/net/wireless/rtl818x/rtl8180/rtl8225.c | |||
@@ -282,6 +282,7 @@ static void rtl8225_rf_set_tx_power(struct ieee80211_hw *dev, int channel) | |||
282 | 282 | ||
283 | msleep(1); /* FIXME: optional? */ | 283 | msleep(1); /* FIXME: optional? */ |
284 | 284 | ||
285 | /* TODO: use set_anaparam2 dev.c_func*/ | ||
285 | /* anaparam2 on */ | 286 | /* anaparam2 on */ |
286 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); | 287 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); |
287 | reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); | 288 | reg = rtl818x_ioread8(priv, &priv->map->CONFIG3); |