Search Linux Wireless

[PATCH 3/5] staging: vt6656: put radio power off and on into correct state every time.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxx>
---
 drivers/staging/vt6656/card.c     |  7 ++++---
 drivers/staging/vt6656/device.h   |  1 -
 drivers/staging/vt6656/main_usb.c | 15 +++------------
 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");
 
-- 
2.0.1

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux