--- zzzz-none-000/linux-5.15.111/drivers/misc/mei/pci-txe.c 2023-05-11 14:00:40.000000000 +0000 +++ puma7-atom-6670-761/linux-5.15.111/drivers/misc/mei/pci-txe.c 2024-02-07 10:23:07.000000000 +0000 @@ -16,6 +16,7 @@ #include #include #include +#include #include @@ -26,7 +27,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); @@ -115,6 +116,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); @@ -147,6 +152,8 @@ stop: mei_stop(dev); release_irq: + mei_txe_dma_unset(dev); + mei_cancel_work(dev); mei_disable_interrupts(dev); free_irq(pdev->irq, dev); @@ -208,6 +215,8 @@ mei_disable_interrupts(dev); free_irq(pdev->irq, dev); + mei_txe_dma_unset(dev); + mei_deregister(dev); } @@ -237,6 +246,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); @@ -264,6 +274,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;