summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorMalcolm Priestley <tvboxspy@gmail.com>2014-07-18 22:00:54 (GMT)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-07-18 23:11:28 (GMT)
commitd7f2d8f61ec7e3f8aa6f6cd2eb28c47b38f33486 (patch)
tree05bb2d83e2b8cbac1f09acd6680116764647ae8a /drivers
parent409bc044a4d9ace33650f6785780b0a0d542325a (diff)
downloadlinux-d7f2d8f61ec7e3f8aa6f6cd2eb28c47b38f33486.tar.xz
staging: vt6656: put radio power off and on into correct state every time.
When radio is off bit GPIO3_INTMD should be on and off when radio is on. Add these to the tail of vnt_radio_power_off and vnt_radio_power_on and remove variable bHWRadioOff. In device_init_registers just check GPIO3_DATA are in correct state and always power on. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/staging/vt6656/card.c7
-rw-r--r--drivers/staging/vt6656/device.h1
-rw-r--r--drivers/staging/vt6656/main_usb.c15
3 files changed, 7 insertions, 16 deletions
diff --git a/drivers/staging/vt6656/card.c b/drivers/staging/vt6656/card.c
index ca77a19..19a7931 100644
--- a/drivers/staging/vt6656/card.c
+++ b/drivers/staging/vt6656/card.c
@@ -750,6 +750,8 @@ int vnt_radio_power_off(struct vnt_private *priv)
vnt_set_deep_sleep(priv);
+ vnt_mac_reg_bits_on(priv, MAC_REG_GPIOCTL1, GPIO3_INTMD);
+
return ret;
}
@@ -769,9 +771,6 @@ int vnt_radio_power_on(struct vnt_private *priv)
{
int ret = true;
- if (priv->bHWRadioOff == true)
- return false;
-
vnt_exit_deep_sleep(priv);
vnt_mac_reg_bits_on(priv, MAC_REG_HOSTCR, HOSTCR_RXON);
@@ -788,6 +787,8 @@ int vnt_radio_power_on(struct vnt_private *priv)
break;
}
+ vnt_mac_reg_bits_off(priv, MAC_REG_GPIOCTL1, GPIO3_INTMD);
+
return ret;
}
diff --git a/drivers/staging/vt6656/device.h b/drivers/staging/vt6656/device.h
index 69cac95..ffcbaca 100644
--- a/drivers/staging/vt6656/device.h
+++ b/drivers/staging/vt6656/device.h
@@ -326,7 +326,6 @@ struct vnt_private {
u8 byRxAntennaMode;
u8 byTxAntennaMode;
u8 byRadioCtl;
- u8 bHWRadioOff;
/* IFS & Cw */
u32 uSIFS; /* Current SIFS */
diff --git a/drivers/staging/vt6656/main_usb.c b/drivers/staging/vt6656/main_usb.c
index 68367414..0802ecd 100644
--- a/drivers/staging/vt6656/main_usb.c
+++ b/drivers/staging/vt6656/main_usb.c
@@ -354,7 +354,6 @@ static int device_init_registers(struct vnt_private *priv)
vnt_set_short_slot_time(priv);
priv->byRadioCtl = priv->abyEEPROM[EEP_OFS_RADIOCTL];
- priv->bHWRadioOff = false;
if ((priv->byRadioCtl & EEP_RADIOCTL_ENABLE) != 0) {
status = vnt_control_in(priv, MESSAGE_TYPE_READ,
@@ -363,16 +362,12 @@ static int device_init_registers(struct vnt_private *priv)
if (status != STATUS_SUCCESS)
return false;
- if ((tmp & GPIO3_DATA) == 0) {
- priv->bHWRadioOff = true;
+ if ((tmp & GPIO3_DATA) == 0)
vnt_mac_reg_bits_on(priv, MAC_REG_GPIOCTL1,
GPIO3_INTMD);
- } else {
+ else
vnt_mac_reg_bits_off(priv, MAC_REG_GPIOCTL1,
GPIO3_INTMD);
- priv->bHWRadioOff = false;
- }
-
}
vnt_mac_set_led(priv, LEDSTS_TMLEN, 0x38);
@@ -381,11 +376,7 @@ static int device_init_registers(struct vnt_private *priv)
vnt_mac_reg_bits_on(priv, MAC_REG_GPIOCTL0, 0x01);
- if (priv->bHWRadioOff == true) {
- vnt_radio_power_off(priv);
- } else {
- vnt_radio_power_on(priv);
- }
+ vnt_radio_power_on(priv);
dev_dbg(&priv->usb->dev, "<----INIbInitAdapter Exit\n");