--- zzzz-none-000/linux-4.9.279/drivers/misc/mei/pci-txe.c 2021-08-08 06:38:54.000000000 +0000 +++ puma7-atom-6591-750/linux-4.9.279/drivers/misc/mei/pci-txe.c 2023-02-08 11:43:42.000000000 +0000 @@ -39,7 +39,7 @@ static const struct pci_device_id mei_txe_pci_tbl[] = { {PCI_VDEVICE(INTEL, 0x0F18)}, /* Baytrail */ {PCI_VDEVICE(INTEL, 0x2298)}, /* Cherrytrail */ - + {PCI_VDEVICE(INTEL, 0x2B98)}, /* Puma7 */ {0, } }; MODULE_DEVICE_TABLE(pci, mei_txe_pci_tbl); @@ -149,6 +149,10 @@ goto release_irq; } + err = mei_txe_dma_setup(dev); + if (err) + goto release_irq; + pm_runtime_set_autosuspend_delay(&pdev->dev, MEI_TXI_RPM_TIMEOUT); pm_runtime_use_autosuspend(&pdev->dev); @@ -174,6 +178,8 @@ mei_stop(dev); release_irq: + mei_txe_dma_unset(dev); + mei_cancel_work(dev); /* disable interrupts */ @@ -228,6 +234,8 @@ free_irq(pdev->irq, dev); pci_disable_msi(pdev); + mei_txe_dma_unset(dev); + pci_set_drvdata(pdev, NULL); mei_txe_pci_iounmap(pdev, hw); @@ -266,6 +274,7 @@ { struct pci_dev *pdev = to_pci_dev(device); struct mei_device *dev; + struct mei_txe_hw *hw; int err; dev = pci_get_drvdata(pdev); @@ -293,6 +302,12 @@ return err; } + hw = to_txe_hw(dev); + err = mei_txe_setup_satt2(dev, + dma_to_phys(dev->dev, hw->pool_paddr), hw->pool_size); + if (err) + return err; + err = mei_restart(dev); return err;