Loading arch/arm64/boot/dts/qcom/sm8150-sdx50m.dtsi +1 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ qcom,smmu-cfg = <0>; memory-region = <&mhi_mem>; mhi,use-bb; mhi,allow-m1; /* use legacy mode for suspends */ mhi,buffer-len = <0x8000>; qcom,addr-win = <0x0 0xa0000000 0x0 0xa4bfffff>; Loading drivers/bus/mhi/controllers/mhi_arch_qcom.c +9 −6 Original line number Diff line number Diff line Loading @@ -438,10 +438,11 @@ int mhi_arch_pcie_init(struct mhi_controller *mhi_cntrl) return -EINVAL; } /* register with pcie rc for WAKE# events */ /* register with pcie rc for WAKE# or link state events */ reg_event = &arch_info->pcie_reg_event; reg_event->events = MSM_PCIE_EVENT_WAKEUP | MSM_PCIE_EVENT_L1SS_TIMEOUT; reg_event->events = mhi_dev->allow_m1 ? (MSM_PCIE_EVENT_WAKEUP) : (MSM_PCIE_EVENT_WAKEUP | MSM_PCIE_EVENT_L1SS_TIMEOUT); reg_event->user = mhi_dev->pci_dev; reg_event->callback = mhi_arch_pci_link_state_cb; Loading Loading @@ -658,6 +659,7 @@ int mhi_arch_link_suspend(struct mhi_controller *mhi_cntrl) MHI_LOG("Entered\n"); /* disable inactivity timer */ if (!mhi_dev->allow_m1) msm_pcie_l1ss_timeout_disable(pci_dev); switch (mhi_dev->suspend_mode) { Loading Loading @@ -686,7 +688,7 @@ int mhi_arch_link_suspend(struct mhi_controller *mhi_cntrl) } exit_suspend: if (ret) if (ret && !mhi_dev->allow_m1) msm_pcie_l1ss_timeout_enable(pci_dev); MHI_LOG("Exited with ret:%d\n", ret); Loading Loading @@ -762,6 +764,7 @@ int mhi_arch_link_resume(struct mhi_controller *mhi_cntrl) return ret; } if (!mhi_dev->allow_m1) msm_pcie_l1ss_timeout_enable(pci_dev); MHI_LOG("Exited\n"); Loading drivers/bus/mhi/controllers/mhi_qcom.c +1 −0 Original line number Diff line number Diff line Loading @@ -702,6 +702,7 @@ static struct mhi_controller *mhi_register_controller(struct pci_dev *pci_dev) goto error_register; use_bb = of_property_read_bool(of_node, "mhi,use-bb"); mhi_dev->allow_m1 = of_property_read_bool(of_node, "mhi,allow-m1"); /* * if s1 translation enabled or using bounce buffer pull iova addr Loading drivers/bus/mhi/controllers/mhi_qcom.h +1 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ struct mhi_dev { int resn; void *arch_info; bool powered_on; bool allow_m1; dma_addr_t iova_start; dma_addr_t iova_stop; enum mhi_suspend_mode suspend_mode; Loading Loading
arch/arm64/boot/dts/qcom/sm8150-sdx50m.dtsi +1 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ qcom,smmu-cfg = <0>; memory-region = <&mhi_mem>; mhi,use-bb; mhi,allow-m1; /* use legacy mode for suspends */ mhi,buffer-len = <0x8000>; qcom,addr-win = <0x0 0xa0000000 0x0 0xa4bfffff>; Loading
drivers/bus/mhi/controllers/mhi_arch_qcom.c +9 −6 Original line number Diff line number Diff line Loading @@ -438,10 +438,11 @@ int mhi_arch_pcie_init(struct mhi_controller *mhi_cntrl) return -EINVAL; } /* register with pcie rc for WAKE# events */ /* register with pcie rc for WAKE# or link state events */ reg_event = &arch_info->pcie_reg_event; reg_event->events = MSM_PCIE_EVENT_WAKEUP | MSM_PCIE_EVENT_L1SS_TIMEOUT; reg_event->events = mhi_dev->allow_m1 ? (MSM_PCIE_EVENT_WAKEUP) : (MSM_PCIE_EVENT_WAKEUP | MSM_PCIE_EVENT_L1SS_TIMEOUT); reg_event->user = mhi_dev->pci_dev; reg_event->callback = mhi_arch_pci_link_state_cb; Loading Loading @@ -658,6 +659,7 @@ int mhi_arch_link_suspend(struct mhi_controller *mhi_cntrl) MHI_LOG("Entered\n"); /* disable inactivity timer */ if (!mhi_dev->allow_m1) msm_pcie_l1ss_timeout_disable(pci_dev); switch (mhi_dev->suspend_mode) { Loading Loading @@ -686,7 +688,7 @@ int mhi_arch_link_suspend(struct mhi_controller *mhi_cntrl) } exit_suspend: if (ret) if (ret && !mhi_dev->allow_m1) msm_pcie_l1ss_timeout_enable(pci_dev); MHI_LOG("Exited with ret:%d\n", ret); Loading Loading @@ -762,6 +764,7 @@ int mhi_arch_link_resume(struct mhi_controller *mhi_cntrl) return ret; } if (!mhi_dev->allow_m1) msm_pcie_l1ss_timeout_enable(pci_dev); MHI_LOG("Exited\n"); Loading
drivers/bus/mhi/controllers/mhi_qcom.c +1 −0 Original line number Diff line number Diff line Loading @@ -702,6 +702,7 @@ static struct mhi_controller *mhi_register_controller(struct pci_dev *pci_dev) goto error_register; use_bb = of_property_read_bool(of_node, "mhi,use-bb"); mhi_dev->allow_m1 = of_property_read_bool(of_node, "mhi,allow-m1"); /* * if s1 translation enabled or using bounce buffer pull iova addr Loading
drivers/bus/mhi/controllers/mhi_qcom.h +1 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ struct mhi_dev { int resn; void *arch_info; bool powered_on; bool allow_m1; dma_addr_t iova_start; dma_addr_t iova_stop; enum mhi_suspend_mode suspend_mode; Loading