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

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
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -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;
}

+0 −1
Original line number Diff line number Diff line
@@ -326,7 +326,6 @@ struct vnt_private {
	u8 byRxAntennaMode;
	u8 byTxAntennaMode;
	u8 byRadioCtl;
	u8 bHWRadioOff;

	/* IFS & Cw */
	u32 uSIFS;  /* Current SIFS */
+3 −12
Original line number Diff line number Diff line
@@ -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);
	}

	dev_dbg(&priv->usb->dev, "<----INIbInitAdapter Exit\n");