aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoic Poulain <loic.poulain@linaro.org>2021-03-19 16:27:35 +0100
committerLoic Poulain <loic.poulain@linaro.org>2021-03-19 16:27:35 +0100
commiteb91750972ca1183e5dc1d853501b517748b5ab2 (patch)
tree39e1886771019a2e4e4b7777c66cb5e83b287af5
parentbd0ae2abd2f94fb129ade577e30701d505d3b71b (diff)
bus: mhi: pci_generic: Add support for shutdownsdx55-v152
Deinit the device on shutdown to halt any MHI operation on device side. That fixes floating device state with some hosts that do not shutdown PCIe power on reboot. Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
-rw-r--r--drivers/bus/mhi/pci_generic.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/bus/mhi/pci_generic.c b/drivers/bus/mhi/pci_generic.c
index cbd2224b3790..b104ab8e3352 100644
--- a/drivers/bus/mhi/pci_generic.c
+++ b/drivers/bus/mhi/pci_generic.c
@@ -532,6 +532,12 @@ static void mhi_pci_remove(struct pci_dev *pdev)
mhi_unregister_controller(mhi_cntrl);
}
+static void mhi_pci_shutdown(struct pci_dev *pdev)
+{
+ mhi_pci_remove(pdev);
+ pci_set_power_state(pdev, PCI_D3hot);
+}
+
static void mhi_pci_reset_prepare(struct pci_dev *pdev)
{
struct mhi_pci_device *mhi_pdev = pci_get_drvdata(pdev);
@@ -704,6 +710,7 @@ static struct pci_driver mhi_pci_driver = {
.id_table = mhi_pci_id_table,
.probe = mhi_pci_probe,
.remove = mhi_pci_remove,
+ .shutdown = mhi_pci_shutdown,
.err_handler = &mhi_pci_err_handler,
.driver.pm = &mhi_pci_pm_ops
};