mt76x0: disable HW before probe
authorStanislaw Gruszka <sgruszka@redhat.com>
Tue, 31 Jul 2018 12:41:03 +0000 (14:41 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 2 Aug 2018 18:51:04 +0000 (21:51 +0300)
Disable HW before probe, otherwise after reboot we will fail
to initialize MCU.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/mediatek/mt76/mt76x0/init.c
drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0.h
drivers/net/wireless/mediatek/mt76/mt76x0/usb.c

index b65b76d..7cdb3e7 100644 (file)
@@ -62,7 +62,7 @@ mt76x0_set_wlan_state(struct mt76x0_dev *dev, u32 val, bool enable)
                dev_err(dev->mt76.dev, "Error: PLL and XTAL check failed!\n");
 }
 
-static void mt76x0_chip_onoff(struct mt76x0_dev *dev, bool enable, bool reset)
+void mt76x0_chip_onoff(struct mt76x0_dev *dev, bool enable, bool reset)
 {
        u32 val;
 
index 49b82a2..9e60fcb 100644 (file)
@@ -288,6 +288,7 @@ struct mt76x0_dev *mt76x0_alloc_device(struct device *dev);
 int mt76x0_init_hardware(struct mt76x0_dev *dev);
 int mt76x0_register_device(struct mt76x0_dev *dev);
 void mt76x0_cleanup(struct mt76x0_dev *dev);
+void mt76x0_chip_onoff(struct mt76x0_dev *dev, bool enable, bool reset);
 
 int mt76x0_mac_start(struct mt76x0_dev *dev);
 void mt76x0_mac_stop(struct mt76x0_dev *dev);
index 0871fde..7a635cd 100644 (file)
@@ -283,6 +283,10 @@ static int mt76x0_probe(struct usb_interface *usb_intf,
        ret = mt76x0_assign_pipes(usb_intf, dev);
        if (ret)
                goto err;
+
+       /* Disable the HW, otherwise MCU fail to initalize on hot reboot */
+       mt76x0_chip_onoff(dev, false, false);
+
        ret = mt76x0_wait_asic_ready(dev);
        if (ret)
                goto err;