summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRandy Chiu <wchiu@qca.qualcomm.com>2014-07-18 11:16:53 +0800
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-07-25 10:36:59 -0700
commitef9df02c4d6fc869c643f0ec3d29cabc44b0fc71 (patch)
tree8219b61c3cccd0518eb8dc90faae89bd2f6efabb
parent7915462d8e64c68fb8a4137c0a0dc050c8f167cf (diff)
qcacld: [HIF] Unable to download firmware during SU DevTest auto test
Use cold reset instead of warm reset to prevent the abnormal behavior duing usb probe stage. Change-Id: I441f0321ef3865fe932f65d9ff320273c4969ede CRs-Fixed: 692169
-rw-r--r--CORE/SERVICES/HIF/USB/if_usb.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/CORE/SERVICES/HIF/USB/if_usb.c b/CORE/SERVICES/HIF/USB/if_usb.c
index 081b29cd6e0f..e71adc827a4c 100644
--- a/CORE/SERVICES/HIF/USB/if_usb.c
+++ b/CORE/SERVICES/HIF/USB/if_usb.c
@@ -54,6 +54,10 @@
#define AR6320_DEVICE_ID (0x003e)
#define DELAY_FOR_TARGET_READY 200 /* 200ms */
#define DELAY_INT_FOR_HDD_REMOVE 200 /* 200ms */
+#define HIFDiagWriteCOLDRESET(hifdevice) HIFDiagWriteAccess(sc->hif_device, \
+ (ROME_USB_SOC_RESET_CONTROL_COLD_RST_LSB | \
+ ROME_USB_RTC_SOC_BASE_ADDRESS), \
+ SOC_RESET_CONTROL_COLD_RST_SET(1))
unsigned int msienable;
module_param(msienable, int, 0644);
@@ -94,7 +98,8 @@ static int hif_usb_reboot(struct notifier_block *nb, unsigned long val,
{
struct hif_usb_softc *sc;
sc = container_of(nb, struct hif_usb_softc, reboot_notifier);
- HIFDiagWriteWARMRESET(sc->interface, 0, 0);
+ /* do cold reset */
+ HIFDiagWriteCOLDRESET(sc->hif_device);
return NOTIFY_DONE;
}
@@ -240,8 +245,8 @@ static void hif_usb_remove(struct usb_interface *interface)
set_current_state(TASK_RUNNING);
usb_sc->hdd_removed_wait_cnt ++;
}
-
- HIFDiagWriteWARMRESET(interface, 0, 0);
+ /* do cold reset */
+ HIFDiagWriteCOLDRESET(sc->hif_device);
/* wait for target jump to boot code and finish the initialization */
set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout(msecs_to_jiffies(DELAY_FOR_TARGET_READY));
@@ -364,10 +369,7 @@ static int hif_usb_reset_resume(struct usb_interface *intf)
HIF_DEVICE_USB *device = usb_get_intfdata(intf);
struct hif_usb_softc *sc = device->sc;
- HIFDiagWriteAccess(sc->hif_device,
- (ROME_USB_SOC_RESET_CONTROL_COLD_RST_LSB |
- ROME_USB_RTC_SOC_BASE_ADDRESS),
- SOC_RESET_CONTROL_COLD_RST_SET(1));
+ HIFDiagWriteCOLDRESET(sc->hif_device);
return 0;
}