]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: mt76: mt7921e: Set memory space enable in PCI_COMMAND if unset
authorMario Limonciello <mario.limonciello@amd.com>
Wed, 29 Mar 2023 19:57:58 +0000 (14:57 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 11 May 2023 14:10:48 +0000 (23:10 +0900)
commit 09d4d6da1b65d09414e7bce61459593f3c80ead1 upstream.

When the BIOS has been configured for Fast Boot, systems with mt7921e
have non-functional wifi.  Turning on Fast boot caused both bus master
enable and memory space enable bits in PCI_COMMAND not to get configured.

The mt7921 driver already sets bus master enable, but explicitly check
and set memory access enable as well to fix this problem.

Tested-by: Anson Tsao <anson.tsao@amd.com>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Acked-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/wireless/mediatek/mt76/mt7921/pci.c

index 5c23c827abe476df6f5f7f5b53aeeeb4af5313e5..41be108e1d5a1ef1d2a051ac6519adecbb093795 100644 (file)
@@ -263,6 +263,7 @@ static int mt7921_pci_probe(struct pci_dev *pdev,
        struct mt76_dev *mdev;
        u8 features;
        int ret;
+       u16 cmd;
 
        ret = pcim_enable_device(pdev);
        if (ret)
@@ -272,6 +273,11 @@ static int mt7921_pci_probe(struct pci_dev *pdev,
        if (ret)
                return ret;
 
+       pci_read_config_word(pdev, PCI_COMMAND, &cmd);
+       if (!(cmd & PCI_COMMAND_MEMORY)) {
+               cmd |= PCI_COMMAND_MEMORY;
+               pci_write_config_word(pdev, PCI_COMMAND, cmd);
+       }
        pci_set_master(pdev);
 
        ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_ALL_TYPES);