diff --git a/drivers/bus/mhi/controllers/mhi_arch_qcom.c b/drivers/bus/mhi/controllers/mhi_arch_qcom.c index a12c03bd54d3..13f1384153db 100644 --- a/drivers/bus/mhi/controllers/mhi_arch_qcom.c +++ b/drivers/bus/mhi/controllers/mhi_arch_qcom.c @@ -40,16 +40,18 @@ struct arch_info { #define DLOG "Dev->Host: " #define HLOG "Host: " -#define MHI_TSYNC_LOG_PAGES (10) +#define MHI_TSYNC_LOG_PAGES (2) #ifdef CONFIG_MHI_DEBUG #define MHI_IPC_LOG_PAGES (100) +#define MHI_CNTRL_LOG_PAGES (25) enum MHI_DEBUG_LEVEL mhi_ipc_log_lvl = MHI_MSG_LVL_VERBOSE; #else #define MHI_IPC_LOG_PAGES (10) +#define MHI_CNTRL_LOG_PAGES (5) enum MHI_DEBUG_LEVEL mhi_ipc_log_lvl = MHI_MSG_LVL_ERROR; #endif @@ -146,7 +148,7 @@ static void mhi_arch_pci_link_state_cb(struct msm_pcie_notify *notify) switch (notify->event) { case MSM_PCIE_EVENT_WAKEUP: - MHI_LOG("Received MSM_PCIE_EVENT_WAKE signal\n"); + MHI_CNTRL_LOG("Received PCIE_WAKE signal\n"); /* bring link out of d3cold */ if (mhi_dev->powered_on) { @@ -155,14 +157,14 @@ static void mhi_arch_pci_link_state_cb(struct msm_pcie_notify *notify) } break; case MSM_PCIE_EVENT_L1SS_TIMEOUT: - MHI_VERB("Received MSM_PCIE_EVENT_L1SS_TIMEOUT signal\n"); + MHI_VERB("Received PCIE_L1SS_TIMEOUT signal\n"); pm_runtime_mark_last_busy(&pci_dev->dev); pm_request_autosuspend(&pci_dev->dev); break; case MSM_PCIE_EVENT_DRV_CONNECT: /* drv is connected we can suspend now */ - MHI_LOG("Received MSM_PCIE_EVENT_DRV_CONNECT signal\n"); + MHI_CNTRL_LOG("Received DRV_CONNECT signal\n"); arch_info->drv_connected = true; @@ -177,7 +179,7 @@ static void mhi_arch_pci_link_state_cb(struct msm_pcie_notify *notify) mutex_unlock(&mhi_cntrl->pm_mutex); break; case MSM_PCIE_EVENT_DRV_DISCONNECT: - MHI_LOG("Received MSM_PCIE_EVENT_DRV_DISCONNECT signal\n"); + MHI_CNTRL_LOG("Received DRV_DISCONNECT signal\n"); /* * if link suspended bring it out of suspend and disable runtime @@ -187,7 +189,7 @@ static void mhi_arch_pci_link_state_cb(struct msm_pcie_notify *notify) pm_runtime_forbid(&pci_dev->dev); break; default: - MHI_ERR("Unhandled event 0x%x\n", notify->event); + MHI_CNTRL_LOG("Unhandled event 0x%x\n", notify->event); } } @@ -200,12 +202,12 @@ static int mhi_arch_esoc_ops_power_on(void *priv, unsigned int flags) mutex_lock(&mhi_cntrl->pm_mutex); if (mhi_dev->powered_on) { - MHI_LOG("MHI still in active state\n"); + MHI_CNTRL_LOG("MHI still in active state\n"); mutex_unlock(&mhi_cntrl->pm_mutex); return 0; } - MHI_LOG("Enter: mdm_crashed:%d\n", flags & ESOC_HOOK_MDM_CRASH); + MHI_CNTRL_LOG("Enter: mdm_crashed:%d\n", flags & ESOC_HOOK_MDM_CRASH); /* reset rpm state */ pm_runtime_set_active(&pci_dev->dev); @@ -214,7 +216,7 @@ static int mhi_arch_esoc_ops_power_on(void *priv, unsigned int flags) pm_runtime_forbid(&pci_dev->dev); ret = pm_runtime_get_sync(&pci_dev->dev); if (ret < 0) { - MHI_ERR("Error with rpm resume, ret:%d\n", ret); + MHI_CNTRL_ERR("Error with rpm resume, ret:%d\n", ret); return ret; } @@ -222,7 +224,7 @@ static int mhi_arch_esoc_ops_power_on(void *priv, unsigned int flags) ret = msm_pcie_pm_control(MSM_PCIE_RESUME, pci_dev->bus->number, pci_dev, NULL, 0); if (ret) { - MHI_ERR("Failed to resume pcie bus ret %d\n", ret); + MHI_CNTRL_ERR("Failed to resume pcie bus ret %d\n", ret); return ret; } @@ -234,7 +236,7 @@ static void mhi_arch_link_off(struct mhi_controller *mhi_cntrl) struct mhi_dev *mhi_dev = mhi_controller_get_devdata(mhi_cntrl); struct pci_dev *pci_dev = mhi_dev->pci_dev; - MHI_LOG("Entered\n"); + MHI_CNTRL_LOG("Entered\n"); pci_set_power_state(pci_dev, PCI_D3hot); @@ -242,7 +244,7 @@ static void mhi_arch_link_off(struct mhi_controller *mhi_cntrl) msm_pcie_pm_control(MSM_PCIE_SUSPEND, mhi_cntrl->bus, pci_dev, NULL, 0); mhi_arch_set_bus_request(mhi_cntrl, 0); - MHI_LOG("Exited\n"); + MHI_CNTRL_LOG("Exited\n"); } static void mhi_arch_esoc_ops_power_off(void *priv, unsigned int flags) @@ -253,7 +255,7 @@ static void mhi_arch_esoc_ops_power_off(void *priv, unsigned int flags) struct pci_dev *pci_dev = mhi_dev->pci_dev; bool mdm_state = (flags & ESOC_HOOK_MDM_CRASH); - MHI_LOG("Enter: mdm_crashed:%d\n", mdm_state); + MHI_CNTRL_LOG("Enter: mdm_crashed:%d\n", mdm_state); /* * Abort system suspend if system is preparing to go to suspend @@ -269,7 +271,7 @@ static void mhi_arch_esoc_ops_power_off(void *priv, unsigned int flags) mutex_lock(&mhi_cntrl->pm_mutex); if (!mhi_dev->powered_on) { - MHI_LOG("Not in active state\n"); + MHI_CNTRL_LOG("Not in active state\n"); mutex_unlock(&mhi_cntrl->pm_mutex); pm_runtime_put_noidle(&pci_dev->dev); return; @@ -279,7 +281,7 @@ static void mhi_arch_esoc_ops_power_off(void *priv, unsigned int flags) pm_runtime_put_noidle(&pci_dev->dev); - MHI_LOG("Triggering shutdown process\n"); + MHI_CNTRL_LOG("Triggering shutdown process\n"); mhi_power_down(mhi_cntrl, !mdm_state); /* turn the link off */ @@ -296,12 +298,10 @@ static void mhi_arch_esoc_ops_mdm_error(void *priv) { struct mhi_controller *mhi_cntrl = priv; - MHI_LOG("Enter: mdm asserted\n"); + MHI_CNTRL_LOG("Enter: mdm asserted\n"); /* transition MHI state into error state */ mhi_control_error(mhi_cntrl); - - MHI_LOG("Exit\n"); } static void mhi_bl_dl_cb(struct mhi_device *mhi_device, @@ -378,8 +378,9 @@ static int mhi_arch_pcie_scale_bw(struct mhi_controller *mhi_cntrl, /* do a bus scale vote based on gen speeds */ mhi_arch_set_bus_request(mhi_cntrl, link_info->target_link_speed); - MHI_VERB("bw changed to speed:0x%x width:0x%x\n", - link_info->target_link_speed, link_info->target_link_width); + MHI_LOG("BW changed to speed:0x%x width:0x%x\n", + link_info->target_link_speed, + link_info->target_link_width); return 0; } @@ -406,7 +407,7 @@ static int mhi_bl_probe(struct mhi_device *mhi_device, mhi_device->slot); arch_info->boot_dev = mhi_device; - arch_info->boot_ipc_log = ipc_log_context_create(MHI_IPC_LOG_PAGES, + arch_info->boot_ipc_log = ipc_log_context_create(MHI_CNTRL_LOG_PAGES, node_name, 0); ipc_log_string(arch_info->boot_ipc_log, HLOG "Entered SBL, Session ID:0x%x\n", mhi_cntrl->session_id); @@ -461,6 +462,12 @@ 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_cntrl_%04x_%02u.%02u.%02u", + mhi_cntrl->dev_id, mhi_cntrl->domain, mhi_cntrl->bus, + mhi_cntrl->slot); + mhi_cntrl->cntrl_log_buf = ipc_log_context_create( + MHI_CNTRL_LOG_PAGES, node, 0); + snprintf(node, sizeof(node), "mhi_tsync_%04x_%02u.%02u.%02u", mhi_cntrl->dev_id, mhi_cntrl->domain, mhi_cntrl->bus, mhi_cntrl->slot); @@ -516,7 +523,8 @@ int mhi_arch_pcie_init(struct mhi_controller *mhi_cntrl) reg_event->notify.data = mhi_cntrl; ret = msm_pcie_register_event(reg_event); if (ret) - MHI_LOG("Failed to reg. for link up notification\n"); + MHI_CNTRL_ERR( + "Failed to reg. for link up notification\n"); init_completion(&arch_info->pm_completion); @@ -533,7 +541,7 @@ int mhi_arch_pcie_init(struct mhi_controller *mhi_cntrl) arch_info->esoc_client = devm_register_esoc_client( &mhi_dev->pci_dev->dev, "mdm"); if (IS_ERR_OR_NULL(arch_info->esoc_client)) { - MHI_ERR("Failed to register esoc client\n"); + MHI_CNTRL_ERR("Failed to register esoc client\n"); } else { /* register for power on/off hooks */ struct esoc_client_hook *esoc_ops = @@ -551,7 +559,7 @@ int mhi_arch_pcie_init(struct mhi_controller *mhi_cntrl) ret = esoc_register_client_hook(arch_info->esoc_client, esoc_ops); if (ret) - MHI_ERR("Failed to register esoc ops\n"); + MHI_CNTRL_ERR("Failed to register esoc ops\n"); } /* @@ -602,7 +610,7 @@ static int mhi_arch_drv_suspend(struct mhi_controller *mhi_cntrl) link_info.target_link_width = cur_link_info->target_link_width; ret = mhi_arch_pcie_scale_bw(mhi_cntrl, pci_dev, &link_info); if (ret) { - MHI_ERR("Failed to switch Gen1 speed\n"); + MHI_CNTRL_ERR("Failed to switch Gen1 speed\n"); return -EBUSY; } @@ -632,7 +640,8 @@ int mhi_arch_link_suspend(struct mhi_controller *mhi_cntrl) struct pci_dev *pci_dev = mhi_dev->pci_dev; int ret = 0; - MHI_LOG("Entered\n"); + MHI_LOG("Entered with suspend_mode:%s\n", + TO_MHI_SUSPEND_MODE_STR(mhi_dev->suspend_mode)); /* disable inactivity timer */ msm_pcie_l1ss_timeout_disable(pci_dev); @@ -642,7 +651,8 @@ int mhi_arch_link_suspend(struct mhi_controller *mhi_cntrl) pci_clear_master(pci_dev); ret = pci_save_state(mhi_dev->pci_dev); if (ret) { - MHI_ERR("Failed with pci_save_state, ret:%d\n", ret); + MHI_CNTRL_ERR("Failed with pci_save_state, ret:%d\n", + ret); goto exit_suspend; } @@ -661,6 +671,7 @@ int mhi_arch_link_suspend(struct mhi_controller *mhi_cntrl) break; case MHI_ACTIVE_STATE: case MHI_FAST_LINK_ON:/* keeping link on do nothing */ + default: break; } @@ -681,8 +692,6 @@ static int __mhi_arch_link_resume(struct mhi_controller *mhi_cntrl) struct mhi_link_info *cur_info = &mhi_cntrl->mhi_link_info; int ret; - MHI_LOG("Entered\n"); - /* request bus scale voting based on higher gen speed */ ret = mhi_arch_set_bus_request(mhi_cntrl, cur_info->target_link_speed); @@ -725,7 +734,8 @@ int mhi_arch_link_resume(struct mhi_controller *mhi_cntrl) struct mhi_link_info *cur_info = &mhi_cntrl->mhi_link_info; int ret = 0; - MHI_LOG("Entered\n"); + MHI_LOG("Entered with suspend_mode:%s\n", + TO_MHI_SUSPEND_MODE_STR(mhi_dev->suspend_mode)); switch (mhi_dev->suspend_mode) { case MHI_DEFAULT_SUSPEND: @@ -743,26 +753,23 @@ int mhi_arch_link_resume(struct mhi_controller *mhi_cntrl) * only print an error here. */ if (mhi_arch_pcie_scale_bw(mhi_cntrl, pci_dev, cur_info)) - MHI_ERR( + MHI_CNTRL_ERR( "Failed to honor bw request: speed:0x%x width:0x%x\n", cur_info->target_link_speed, cur_info->target_link_width); break; case MHI_ACTIVE_STATE: case MHI_FAST_LINK_ON: + default: break; } - if (ret) { - MHI_ERR("Link training failed, ret:%d\n", ret); - return ret; - } + if (!ret) + msm_pcie_l1ss_timeout_enable(pci_dev); - msm_pcie_l1ss_timeout_enable(pci_dev); + MHI_LOG("Exited with ret:%d\n", ret); - MHI_LOG("Exited\n"); - - return 0; + return ret; } int mhi_arch_link_lpm_disable(struct mhi_controller *mhi_cntrl) diff --git a/drivers/bus/mhi/controllers/mhi_qcom.c b/drivers/bus/mhi/controllers/mhi_qcom.c index 7ab2fd71d400..7479dcef64de 100644 --- a/drivers/bus/mhi/controllers/mhi_qcom.c +++ b/drivers/bus/mhi/controllers/mhi_qcom.c @@ -33,12 +33,19 @@ static const struct firmware_info firmware_table[] = { static int debug_mode; +const char * const mhi_suspend_mode_str[MHI_SUSPEND_MODE_MAX] = { + [MHI_ACTIVE_STATE] = "Active", + [MHI_DEFAULT_SUSPEND] = "Default", + [MHI_FAST_LINK_OFF] = "Fast Link Off", + [MHI_FAST_LINK_ON] = "Fast Link On", +}; + int mhi_debugfs_trigger_m0(void *data, u64 val) { struct mhi_controller *mhi_cntrl = data; struct mhi_dev *mhi_dev = mhi_controller_get_devdata(mhi_cntrl); - MHI_LOG("Trigger M3 Exit\n"); + MHI_CNTRL_LOG("Trigger M3 Exit\n"); pm_runtime_get(&mhi_dev->pci_dev->dev); pm_runtime_put(&mhi_dev->pci_dev->dev); @@ -52,7 +59,7 @@ int mhi_debugfs_trigger_m3(void *data, u64 val) struct mhi_controller *mhi_cntrl = data; struct mhi_dev *mhi_dev = mhi_controller_get_devdata(mhi_cntrl); - MHI_LOG("Trigger M3 Entry\n"); + MHI_CNTRL_LOG("Trigger M3 Entry\n"); pm_runtime_mark_last_busy(&mhi_dev->pci_dev->dev); pm_request_autosuspend(&mhi_dev->pci_dev->dev); @@ -91,19 +98,19 @@ static int mhi_init_pci_dev(struct mhi_controller *mhi_cntrl) mhi_dev->resn = MHI_PCI_BAR_NUM; ret = pci_assign_resource(pci_dev, mhi_dev->resn); if (ret) { - MHI_ERR("Error assign pci resources, ret:%d\n", ret); + MHI_CNTRL_ERR("Error assign pci resources, ret:%d\n", ret); return ret; } ret = pci_enable_device(pci_dev); if (ret) { - MHI_ERR("Error enabling device, ret:%d\n", ret); + MHI_CNTRL_ERR("Error enabling device, ret:%d\n", ret); goto error_enable_device; } ret = pci_request_region(pci_dev, mhi_dev->resn, "mhi"); if (ret) { - MHI_ERR("Error pci_request_region, ret:%d\n", ret); + MHI_CNTRL_ERR("Error pci_request_region, ret:%d\n", ret); goto error_request_region; } @@ -113,14 +120,14 @@ static int mhi_init_pci_dev(struct mhi_controller *mhi_cntrl) len = pci_resource_len(pci_dev, mhi_dev->resn); mhi_cntrl->regs = ioremap_nocache(mhi_cntrl->base_addr, len); if (!mhi_cntrl->regs) { - MHI_ERR("Error ioremap region\n"); + MHI_CNTRL_ERR("Error ioremap region\n"); goto error_ioremap; } ret = pci_alloc_irq_vectors(pci_dev, mhi_cntrl->msi_required, mhi_cntrl->msi_required, PCI_IRQ_MSI); if (IS_ERR_VALUE((ulong)ret) || ret < mhi_cntrl->msi_required) { - MHI_ERR("Failed to enable MSI, ret:%d\n", ret); + MHI_CNTRL_ERR("Failed to enable MSI, ret:%d\n", ret); goto error_req_msi; } @@ -394,7 +401,7 @@ static int mhi_force_suspend(struct mhi_controller *mhi_cntrl) struct mhi_dev *mhi_dev = mhi_controller_get_devdata(mhi_cntrl); int itr = DIV_ROUND_UP(mhi_cntrl->timeout_ms, delayms); - MHI_LOG("Entered\n"); + MHI_CNTRL_LOG("Entered\n"); mutex_lock(&mhi_cntrl->pm_mutex); @@ -410,12 +417,12 @@ static int mhi_force_suspend(struct mhi_controller *mhi_cntrl) if (!ret || ret != -EBUSY) break; - MHI_LOG("MHI busy, sleeping and retry\n"); + MHI_CNTRL_LOG("MHI busy, sleeping and retry\n"); msleep(delayms); } if (ret) { - MHI_ERR("Force suspend ret with %d\n", ret); + MHI_CNTRL_ERR("Force suspend ret:%d\n", ret); goto exit_force_suspend; } @@ -551,14 +558,14 @@ static void mhi_status_cb(struct mhi_controller *mhi_cntrl, pm_runtime_get(dev); ret = mhi_force_suspend(mhi_cntrl); if (!ret) { - MHI_LOG("Attempt resume after forced suspend\n"); + MHI_CNTRL_LOG("Attempt resume after forced suspend\n"); mhi_runtime_resume(dev); } pm_runtime_put(dev); mhi_arch_mission_mode_enter(mhi_cntrl); break; default: - MHI_ERR("Unhandled cb:0x%x\n", reason); + MHI_CNTRL_LOG("Unhandled cb:0x%x\n", reason); } } @@ -772,7 +779,7 @@ static struct mhi_controller *mhi_register_controller(struct pci_dev *pci_dev) atomic_set(&mhi_cntrl->write_idx, -1); if (sysfs_create_group(&mhi_cntrl->mhi_dev->dev.kobj, &mhi_qcom_group)) - MHI_ERR("Error while creating the sysfs group\n"); + MHI_CNTRL_ERR("Error while creating the sysfs group\n"); return mhi_cntrl; @@ -829,7 +836,7 @@ int mhi_pci_probe(struct pci_dev *pci_dev, pm_runtime_mark_last_busy(&pci_dev->dev); - MHI_LOG("Return successful\n"); + MHI_CNTRL_LOG("Return successful\n"); return 0; diff --git a/drivers/bus/mhi/controllers/mhi_qcom.h b/drivers/bus/mhi/controllers/mhi_qcom.h index 692a4f4967fb..325be120486c 100644 --- a/drivers/bus/mhi/controllers/mhi_qcom.h +++ b/drivers/bus/mhi/controllers/mhi_qcom.h @@ -38,9 +38,12 @@ enum mhi_suspend_mode { MHI_DEFAULT_SUSPEND, MHI_FAST_LINK_OFF, MHI_FAST_LINK_ON, + MHI_SUSPEND_MODE_MAX, }; -#define MHI_IS_SUSPENDED(mode) (mode) +extern const char * const mhi_suspend_mode_str[MHI_SUSPEND_MODE_MAX]; +#define TO_MHI_SUSPEND_MODE_STR(mode) \ + (mode >= MHI_SUSPEND_MODE_MAX ? "Invalid" : mhi_suspend_mode_str[mode]) struct mhi_dev { struct pci_dev *pci_dev; diff --git a/drivers/bus/mhi/core/mhi_boot.c b/drivers/bus/mhi/core/mhi_boot.c index 97af7175a348..d5864a28548c 100644 --- a/drivers/bus/mhi/core/mhi_boot.c +++ b/drivers/bus/mhi/core/mhi_boot.c @@ -51,7 +51,7 @@ static void mhi_process_sfr(struct mhi_controller *mhi_cntrl, rem_seg_len = 0; seg_idx++; if (seg_idx == mhi_cntrl->rddm_image->entries) { - MHI_ERR("invalid size for SFR file\n"); + MHI_CNTRL_ERR("invalid size for SFR file\n"); goto err; } } @@ -80,7 +80,7 @@ static int mhi_find_next_file_offset(struct mhi_controller *mhi_cntrl, while (info->file_size) { info->seg_idx++; if (info->seg_idx == mhi_cntrl->rddm_image->entries) { - MHI_ERR("invalid size for file %s\n", + MHI_CNTRL_ERR("invalid size for file %s\n", table_info->file_name); return -EINVAL; } @@ -111,14 +111,14 @@ void mhi_dump_sfr(struct mhi_controller *mhi_cntrl) if (rddm_header->header_size > sizeof(*rddm_header) || rddm_header->header_size < 8) { - MHI_ERR("invalid reported header size %u\n", + MHI_CNTRL_ERR("invalid reported header size %u\n", rddm_header->header_size); return; } table_size = (rddm_header->header_size - 8) / sizeof(*table_info); if (!table_size) { - MHI_ERR("invalid rddm table size %u\n", table_size); + MHI_CNTRL_ERR("invalid rddm table size %u\n", table_size); return; } @@ -150,13 +150,13 @@ void mhi_rddm_prepare(struct mhi_controller *mhi_cntrl, int i = 0; for (i = 0; i < img_info->entries - 1; i++, mhi_buf++, bhi_vec++) { - MHI_VERB("Setting vector:%pad size:%zu\n", - &mhi_buf->dma_addr, mhi_buf->len); + MHI_CNTRL_LOG("Setting vector:%pad size:%zu\n", + &mhi_buf->dma_addr, mhi_buf->len); bhi_vec->dma_addr = mhi_buf->dma_addr; bhi_vec->size = mhi_buf->len; } - MHI_LOG("BHIe programming for RDDM\n"); + MHI_CNTRL_LOG("BHIe programming for RDDM\n"); mhi_cntrl->write_reg(mhi_cntrl, base, BHIE_RXVECADDR_HIGH_OFFS, upper_32_bits(mhi_buf->dma_addr)); @@ -175,8 +175,8 @@ void mhi_rddm_prepare(struct mhi_controller *mhi_cntrl, BHIE_RXVECDB_SEQNUM_BMSK, BHIE_RXVECDB_SEQNUM_SHFT, sequence_id); - MHI_LOG("address:%pad len:0x%lx sequence:%u\n", - &mhi_buf->dma_addr, mhi_buf->len, sequence_id); + MHI_CNTRL_LOG("address:%pad len:0x%lx sequence:%u\n", + &mhi_buf->dma_addr, mhi_buf->len, sequence_id); } /* collect rddm during kernel panic */ @@ -191,10 +191,10 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) int rddm_retry = rddm_timeout_us / delayus; /* time to enter rddm */ void __iomem *base = mhi_cntrl->bhie; - MHI_LOG("Entered with pm_state:%s dev_state:%s ee:%s\n", - to_mhi_pm_state_str(mhi_cntrl->pm_state), - TO_MHI_STATE_STR(mhi_cntrl->dev_state), - TO_MHI_EXEC_STR(mhi_cntrl->ee)); + MHI_CNTRL_LOG("Entered with pm_state:%s dev_state:%s ee:%s\n", + to_mhi_pm_state_str(mhi_cntrl->pm_state), + TO_MHI_STATE_STR(mhi_cntrl->dev_state), + TO_MHI_EXEC_STR(mhi_cntrl->ee)); /* * This should only be executing during a kernel panic, we expect all @@ -219,10 +219,10 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) ee = mhi_get_exec_env(mhi_cntrl); if (ee != MHI_EE_RDDM) { - MHI_LOG("Trigger device into RDDM mode using SYSERR\n"); + MHI_CNTRL_LOG("Trigger device into RDDM mode using SYSERR\n"); mhi_set_mhi_state(mhi_cntrl, MHI_STATE_SYS_ERR); - MHI_LOG("Waiting for device to enter RDDM\n"); + MHI_CNTRL_LOG("Waiting for device to enter RDDM\n"); while (rddm_retry--) { ee = mhi_get_exec_env(mhi_cntrl); if (ee == MHI_EE_RDDM) @@ -233,7 +233,7 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) if (rddm_retry <= 0) { /* Hardware reset; force device to enter rddm */ - MHI_LOG( + MHI_CNTRL_LOG( "Did not enter RDDM, do a host req. reset\n"); mhi_cntrl->write_reg(mhi_cntrl, mhi_cntrl->regs, MHI_SOC_RESET_REQ_OFFSET, @@ -244,8 +244,8 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) ee = mhi_get_exec_env(mhi_cntrl); } - MHI_LOG("Waiting for image download completion, current EE:%s\n", - TO_MHI_EXEC_STR(ee)); + MHI_CNTRL_LOG("Waiting for image download completion, current EE:%s\n", + TO_MHI_EXEC_STR(ee)); while (retry--) { ret = mhi_read_reg_field(mhi_cntrl, base, BHIE_RXVECSTATUS_OFFS, BHIE_RXVECSTATUS_STATUS_BMSK, @@ -255,7 +255,7 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) return -EIO; if (rx_status == BHIE_RXVECSTATUS_STATUS_XFER_COMPL) { - MHI_LOG("RDDM successfully collected\n"); + MHI_CNTRL_LOG("RDDM successfully collected\n"); return 0; } @@ -265,9 +265,9 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) ee = mhi_get_exec_env(mhi_cntrl); ret = mhi_read_reg(mhi_cntrl, base, BHIE_RXVECSTATUS_OFFS, &rx_status); - MHI_ERR("Did not complete RDDM transfer\n"); - MHI_ERR("Current EE:%s\n", TO_MHI_EXEC_STR(ee)); - MHI_ERR("RXVEC_STATUS:0x%x, ret:%d\n", rx_status, ret); + MHI_CNTRL_ERR("Did not complete RDDM transfer\n"); + MHI_CNTRL_ERR("Current EE:%s\n", TO_MHI_EXEC_STR(ee)); + MHI_CNTRL_ERR("RXVEC_STATUS:0x%x, ret:%d\n", rx_status, ret); return -EIO; } @@ -281,7 +281,7 @@ int mhi_download_rddm_img(struct mhi_controller *mhi_cntrl, bool in_panic) if (in_panic) return __mhi_download_rddm_in_panic(mhi_cntrl); - MHI_LOG("Waiting for image download completion\n"); + MHI_CNTRL_LOG("Waiting for image download completion\n"); /* waiting for image download completion */ wait_event_timeout(mhi_cntrl->state_event, @@ -309,7 +309,7 @@ static int mhi_fw_load_amss(struct mhi_controller *mhi_cntrl, return -EIO; } - MHI_LOG("Starting BHIe Programming\n"); + MHI_CNTRL_LOG("Starting BHIe Programming\n"); mhi_cntrl->write_reg(mhi_cntrl, base, BHIE_TXVECADDR_HIGH_OFFS, upper_32_bits(mhi_buf->dma_addr)); @@ -329,11 +329,11 @@ static int mhi_fw_load_amss(struct mhi_controller *mhi_cntrl, mhi_cntrl->sequence_id); read_unlock_bh(pm_lock); - MHI_LOG("Upper:0x%x Lower:0x%x len:0x%lx sequence:%u\n", - upper_32_bits(mhi_buf->dma_addr), - lower_32_bits(mhi_buf->dma_addr), - mhi_buf->len, mhi_cntrl->sequence_id); - MHI_LOG("Waiting for image transfer completion\n"); + MHI_CNTRL_LOG("Upper:0x%x Lower:0x%x len:0x%lx sequence:%u\n", + upper_32_bits(mhi_buf->dma_addr), + lower_32_bits(mhi_buf->dma_addr), + mhi_buf->len, mhi_cntrl->sequence_id); + MHI_CNTRL_LOG("Waiting for image transfer completion\n"); /* waiting for image download completion */ wait_event_timeout(mhi_cntrl->state_event, @@ -370,7 +370,7 @@ static int mhi_fw_load_sbl(struct mhi_controller *mhi_cntrl, { NULL }, }; - MHI_LOG("Starting BHI programming\n"); + MHI_CNTRL_LOG("Starting BHI programming\n"); /* program start sbl download via bhi protocol */ read_lock_bh(pm_lock); @@ -393,7 +393,7 @@ static int mhi_fw_load_sbl(struct mhi_controller *mhi_cntrl, mhi_cntrl->session_id); read_unlock_bh(pm_lock); - MHI_LOG("Waiting for image transfer completion\n"); + MHI_CNTRL_LOG("Waiting for image transfer completion\n"); /* waiting for image download completion */ wait_event_timeout(mhi_cntrl->state_event, @@ -406,7 +406,7 @@ static int mhi_fw_load_sbl(struct mhi_controller *mhi_cntrl, goto invalid_pm_state; if (tx_status == BHI_STATUS_ERROR) { - MHI_ERR("Image transfer failed\n"); + MHI_CNTRL_ERR("Image transfer failed\n"); read_lock_bh(pm_lock); if (MHI_REG_ACCESS_VALID(mhi_cntrl->pm_state)) { for (i = 0; error_reg[i].name; i++) { @@ -414,8 +414,8 @@ static int mhi_fw_load_sbl(struct mhi_controller *mhi_cntrl, error_reg[i].offset, &val); if (ret) break; - MHI_ERR("reg:%s value:0x%x\n", - error_reg[i].name, val); + MHI_CNTRL_ERR("reg:%s value:0x%x\n", + error_reg[i].name, val); } } read_unlock_bh(pm_lock); @@ -454,8 +454,8 @@ int mhi_alloc_bhie_table(struct mhi_controller *mhi_cntrl, struct image_info *img_info; struct mhi_buf *mhi_buf; - MHI_LOG("Allocating bytes:%zu seg_size:%zu total_seg:%u\n", - alloc_size, seg_size, segments); + MHI_CNTRL_LOG("Allocating bytes:%zu seg_size:%zu total_seg:%u\n", + alloc_size, seg_size, segments); img_info = kzalloc(sizeof(*img_info), GFP_KERNEL); if (!img_info) @@ -482,7 +482,7 @@ int mhi_alloc_bhie_table(struct mhi_controller *mhi_cntrl, if (!mhi_buf->buf) goto error_alloc_segment; - MHI_LOG("Entry:%d Address:0x%llx size:%lu\n", i, + MHI_CNTRL_LOG("Entry:%d Address:0x%llx size:%lu\n", i, mhi_buf->dma_addr, mhi_buf->len); } @@ -490,7 +490,7 @@ int mhi_alloc_bhie_table(struct mhi_controller *mhi_cntrl, img_info->entries = segments; *image_info = img_info; - MHI_LOG("Successfully allocated bhi vec table\n"); + MHI_CNTRL_LOG("Successfully allocated bhi vec table\n"); return 0; @@ -545,11 +545,11 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl) size_t size; if (MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state)) { - MHI_ERR("MHI is not in valid state\n"); + MHI_CNTRL_ERR("MHI is not in valid state\n"); return; } - MHI_LOG("Device current EE:%s\n", TO_MHI_EXEC_STR(mhi_cntrl->ee)); + MHI_CNTRL_LOG("Device current EE:%s\n", TO_MHI_EXEC_STR(mhi_cntrl->ee)); /* if device in pthru, do reset to ready state transition */ if (mhi_cntrl->ee == MHI_EE_PTHRU) @@ -560,14 +560,15 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl) if (!fw_name || (mhi_cntrl->fbc_download && (!mhi_cntrl->sbl_size || !mhi_cntrl->seg_len))) { - MHI_ERR("No firmware image defined or !sbl_size || !seg_len\n"); + MHI_CNTRL_ERR( + "No firmware image defined or !sbl_size || !seg_len\n"); return; } ret = request_firmware(&firmware, fw_name, mhi_cntrl->dev); if (ret) { if (!mhi_cntrl->fw_image_fallback) { - MHI_ERR("Error loading fw, ret:%d\n", ret); + MHI_CNTRL_ERR("Error loading fw, ret:%d\n", ret); return; } @@ -575,7 +576,7 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl) ret = request_firmware(&firmware, mhi_cntrl->fw_image_fallback, mhi_cntrl->dev); if (ret) { - MHI_ERR("Error loading fw_fb, ret:%d\n", ret); + MHI_CNTRL_ERR("Error loading fw_fb, ret:%d\n", ret); return; } @@ -591,7 +592,7 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl) buf = mhi_alloc_coherent(mhi_cntrl, size, &dma_addr, GFP_KERNEL); if (!buf) { - MHI_ERR("Could not allocate memory for image\n"); + MHI_CNTRL_ERR("Could not allocate memory for image\n"); release_firmware(firmware); return; } @@ -620,11 +621,11 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl) ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image, firmware->size); if (ret) { - MHI_ERR("Error alloc size of %zu\n", firmware->size); + MHI_CNTRL_ERR("Error alloc size:%zu\n", firmware->size); goto error_alloc_fw_table; } - MHI_LOG("Copying firmware image into vector table\n"); + MHI_CNTRL_LOG("Copying firmware image into vector table\n"); /* load the firmware into BHIE vec table */ mhi_firmware_copy(mhi_cntrl, firmware, mhi_cntrl->fbc_image); @@ -634,16 +635,16 @@ fw_load_ee_pthru: /* transitioning into MHI RESET->READY state */ ret = mhi_ready_state_transition(mhi_cntrl); - MHI_LOG("To Reset->Ready PM_STATE:%s MHI_STATE:%s EE:%s, ret:%d\n", - to_mhi_pm_state_str(mhi_cntrl->pm_state), - TO_MHI_STATE_STR(mhi_cntrl->dev_state), - TO_MHI_EXEC_STR(mhi_cntrl->ee), ret); + MHI_CNTRL_LOG("To Reset->Ready PM_STATE:%s MHI_STATE:%s EE:%s ret:%d\n", + to_mhi_pm_state_str(mhi_cntrl->pm_state), + TO_MHI_STATE_STR(mhi_cntrl->dev_state), + TO_MHI_EXEC_STR(mhi_cntrl->ee), ret); if (!mhi_cntrl->fbc_download) return; if (ret) { - MHI_ERR("Did not transition to READY state\n"); + MHI_CNTRL_ERR("Did not transition to READY state\n"); goto error_read; } @@ -654,7 +655,7 @@ fw_load_ee_pthru: msecs_to_jiffies(mhi_cntrl->timeout_ms)); if (!ret || MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state)) { - MHI_ERR("MHI did not enter BHIE\n"); + MHI_CNTRL_ERR("MHI did not enter BHIE\n"); goto error_read; } @@ -664,7 +665,7 @@ fw_load_ee_pthru: /* last entry is vec table */ &image_info->mhi_buf[image_info->entries - 1]); - MHI_LOG("amss fw_load, ret:%d\n", ret); + MHI_CNTRL_LOG("amss fw_load ret:%d\n", ret); release_firmware(firmware); diff --git a/drivers/bus/mhi/core/mhi_init.c b/drivers/bus/mhi/core/mhi_init.c index 41a18e224c94..0dd29368d2f6 100644 --- a/drivers/bus/mhi/core/mhi_init.c +++ b/drivers/bus/mhi/core/mhi_init.c @@ -435,8 +435,8 @@ int mhi_init_irq_setup(struct mhi_controller *mhi_cntrl) mhi_msi_handlr, IRQF_SHARED | IRQF_NO_SUSPEND, "mhi", mhi_event); if (ret) { - MHI_ERR("Error requesting irq:%d for ev:%d\n", - mhi_cntrl->irq[mhi_event->msi], i); + MHI_CNTRL_ERR("Error requesting irq:%d for ev:%d\n", + mhi_cntrl->irq[mhi_event->msi], i); goto error_request; } } @@ -792,7 +792,7 @@ static int mhi_init_timesync(struct mhi_controller *mhi_cntrl) ret = mhi_get_capability_offset(mhi_cntrl, TIMESYNC_CAP_ID, &time_offset); if (ret) { - MHI_LOG("No timesync capability found\n"); + MHI_CNTRL_LOG("No timesync capability found\n"); return ret; } @@ -807,7 +807,7 @@ static int mhi_init_timesync(struct mhi_controller *mhi_cntrl) INIT_LIST_HEAD(&mhi_tsync->head); /* save time_offset for obtaining time */ - MHI_LOG("TIME OFFS:0x%x\n", time_offset); + MHI_CNTRL_LOG("TIME OFFS:0x%x\n", time_offset); mhi_tsync->time_reg = mhi_cntrl->regs + time_offset + TIMESYNC_TIME_LOW_OFFSET; @@ -816,7 +816,7 @@ static int mhi_init_timesync(struct mhi_controller *mhi_cntrl) /* get timesync event ring configuration */ er_index = mhi_get_er_index(mhi_cntrl, MHI_ER_TSYNC_ELEMENT_TYPE); if (er_index < 0) { - MHI_LOG("Could not find timesync event ring\n"); + MHI_CNTRL_LOG("Could not find timesync event ring\n"); return er_index; } @@ -845,7 +845,7 @@ int mhi_init_sfr(struct mhi_controller *mhi_cntrl) sfr_info->buf_addr = mhi_alloc_coherent(mhi_cntrl, sfr_info->len, &sfr_info->dma_addr, GFP_KERNEL); if (!sfr_info->buf_addr) { - MHI_ERR("Failed to allocate memory for sfr\n"); + MHI_CNTRL_ERR("Failed to allocate memory for sfr\n"); return -ENOMEM; } @@ -853,14 +853,14 @@ int mhi_init_sfr(struct mhi_controller *mhi_cntrl) ret = mhi_send_cmd(mhi_cntrl, NULL, MHI_CMD_SFR_CFG); if (ret) { - MHI_ERR("Failed to send sfr cfg cmd\n"); + MHI_CNTRL_ERR("Failed to send sfr cfg cmd\n"); return ret; } ret = wait_for_completion_timeout(&sfr_info->completion, msecs_to_jiffies(mhi_cntrl->timeout_ms)); if (!ret || sfr_info->ccs != MHI_EV_CC_SUCCESS) { - MHI_ERR("Failed to get sfr cfg cmd completion\n"); + MHI_CNTRL_ERR("Failed to get sfr cfg cmd completion\n"); return -EIO; } @@ -888,7 +888,7 @@ static int mhi_init_bw_scale(struct mhi_controller *mhi_cntrl) bw_cfg_offset += BW_SCALE_CFG_OFFSET; - MHI_LOG("BW_CFG OFFSET:0x%x\n", bw_cfg_offset); + MHI_CNTRL_LOG("BW_CFG OFFSET:0x%x\n", bw_cfg_offset); /* advertise host support */ mhi_cntrl->write_reg(mhi_cntrl, mhi_cntrl->regs, bw_cfg_offset, @@ -977,7 +977,7 @@ int mhi_init_mmio(struct mhi_controller *mhi_cntrl) { 0, 0, 0 } }; - MHI_LOG("Initializing MMIO\n"); + MHI_CNTRL_LOG("Initializing MMIO\n"); /* set up DB register for all the chan rings */ ret = mhi_read_reg_field(mhi_cntrl, base, CHDBOFF, CHDBOFF_CHDBOFF_MASK, @@ -985,7 +985,7 @@ int mhi_init_mmio(struct mhi_controller *mhi_cntrl) if (ret) return -EIO; - MHI_LOG("CHDBOFF:0x%x\n", val); + MHI_CNTRL_LOG("CHDBOFF:0x%x\n", val); /* setup wake db */ mhi_cntrl->wake_db = base + val + (8 * MHI_DEV_WAKE_DB); @@ -1008,7 +1008,7 @@ int mhi_init_mmio(struct mhi_controller *mhi_cntrl) if (ret) return -EIO; - MHI_LOG("ERDBOFF:0x%x\n", val); + MHI_CNTRL_LOG("ERDBOFF:0x%x\n", val); mhi_event = mhi_cntrl->mhi_event; for (i = 0; i < mhi_cntrl->total_ev_rings; i++, val += 8, mhi_event++) { @@ -1021,7 +1021,7 @@ int mhi_init_mmio(struct mhi_controller *mhi_cntrl) /* set up DB register for primary CMD rings */ mhi_cntrl->mhi_cmd[PRIMARY_CMD_RING].ring.db_addr = base + CRDB_LOWER; - MHI_LOG("Programming all MMIO values.\n"); + MHI_CNTRL_LOG("Programming all MMIO values.\n"); for (i = 0; reg_info[i].offset; i++) mhi_write_reg_field(mhi_cntrl, base, reg_info[i].offset, reg_info[i].mask, reg_info[i].shift, @@ -1772,7 +1772,7 @@ int mhi_prepare_for_power_up(struct mhi_controller *mhi_cntrl) ret = mhi_init_dev_ctxt(mhi_cntrl); if (ret) { - MHI_ERR("Error with init dev_ctxt\n"); + MHI_CNTRL_ERR("Error with init dev_ctxt\n"); goto error_dev_ctxt; } @@ -1792,7 +1792,7 @@ int mhi_prepare_for_power_up(struct mhi_controller *mhi_cntrl) ret = mhi_read_reg(mhi_cntrl, mhi_cntrl->regs, BHIEOFF, &bhie_off); if (ret) { - MHI_ERR("Error getting bhie offset\n"); + MHI_CNTRL_ERR("Error getting bhie offset\n"); goto bhie_error; } diff --git a/drivers/bus/mhi/core/mhi_pm.c b/drivers/bus/mhi/core/mhi_pm.c index c0404868f068..819ea9442f21 100644 --- a/drivers/bus/mhi/core/mhi_pm.c +++ b/drivers/bus/mhi/core/mhi_pm.c @@ -256,7 +256,7 @@ int mhi_ready_state_transition(struct mhi_controller *mhi_cntrl) enum MHI_PM_STATE cur_state; int ret, i; - MHI_LOG("Waiting to enter READY state\n"); + MHI_CNTRL_LOG("Waiting to enter READY state\n"); /* wait for RESET to be cleared and READY bit to be set */ wait_event_timeout(mhi_cntrl->state_event, @@ -278,16 +278,16 @@ int mhi_ready_state_transition(struct mhi_controller *mhi_cntrl) if (reset || !ready) return -ETIMEDOUT; - MHI_LOG("Device in READY State\n"); + MHI_CNTRL_LOG("Device in READY State\n"); write_lock_irq(&mhi_cntrl->pm_lock); cur_state = mhi_tryset_pm_state(mhi_cntrl, MHI_PM_POR); mhi_cntrl->dev_state = MHI_STATE_READY; write_unlock_irq(&mhi_cntrl->pm_lock); if (cur_state != MHI_PM_POR) { - MHI_ERR("Error moving to state %s from %s\n", - to_mhi_pm_state_str(MHI_PM_POR), - to_mhi_pm_state_str(cur_state)); + MHI_CNTRL_ERR("Error moving to state %s from %s\n", + to_mhi_pm_state_str(MHI_PM_POR), + to_mhi_pm_state_str(cur_state)); return -EIO; } read_lock_bh(&mhi_cntrl->pm_lock); @@ -296,7 +296,7 @@ int mhi_ready_state_transition(struct mhi_controller *mhi_cntrl) ret = mhi_init_mmio(mhi_cntrl); if (ret) { - MHI_ERR("Error programming mmio registers\n"); + MHI_CNTRL_ERR("Error programming mmio registers\n"); goto error_mmio; } @@ -475,7 +475,7 @@ static int mhi_pm_mission_mode_transition(struct mhi_controller *mhi_cntrl) enum mhi_ee ee = 0; struct mhi_event *mhi_event; - MHI_LOG("Processing Mission Mode Transition\n"); + MHI_CNTRL_LOG("Processing Mission Mode Transition\n"); write_lock_irq(&mhi_cntrl->pm_lock); if (MHI_REG_ACCESS_VALID(mhi_cntrl->pm_state)) @@ -483,7 +483,7 @@ static int mhi_pm_mission_mode_transition(struct mhi_controller *mhi_cntrl) write_unlock_irq(&mhi_cntrl->pm_lock); if (!MHI_IN_MISSION_MODE(ee)) { - MHI_ERR("Invalid EE:%s\n", TO_MHI_EXEC_STR(ee)); + MHI_CNTRL_ERR("Invalid EE:%s\n", TO_MHI_EXEC_STR(ee)); return -EIO; } @@ -546,7 +546,7 @@ static int mhi_pm_mission_mode_transition(struct mhi_controller *mhi_cntrl) /* setup sysfs nodes for userspace votes */ mhi_create_sysfs(mhi_cntrl); - MHI_LOG("Adding new devices\n"); + MHI_CNTRL_LOG("Adding new devices\n"); /* add supported devices */ mhi_create_devices(mhi_cntrl); @@ -557,7 +557,7 @@ error_mission_mode: mhi_cntrl->wake_put(mhi_cntrl, false); read_unlock_bh(&mhi_cntrl->pm_lock); - MHI_LOG("Exit with ret:%d\n", ret); + MHI_CNTRL_LOG("Exit with ret:%d\n", ret); return ret; } @@ -574,7 +574,8 @@ static void mhi_pm_disable_transition(struct mhi_controller *mhi_cntrl, struct mhi_sfr_info *sfr_info = mhi_cntrl->mhi_sfr; int ret, i; - MHI_LOG("Enter with from pm_state:%s MHI_STATE:%s to pm_state:%s\n", + MHI_CNTRL_LOG( + "Enter with from pm_state:%s MHI_STATE:%s to pm_state:%s\n", to_mhi_pm_state_str(mhi_cntrl->pm_state), TO_MHI_STATE_STR(mhi_cntrl->dev_state), to_mhi_pm_state_str(transition_state)); @@ -605,8 +606,8 @@ static void mhi_pm_disable_transition(struct mhi_controller *mhi_cntrl, /* not handling sys_err, could be middle of shut down */ if (cur_state != transition_state) { - MHI_LOG("Failed to transition to state:0x%x from:0x%x\n", - transition_state, cur_state); + MHI_CNTRL_LOG("Failed to transition to state:0x%x from:0x%x\n", + transition_state, cur_state); mutex_unlock(&mhi_cntrl->pm_mutex); return; } @@ -615,7 +616,7 @@ static void mhi_pm_disable_transition(struct mhi_controller *mhi_cntrl, if (MHI_REG_ACCESS_VALID(prev_state)) { unsigned long timeout = msecs_to_jiffies(mhi_cntrl->timeout_ms); - MHI_LOG("Trigger device into MHI_RESET\n"); + MHI_CNTRL_LOG("Trigger device into MHI_RESET\n"); write_lock_irq(&mhi_cntrl->pm_lock); mhi_set_mhi_state(mhi_cntrl, MHI_STATE_RESET); @@ -641,7 +642,8 @@ static void mhi_pm_disable_transition(struct mhi_controller *mhi_cntrl, mhi_cntrl->initiate_mhi_reset = false; } - MHI_LOG("Waiting for all pending event ring processing to complete\n"); + MHI_CNTRL_LOG( + "Waiting for all pending event ring processing to complete\n"); mhi_event = mhi_cntrl->mhi_event; for (i = 0; i < mhi_cntrl->total_ev_rings; i++, mhi_event++) { if (!mhi_event->request_irq) @@ -651,7 +653,7 @@ static void mhi_pm_disable_transition(struct mhi_controller *mhi_cntrl, mutex_unlock(&mhi_cntrl->pm_mutex); - MHI_LOG("Reset all active channels and remove mhi devices\n"); + MHI_CNTRL_LOG("Reset all active channels and remove mhi devices\n"); device_for_each_child(mhi_cntrl->dev, NULL, mhi_destroy_device); MHI_LOG("Finish resetting channels\n"); @@ -659,7 +661,7 @@ static void mhi_pm_disable_transition(struct mhi_controller *mhi_cntrl, /* remove support for userspace votes */ mhi_destroy_sysfs(mhi_cntrl); - MHI_LOG("Waiting for all pending threads to complete\n"); + MHI_CNTRL_LOG("Waiting for all pending threads to complete\n"); wake_up_all(&mhi_cntrl->state_event); flush_work(&mhi_cntrl->special_work); @@ -675,7 +677,7 @@ static void mhi_pm_disable_transition(struct mhi_controller *mhi_cntrl, MHI_ASSERT(atomic_read(&mhi_cntrl->pending_pkts), "pending_pkts != 0"); /* reset the ev rings and cmd rings */ - MHI_LOG("Resetting EV CTXT and CMD CTXT\n"); + MHI_CNTRL_LOG("Resetting EV CTXT and CMD CTXT\n"); mhi_cmd = mhi_cntrl->mhi_cmd; cmd_ctxt = mhi_cntrl->mhi_ctxt->cmd_ctxt; for (i = 0; i < NR_OF_CMD_RINGS; i++, mhi_cmd++, cmd_ctxt++) { @@ -711,14 +713,15 @@ static void mhi_pm_disable_transition(struct mhi_controller *mhi_cntrl, cur_state = mhi_tryset_pm_state(mhi_cntrl, MHI_PM_DISABLE); write_unlock_irq(&mhi_cntrl->pm_lock); if (unlikely(cur_state != MHI_PM_DISABLE)) - MHI_ERR("Error moving from pm state:%s to state:%s\n", + MHI_CNTRL_ERR( + "Error moving from pm state:%s to state:%s\n", to_mhi_pm_state_str(cur_state), to_mhi_pm_state_str(MHI_PM_DISABLE)); } - MHI_LOG("Exit with pm_state:%s mhi_state:%s\n", - to_mhi_pm_state_str(mhi_cntrl->pm_state), - TO_MHI_STATE_STR(mhi_cntrl->dev_state)); + MHI_CNTRL_LOG("Exit with pm_state:%s mhi_state:%s\n", + to_mhi_pm_state_str(mhi_cntrl->pm_state), + TO_MHI_STATE_STR(mhi_cntrl->dev_state)); mutex_unlock(&mhi_cntrl->pm_mutex); } @@ -740,7 +743,7 @@ int mhi_debugfs_trigger_reset(void *data, u64 val) enum MHI_PM_STATE cur_state; int ret; - MHI_LOG("Trigger MHI Reset\n"); + MHI_CNTRL_LOG("Trigger MHI Reset\n"); /* exit lpm first */ mhi_cntrl->runtime_get(mhi_cntrl, mhi_cntrl->priv_data); @@ -752,7 +755,8 @@ int mhi_debugfs_trigger_reset(void *data, u64 val) msecs_to_jiffies(mhi_cntrl->timeout_ms)); if (!ret || MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state)) { - MHI_ERR("Did not enter M0 state, cur_state:%s pm_state:%s\n", + MHI_CNTRL_ERR( + "Did not enter M0 state, cur_state:%s pm_state:%s\n", TO_MHI_STATE_STR(mhi_cntrl->dev_state), to_mhi_pm_state_str(mhi_cntrl->pm_state)); return -EIO; @@ -856,7 +860,8 @@ void mhi_process_sys_err(struct mhi_controller *mhi_cntrl) * instead we will jump directly to rddm state */ if (mhi_cntrl->rddm_image) { - MHI_LOG("Controller supports RDDM, skipping SYS_ERR_PROCESS\n"); + MHI_CNTRL_LOG( + "Controller supports RDDM, skipping SYS_ERR_PROCESS\n"); return; } @@ -880,8 +885,8 @@ void mhi_pm_st_worker(struct work_struct *work) list_for_each_entry_safe(itr, tmp, &head, node) { list_del(&itr->node); - MHI_LOG("Transition to state:%s\n", - TO_MHI_STATE_TRANS_STR(itr->state)); + MHI_CNTRL_LOG("Transition to state:%s\n", + TO_MHI_STATE_TRANS_STR(itr->state)); switch (itr->state) { case MHI_ST_TRANSITION_PBL: @@ -918,7 +923,7 @@ int mhi_async_power_up(struct mhi_controller *mhi_cntrl) enum MHI_ST_TRANSITION next_state; struct mhi_device *mhi_dev = mhi_cntrl->mhi_dev; - MHI_LOG("Requested to power on\n"); + MHI_CNTRL_LOG("Requested to power on\n"); if (mhi_cntrl->msi_allocated < mhi_cntrl->total_ev_rings) return -EINVAL; @@ -943,14 +948,14 @@ int mhi_async_power_up(struct mhi_controller *mhi_cntrl) /* setup device context */ ret = mhi_init_dev_ctxt(mhi_cntrl); if (ret) { - MHI_ERR("Error setting dev_context\n"); + MHI_CNTRL_ERR("Error setting dev_context\n"); goto error_dev_ctxt; } } ret = mhi_init_irq_setup(mhi_cntrl); if (ret) { - MHI_ERR("Error setting up irq\n"); + MHI_CNTRL_ERR("Error setting up irq\n"); goto error_setup_irq; } @@ -970,7 +975,7 @@ int mhi_async_power_up(struct mhi_controller *mhi_cntrl) ret = mhi_read_reg(mhi_cntrl, mhi_cntrl->regs, BHIEOFF, &val); if (ret) { write_unlock_irq(&mhi_cntrl->pm_lock); - MHI_ERR("Error getting bhie offset\n"); + MHI_CNTRL_ERR("Error getting bhie offset\n"); goto error_bhi_offset; } @@ -986,7 +991,8 @@ int mhi_async_power_up(struct mhi_controller *mhi_cntrl) /* confirm device is in valid exec env */ if (!MHI_IN_PBL(current_ee) && current_ee != MHI_EE_AMSS) { - MHI_ERR("Not a valid ee for power on\n"); + MHI_CNTRL_ERR("Not a valid EE for power on:%s\n", + TO_MHI_EXEC_STR(current_ee)); ret = -EIO; goto error_bhi_offset; } @@ -1001,7 +1007,7 @@ int mhi_async_power_up(struct mhi_controller *mhi_cntrl) mutex_unlock(&mhi_cntrl->pm_mutex); - MHI_LOG("Power on setup success\n"); + MHI_CNTRL_LOG("Power on setup success\n"); return 0; @@ -1026,15 +1032,15 @@ void mhi_control_error(struct mhi_controller *mhi_cntrl) enum MHI_PM_STATE cur_state, transition_state; struct mhi_sfr_info *sfr_info = mhi_cntrl->mhi_sfr; - MHI_LOG("Enter with pm_state:%s MHI_STATE:%s\n", - to_mhi_pm_state_str(mhi_cntrl->pm_state), - TO_MHI_STATE_STR(mhi_cntrl->dev_state)); + MHI_CNTRL_LOG("Enter with pm_state:%s MHI_STATE:%s\n", + to_mhi_pm_state_str(mhi_cntrl->pm_state), + TO_MHI_STATE_STR(mhi_cntrl->dev_state)); /* copy subsystem failure reason string if supported */ if (sfr_info && sfr_info->buf_addr) { memcpy(sfr_info->str, sfr_info->buf_addr, sfr_info->len); - pr_err("mhi: %s sfr: %s\n", mhi_cntrl->name, - sfr_info->buf_addr); + MHI_CNTRL_ERR("mhi:%s sfr: %s\n", mhi_cntrl->name, + sfr_info->buf_addr); } /* link is not down if device is in RDDM */ @@ -1047,9 +1053,9 @@ void mhi_control_error(struct mhi_controller *mhi_cntrl) /* proceed if we move to device error or are already in error state */ if (!MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state)) { - MHI_ERR("Failed to transition to state:%s from:%s\n", - to_mhi_pm_state_str(transition_state), - to_mhi_pm_state_str(cur_state)); + MHI_CNTRL_ERR("Failed to transition to state:%s from:%s\n", + to_mhi_pm_state_str(transition_state), + to_mhi_pm_state_str(cur_state)); goto exit_control_error; } @@ -1062,9 +1068,9 @@ void mhi_control_error(struct mhi_controller *mhi_cntrl) device_for_each_child(mhi_cntrl->dev, NULL, mhi_early_notify_device); exit_control_error: - MHI_LOG("Exit with pm_state:%s MHI_STATE:%s\n", - to_mhi_pm_state_str(mhi_cntrl->pm_state), - TO_MHI_STATE_STR(mhi_cntrl->dev_state)); + MHI_CNTRL_LOG("Exit with pm_state:%s MHI_STATE:%s\n", + to_mhi_pm_state_str(mhi_cntrl->pm_state), + TO_MHI_STATE_STR(mhi_cntrl->dev_state)); } EXPORT_SYMBOL(mhi_control_error); @@ -1082,7 +1088,7 @@ void mhi_power_down(struct mhi_controller *mhi_cntrl, bool graceful) cur_state = mhi_tryset_pm_state(mhi_cntrl, MHI_PM_LD_ERR_FATAL_DETECT); if (cur_state != MHI_PM_LD_ERR_FATAL_DETECT) - MHI_ERR("Failed to move to state:%s from:%s\n", + MHI_CNTRL_ERR("Failed to move to state:%s from:%s\n", to_mhi_pm_state_str(MHI_PM_LD_ERR_FATAL_DETECT), to_mhi_pm_state_str(mhi_cntrl->pm_state)); transition_state = MHI_PM_SHUTDOWN_NO_ACCESS; @@ -1093,7 +1099,7 @@ void mhi_power_down(struct mhi_controller *mhi_cntrl, bool graceful) mhi_queue_disable_transition(mhi_cntrl, transition_state); - MHI_LOG("Wait for shutdown to complete\n"); + MHI_CNTRL_LOG("Wait for shutdown to complete\n"); flush_work(&mhi_cntrl->st_worker); mhi_deinit_debugfs(mhi_cntrl); @@ -1704,27 +1710,27 @@ int mhi_force_rddm_mode(struct mhi_controller *mhi_cntrl) { int ret; - MHI_LOG("Enter with pm_state:%s ee:%s\n", - to_mhi_pm_state_str(mhi_cntrl->pm_state), - TO_MHI_EXEC_STR(mhi_cntrl->ee)); + MHI_CNTRL_LOG("Enter with pm_state:%s ee:%s\n", + to_mhi_pm_state_str(mhi_cntrl->pm_state), + TO_MHI_EXEC_STR(mhi_cntrl->ee)); /* device already in rddm */ if (mhi_cntrl->ee == MHI_EE_RDDM) return 0; - MHI_LOG("Triggering SYS_ERR to force rddm state\n"); + MHI_CNTRL_LOG("Triggering SYS_ERR to force rddm state\n"); mhi_set_mhi_state(mhi_cntrl, MHI_STATE_SYS_ERR); /* wait for rddm event */ - MHI_LOG("Waiting for device to enter RDDM state\n"); + MHI_CNTRL_LOG("Waiting for device to enter RDDM state\n"); ret = wait_event_timeout(mhi_cntrl->state_event, mhi_cntrl->ee == MHI_EE_RDDM, msecs_to_jiffies(mhi_cntrl->timeout_ms)); ret = ret ? 0 : -EIO; - MHI_LOG("Exiting with pm_state:%s ee:%s ret:%d\n", - to_mhi_pm_state_str(mhi_cntrl->pm_state), - TO_MHI_EXEC_STR(mhi_cntrl->ee), ret); + MHI_CNTRL_LOG("Exiting with pm_state:%s ee:%s ret:%d\n", + to_mhi_pm_state_str(mhi_cntrl->pm_state), + TO_MHI_EXEC_STR(mhi_cntrl->ee), ret); return ret; } diff --git a/drivers/net/wireless/cnss2/pci.c b/drivers/net/wireless/cnss2/pci.c index fa85c03cd90e..f7040432f9ce 100644 --- a/drivers/net/wireless/cnss2/pci.c +++ b/drivers/net/wireless/cnss2/pci.c @@ -4470,6 +4470,11 @@ static int cnss_pci_register_mhi(struct cnss_pci_data *pci_priv) if (!mhi_ctrl->log_buf) cnss_pr_err("Unable to create CNSS MHI IPC log context\n"); + mhi_ctrl->cntrl_log_buf = ipc_log_context_create(CNSS_IPC_LOG_PAGES, + "cnss-mhi-cntrl", 0); + if (!mhi_ctrl->cntrl_log_buf) + cnss_pr_err("Unable to create CNSS MHICNTRL IPC log context\n"); + ret = of_register_mhi_controller(mhi_ctrl); if (ret) { cnss_pr_err("Failed to register to MHI bus, err = %d\n", ret); @@ -4487,6 +4492,8 @@ unreg_mhi: destroy_ipc: if (mhi_ctrl->log_buf) ipc_log_context_destroy(mhi_ctrl->log_buf); + if (mhi_ctrl->cntrl_log_buf) + ipc_log_context_destroy(mhi_ctrl->cntrl_log_buf); kfree(mhi_ctrl->irq); free_mhi_ctrl: mhi_free_controller(mhi_ctrl); @@ -4501,6 +4508,8 @@ static void cnss_pci_unregister_mhi(struct cnss_pci_data *pci_priv) mhi_unregister_mhi_controller(mhi_ctrl); if (mhi_ctrl->log_buf) ipc_log_context_destroy(mhi_ctrl->log_buf); + if (mhi_ctrl->cntrl_log_buf) + ipc_log_context_destroy(mhi_ctrl->cntrl_log_buf); kfree(mhi_ctrl->irq); mhi_free_controller(mhi_ctrl); } diff --git a/include/linux/mhi.h b/include/linux/mhi.h index dbcb34c91716..f6b8ffe30fc0 100644 --- a/include/linux/mhi.h +++ b/include/linux/mhi.h @@ -411,6 +411,7 @@ struct mhi_controller { bool initiate_mhi_reset; void *priv_data; void *log_buf; + void *cntrl_log_buf; struct dentry *dentry; struct dentry *parent; @@ -905,7 +906,7 @@ char *mhi_get_restart_reason(const char *name); #ifdef CONFIG_MHI_DEBUG #define MHI_VERB(fmt, ...) do { \ - if (mhi_cntrl->klog_lvl <= MHI_MSG_VERBOSE) \ + if (mhi_cntrl->klog_lvl <= MHI_MSG_LVL_VERBOSE) \ pr_dbg("[D][%s] " fmt, __func__, ##__VA_ARGS__);\ } while (0) @@ -915,8 +916,20 @@ char *mhi_get_restart_reason(const char *name); #endif +#define MHI_CNTRL_LOG(fmt, ...) do { \ + if (mhi_cntrl->klog_lvl <= MHI_MSG_LVL_INFO) \ + printk("%s[I][%s] " fmt, KERN_INFO, __func__, \ + ##__VA_ARGS__); \ +} while (0) + +#define MHI_CNTRL_ERR(fmt, ...) do { \ + if (mhi_cntrl->klog_lvl <= MHI_MSG_LVL_ERROR) \ + printk("%s[E][%s] " fmt, KERN_ERR, __func__, \ + ##__VA_ARGS__); \ +} while (0) + #define MHI_LOG(fmt, ...) do { \ - if (mhi_cntrl->klog_lvl <= MHI_MSG_INFO) \ + if (mhi_cntrl->klog_lvl <= MHI_MSG_LVL_INFO) \ printk("%s[I][%s] " fmt, KERN_INFO, __func__, \ ##__VA_ARGS__); \ } while (0) @@ -958,6 +971,22 @@ char *mhi_get_restart_reason(const char *name); #endif +#define MHI_CNTRL_LOG(fmt, ...) do { \ + if (mhi_cntrl->klog_lvl <= MHI_MSG_LVL_INFO) \ + printk("%s[I][%s] " fmt, KERN_ERR, __func__, \ + ##__VA_ARGS__); \ + ipc_log_string(mhi_cntrl->cntrl_log_buf, "[I][%s] " fmt, \ + __func__, ##__VA_ARGS__); \ +} while (0) + +#define MHI_CNTRL_ERR(fmt, ...) do { \ + if (mhi_cntrl->klog_lvl <= MHI_MSG_LVL_ERROR) \ + printk("%s[E][%s] " fmt, KERN_ERR, __func__, \ + ##__VA_ARGS__); \ + ipc_log_string(mhi_cntrl->cntrl_log_buf, "[E][%s] " fmt, \ + __func__, ##__VA_ARGS__); \ +} while (0) + #define MHI_LOG(fmt, ...) do { \ if (mhi_cntrl->klog_lvl <= MHI_MSG_LVL_INFO) \ printk("%s[I][%s] " fmt, KERN_ERR, __func__, \