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)
committerFelix Fietkau <nbd@nbd.name>
Mon, 17 Apr 2023 14:08:49 +0000 (16:08 +0200)
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>
drivers/net/wireless/mediatek/mt76/mt7921/pci.c

index b520cd2581702f9fb8bcae6b074583cd9e1155ad..974412b6f76a2b478bd1ea06851fdf9420082fdd 100644 (file)
@@ -262,6 +262,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)
@@ -271,6 +272,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);