Commit d7f2d8f6 authored by Malcolm Priestley's avatar Malcolm Priestley Committed by Greg Kroah-Hartman

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: default avatarMalcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 409bc044
...@@ -750,6 +750,8 @@ int vnt_radio_power_off(struct vnt_private *priv) ...@@ -750,6 +750,8 @@ int vnt_radio_power_off(struct vnt_private *priv)
vnt_set_deep_sleep(priv); vnt_set_deep_sleep(priv);
vnt_mac_reg_bits_on(priv, MAC_REG_GPIOCTL1, GPIO3_INTMD);
return ret; return ret;
} }
...@@ -769,9 +771,6 @@ int vnt_radio_power_on(struct vnt_private *priv) ...@@ -769,9 +771,6 @@ int vnt_radio_power_on(struct vnt_private *priv)
{ {
int ret = true; int ret = true;
if (priv->bHWRadioOff == true)
return false;
vnt_exit_deep_sleep(priv); vnt_exit_deep_sleep(priv);
vnt_mac_reg_bits_on(priv, MAC_REG_HOSTCR, HOSTCR_RXON); vnt_mac_reg_bits_on(priv, MAC_REG_HOSTCR, HOSTCR_RXON);
...@@ -788,6 +787,8 @@ int vnt_radio_power_on(struct vnt_private *priv) ...@@ -788,6 +787,8 @@ int vnt_radio_power_on(struct vnt_private *priv)
break; break;
} }
vnt_mac_reg_bits_off(priv, MAC_REG_GPIOCTL1, GPIO3_INTMD);
return ret; return ret;
} }
......
...@@ -326,7 +326,6 @@ struct vnt_private { ...@@ -326,7 +326,6 @@ struct vnt_private {
u8 byRxAntennaMode; u8 byRxAntennaMode;
u8 byTxAntennaMode; u8 byTxAntennaMode;
u8 byRadioCtl; u8 byRadioCtl;
u8 bHWRadioOff;
/* IFS & Cw */ /* IFS & Cw */
u32 uSIFS; /* Current SIFS */ u32 uSIFS; /* Current SIFS */
......
...@@ -354,7 +354,6 @@ static int device_init_registers(struct vnt_private *priv) ...@@ -354,7 +354,6 @@ static int device_init_registers(struct vnt_private *priv)
vnt_set_short_slot_time(priv); vnt_set_short_slot_time(priv);
priv->byRadioCtl = priv->abyEEPROM[EEP_OFS_RADIOCTL]; priv->byRadioCtl = priv->abyEEPROM[EEP_OFS_RADIOCTL];
priv->bHWRadioOff = false;
if ((priv->byRadioCtl & EEP_RADIOCTL_ENABLE) != 0) { if ((priv->byRadioCtl & EEP_RADIOCTL_ENABLE) != 0) {
status = vnt_control_in(priv, MESSAGE_TYPE_READ, status = vnt_control_in(priv, MESSAGE_TYPE_READ,
...@@ -363,16 +362,12 @@ static int device_init_registers(struct vnt_private *priv) ...@@ -363,16 +362,12 @@ static int device_init_registers(struct vnt_private *priv)
if (status != STATUS_SUCCESS) if (status != STATUS_SUCCESS)
return false; return false;
if ((tmp & GPIO3_DATA) == 0) { if ((tmp & GPIO3_DATA) == 0)
priv->bHWRadioOff = true;
vnt_mac_reg_bits_on(priv, MAC_REG_GPIOCTL1, vnt_mac_reg_bits_on(priv, MAC_REG_GPIOCTL1,
GPIO3_INTMD); GPIO3_INTMD);
} else { else
vnt_mac_reg_bits_off(priv, MAC_REG_GPIOCTL1, vnt_mac_reg_bits_off(priv, MAC_REG_GPIOCTL1,
GPIO3_INTMD); GPIO3_INTMD);
priv->bHWRadioOff = false;
}
} }
vnt_mac_set_led(priv, LEDSTS_TMLEN, 0x38); vnt_mac_set_led(priv, LEDSTS_TMLEN, 0x38);
...@@ -381,11 +376,7 @@ static int device_init_registers(struct vnt_private *priv) ...@@ -381,11 +376,7 @@ static int device_init_registers(struct vnt_private *priv)
vnt_mac_reg_bits_on(priv, MAC_REG_GPIOCTL0, 0x01); 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"); dev_dbg(&priv->usb->dev, "<----INIbInitAdapter Exit\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment