Loading drivers/bus/mhi/controllers/mhi_qcom.c +1 −29 Original line number Diff line number Diff line Loading @@ -195,35 +195,7 @@ static int mhi_init_pci_dev(struct mhi_controller *mhi_cntrl) static int mhi_runtime_suspend(struct device *dev) { int ret = 0; struct mhi_controller *mhi_cntrl = dev_get_drvdata(dev); struct mhi_dev *mhi_dev = mhi_controller_get_devdata(mhi_cntrl); MHI_LOG("Enter\n"); mutex_lock(&mhi_cntrl->pm_mutex); if (!mhi_dev->powered_on) { MHI_LOG("Not fully powered, return success\n"); mutex_unlock(&mhi_cntrl->pm_mutex); return 0; } ret = mhi_pm_suspend(mhi_cntrl); if (ret) { MHI_LOG("Abort due to ret:%d\n", ret); goto exit_runtime_suspend; } ret = mhi_arch_link_off(mhi_cntrl, true); if (ret) MHI_ERR("Failed to Turn off link ret:%d\n", ret); exit_runtime_suspend: mutex_unlock(&mhi_cntrl->pm_mutex); MHI_LOG("Exited with ret:%d\n", ret); return ret; return -EBUSY; } static int mhi_runtime_idle(struct device *dev) Loading drivers/bus/mhi/core/mhi_init.c +22 −0 Original line number Diff line number Diff line Loading @@ -1105,6 +1105,7 @@ int of_register_mhi_controller(struct mhi_controller *mhi_cntrl) struct mhi_chan *mhi_chan; struct mhi_cmd *mhi_cmd; struct mhi_device *mhi_dev; u32 soc_info; if (!mhi_cntrl->of_node) return -EINVAL; Loading Loading @@ -1170,6 +1171,27 @@ int of_register_mhi_controller(struct mhi_controller *mhi_cntrl) mhi_cntrl->unmap_single = mhi_unmap_single_no_bb; } /* read the device info if possible */ if (mhi_cntrl->regs) { ret = mhi_read_reg(mhi_cntrl, mhi_cntrl->regs, SOC_HW_VERSION_OFFS, &soc_info); if (ret) goto error_alloc_dev; mhi_cntrl->family_number = (soc_info & SOC_HW_VERSION_FAM_NUM_BMSK) >> SOC_HW_VERSION_FAM_NUM_SHFT; mhi_cntrl->device_number = (soc_info & SOC_HW_VERSION_DEV_NUM_BMSK) >> SOC_HW_VERSION_DEV_NUM_SHFT; mhi_cntrl->major_version = (soc_info & SOC_HW_VERSION_MAJOR_VER_BMSK) >> SOC_HW_VERSION_MAJOR_VER_SHFT; mhi_cntrl->minor_version = (soc_info & SOC_HW_VERSION_MINOR_VER_BMSK) >> SOC_HW_VERSION_MINOR_VER_SHFT; } /* register controller with mhi_bus */ mhi_dev = mhi_alloc_device(mhi_cntrl); if (!mhi_dev) { Loading drivers/bus/mhi/core/mhi_internal.h +10 −0 Original line number Diff line number Diff line Loading @@ -224,6 +224,16 @@ extern struct bus_type mhi_bus_type; #define BHIE_RXVECSTATUS_STATUS_XFER_COMPL (0x02) #define BHIE_RXVECSTATUS_STATUS_ERROR (0x03) #define SOC_HW_VERSION_OFFS (0x224) #define SOC_HW_VERSION_FAM_NUM_BMSK (0xF0000000) #define SOC_HW_VERSION_FAM_NUM_SHFT (28) #define SOC_HW_VERSION_DEV_NUM_BMSK (0x0FFF0000) #define SOC_HW_VERSION_DEV_NUM_SHFT (16) #define SOC_HW_VERSION_MAJOR_VER_BMSK (0x0000FF00) #define SOC_HW_VERSION_MAJOR_VER_SHFT (8) #define SOC_HW_VERSION_MINOR_VER_BMSK (0x000000FF) #define SOC_HW_VERSION_MINOR_VER_SHFT (0) /* convert ticks to micro seconds by dividing by 19.2 */ #define TIME_TICKS_TO_US(x) (div_u64((x) * 10, 192)) Loading include/linux/mhi.h +4 −0 Original line number Diff line number Diff line Loading @@ -192,6 +192,10 @@ struct mhi_controller { u32 domain; u32 bus; u32 slot; u32 family_number; u32 device_number; u32 major_version; u32 minor_version; /* addressing window */ dma_addr_t iova_start; Loading Loading
drivers/bus/mhi/controllers/mhi_qcom.c +1 −29 Original line number Diff line number Diff line Loading @@ -195,35 +195,7 @@ static int mhi_init_pci_dev(struct mhi_controller *mhi_cntrl) static int mhi_runtime_suspend(struct device *dev) { int ret = 0; struct mhi_controller *mhi_cntrl = dev_get_drvdata(dev); struct mhi_dev *mhi_dev = mhi_controller_get_devdata(mhi_cntrl); MHI_LOG("Enter\n"); mutex_lock(&mhi_cntrl->pm_mutex); if (!mhi_dev->powered_on) { MHI_LOG("Not fully powered, return success\n"); mutex_unlock(&mhi_cntrl->pm_mutex); return 0; } ret = mhi_pm_suspend(mhi_cntrl); if (ret) { MHI_LOG("Abort due to ret:%d\n", ret); goto exit_runtime_suspend; } ret = mhi_arch_link_off(mhi_cntrl, true); if (ret) MHI_ERR("Failed to Turn off link ret:%d\n", ret); exit_runtime_suspend: mutex_unlock(&mhi_cntrl->pm_mutex); MHI_LOG("Exited with ret:%d\n", ret); return ret; return -EBUSY; } static int mhi_runtime_idle(struct device *dev) Loading
drivers/bus/mhi/core/mhi_init.c +22 −0 Original line number Diff line number Diff line Loading @@ -1105,6 +1105,7 @@ int of_register_mhi_controller(struct mhi_controller *mhi_cntrl) struct mhi_chan *mhi_chan; struct mhi_cmd *mhi_cmd; struct mhi_device *mhi_dev; u32 soc_info; if (!mhi_cntrl->of_node) return -EINVAL; Loading Loading @@ -1170,6 +1171,27 @@ int of_register_mhi_controller(struct mhi_controller *mhi_cntrl) mhi_cntrl->unmap_single = mhi_unmap_single_no_bb; } /* read the device info if possible */ if (mhi_cntrl->regs) { ret = mhi_read_reg(mhi_cntrl, mhi_cntrl->regs, SOC_HW_VERSION_OFFS, &soc_info); if (ret) goto error_alloc_dev; mhi_cntrl->family_number = (soc_info & SOC_HW_VERSION_FAM_NUM_BMSK) >> SOC_HW_VERSION_FAM_NUM_SHFT; mhi_cntrl->device_number = (soc_info & SOC_HW_VERSION_DEV_NUM_BMSK) >> SOC_HW_VERSION_DEV_NUM_SHFT; mhi_cntrl->major_version = (soc_info & SOC_HW_VERSION_MAJOR_VER_BMSK) >> SOC_HW_VERSION_MAJOR_VER_SHFT; mhi_cntrl->minor_version = (soc_info & SOC_HW_VERSION_MINOR_VER_BMSK) >> SOC_HW_VERSION_MINOR_VER_SHFT; } /* register controller with mhi_bus */ mhi_dev = mhi_alloc_device(mhi_cntrl); if (!mhi_dev) { Loading
drivers/bus/mhi/core/mhi_internal.h +10 −0 Original line number Diff line number Diff line Loading @@ -224,6 +224,16 @@ extern struct bus_type mhi_bus_type; #define BHIE_RXVECSTATUS_STATUS_XFER_COMPL (0x02) #define BHIE_RXVECSTATUS_STATUS_ERROR (0x03) #define SOC_HW_VERSION_OFFS (0x224) #define SOC_HW_VERSION_FAM_NUM_BMSK (0xF0000000) #define SOC_HW_VERSION_FAM_NUM_SHFT (28) #define SOC_HW_VERSION_DEV_NUM_BMSK (0x0FFF0000) #define SOC_HW_VERSION_DEV_NUM_SHFT (16) #define SOC_HW_VERSION_MAJOR_VER_BMSK (0x0000FF00) #define SOC_HW_VERSION_MAJOR_VER_SHFT (8) #define SOC_HW_VERSION_MINOR_VER_BMSK (0x000000FF) #define SOC_HW_VERSION_MINOR_VER_SHFT (0) /* convert ticks to micro seconds by dividing by 19.2 */ #define TIME_TICKS_TO_US(x) (div_u64((x) * 10, 192)) Loading
include/linux/mhi.h +4 −0 Original line number Diff line number Diff line Loading @@ -192,6 +192,10 @@ struct mhi_controller { u32 domain; u32 bus; u32 slot; u32 family_number; u32 device_number; u32 major_version; u32 minor_version; /* addressing window */ dma_addr_t iova_start; Loading