Loading drivers/bus/mhi/controllers/mhi_arch_qcom.c +23 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ struct arch_info { struct pci_saved_state *pcie_state; async_cookie_t cookie; void *boot_ipc_log; void *tsync_ipc_log; struct mhi_device *boot_dev; struct mhi_link_info current_link_info; struct work_struct bw_scale_work; Loading @@ -41,6 +42,8 @@ struct arch_info { #define DLOG "Dev->Host: " #define HLOG "Host: " #define MHI_TSYNC_LOG_PAGES (10) #ifdef CONFIG_MHI_DEBUG #define MHI_IPC_LOG_PAGES (100) Loading Loading @@ -72,6 +75,18 @@ static int mhi_arch_pm_notifier(struct notifier_block *nb, return NOTIFY_DONE; } void mhi_arch_timesync_log(struct mhi_controller *mhi_cntrl, u64 remote_time) { struct mhi_dev *mhi_dev = mhi_controller_get_devdata(mhi_cntrl); struct arch_info *arch_info = mhi_dev->arch_info; if (remote_time != U64_MAX) ipc_log_string(arch_info->tsync_ipc_log, "%6u.%06lu 0x%llx", REMOTE_TICKS_TO_SEC(remote_time), REMOTE_TIME_REMAINDER_US(remote_time), remote_time); } static int mhi_arch_set_bus_request(struct mhi_controller *mhi_cntrl, int index) { struct mhi_dev *mhi_dev = mhi_controller_get_devdata(mhi_cntrl); Loading Loading @@ -452,6 +467,14 @@ int mhi_arch_pcie_init(struct mhi_controller *mhi_cntrl) node, 0); mhi_cntrl->log_lvl = mhi_ipc_log_lvl; snprintf(node, sizeof(node), "mhi_tsync_%04x_%02u.%02u.%02u", mhi_cntrl->dev_id, mhi_cntrl->domain, mhi_cntrl->bus, mhi_cntrl->slot); arch_info->tsync_ipc_log = ipc_log_context_create( MHI_TSYNC_LOG_PAGES, node, 0); if (arch_info->tsync_ipc_log) mhi_cntrl->tsync_log = mhi_arch_timesync_log; /* register for bus scale if defined */ arch_info->msm_bus_pdata = msm_bus_cl_get_pdata_from_dev( &mhi_dev->pci_dev->dev); Loading drivers/bus/mhi/controllers/mhi_qcom.h +8 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,14 @@ #define MHI_RPM_SUSPEND_TMR_MS (250) #define MHI_PCI_BAR_NUM (0) /* timesync time calculations */ #define REMOTE_TICKS_TO_US(x) (div_u64((x) * 100ULL, \ (mhi_cntrl->remote_timer_freq / 10000ULL))) #define REMOTE_TICKS_TO_SEC(x) (div_u64((x), \ mhi_cntrl->remote_timer_freq)) #define REMOTE_TIME_REMAINDER_US(x) (REMOTE_TICKS_TO_US((x)) % \ (REMOTE_TICKS_TO_SEC((x)) * 1000000ULL)) extern const char * const mhi_ee_str[MHI_EE_MAX]; #define TO_MHI_EXEC_STR(ee) (ee >= MHI_EE_MAX ? "INVALID_EE" : mhi_ee_str[ee]) Loading Loading
drivers/bus/mhi/controllers/mhi_arch_qcom.c +23 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ struct arch_info { struct pci_saved_state *pcie_state; async_cookie_t cookie; void *boot_ipc_log; void *tsync_ipc_log; struct mhi_device *boot_dev; struct mhi_link_info current_link_info; struct work_struct bw_scale_work; Loading @@ -41,6 +42,8 @@ struct arch_info { #define DLOG "Dev->Host: " #define HLOG "Host: " #define MHI_TSYNC_LOG_PAGES (10) #ifdef CONFIG_MHI_DEBUG #define MHI_IPC_LOG_PAGES (100) Loading Loading @@ -72,6 +75,18 @@ static int mhi_arch_pm_notifier(struct notifier_block *nb, return NOTIFY_DONE; } void mhi_arch_timesync_log(struct mhi_controller *mhi_cntrl, u64 remote_time) { struct mhi_dev *mhi_dev = mhi_controller_get_devdata(mhi_cntrl); struct arch_info *arch_info = mhi_dev->arch_info; if (remote_time != U64_MAX) ipc_log_string(arch_info->tsync_ipc_log, "%6u.%06lu 0x%llx", REMOTE_TICKS_TO_SEC(remote_time), REMOTE_TIME_REMAINDER_US(remote_time), remote_time); } static int mhi_arch_set_bus_request(struct mhi_controller *mhi_cntrl, int index) { struct mhi_dev *mhi_dev = mhi_controller_get_devdata(mhi_cntrl); Loading Loading @@ -452,6 +467,14 @@ int mhi_arch_pcie_init(struct mhi_controller *mhi_cntrl) node, 0); mhi_cntrl->log_lvl = mhi_ipc_log_lvl; snprintf(node, sizeof(node), "mhi_tsync_%04x_%02u.%02u.%02u", mhi_cntrl->dev_id, mhi_cntrl->domain, mhi_cntrl->bus, mhi_cntrl->slot); arch_info->tsync_ipc_log = ipc_log_context_create( MHI_TSYNC_LOG_PAGES, node, 0); if (arch_info->tsync_ipc_log) mhi_cntrl->tsync_log = mhi_arch_timesync_log; /* register for bus scale if defined */ arch_info->msm_bus_pdata = msm_bus_cl_get_pdata_from_dev( &mhi_dev->pci_dev->dev); Loading
drivers/bus/mhi/controllers/mhi_qcom.h +8 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,14 @@ #define MHI_RPM_SUSPEND_TMR_MS (250) #define MHI_PCI_BAR_NUM (0) /* timesync time calculations */ #define REMOTE_TICKS_TO_US(x) (div_u64((x) * 100ULL, \ (mhi_cntrl->remote_timer_freq / 10000ULL))) #define REMOTE_TICKS_TO_SEC(x) (div_u64((x), \ mhi_cntrl->remote_timer_freq)) #define REMOTE_TIME_REMAINDER_US(x) (REMOTE_TICKS_TO_US((x)) % \ (REMOTE_TICKS_TO_SEC((x)) * 1000000ULL)) extern const char * const mhi_ee_str[MHI_EE_MAX]; #define TO_MHI_EXEC_STR(ee) (ee >= MHI_EE_MAX ? "INVALID_EE" : mhi_ee_str[ee]) Loading