mhi: cntrl: qcom: expand debug modes for new device bringup

When bringing up a new device attach to the host driver, MHI
controller can have more than one debug mode to allow for
configurable versions and make it easier to choose firmware
images and allow/disallow forced suspend/resume done to choose
new PHY settings.

Change-Id: Id2ecd98cfbaba40aca96bd167c34bfa5fd03818e
Signed-off-by: Bhaumik Bhatt <bbhatt@codeaurora.org>
This commit is contained in:
Bhaumik Bhatt 2020-03-26 18:19:36 -07:00
commit 7eee98e175
2 changed files with 26 additions and 4 deletions

View file

@ -403,6 +403,11 @@ static int mhi_force_suspend(struct mhi_controller *mhi_cntrl)
MHI_CNTRL_LOG("Entered\n");
if (debug_mode == MHI_DEBUG_NO_D3 || debug_mode == MHI_FWIMAGE_NO_D3) {
MHI_CNTRL_LOG("Exited due to debug mode:%d\n", debug_mode);
return ret;
}
mutex_lock(&mhi_cntrl->pm_mutex);
for (; itr; itr--) {
@ -676,7 +681,7 @@ static struct mhi_controller *mhi_register_controller(struct pci_dev *pci_dev)
bool use_s1;
u32 addr_win[2];
const char *iommu_dma_type;
int ret, i;
int ret, i, len;
if (!of_node)
return ERR_PTR(-ENODEV);
@ -752,14 +757,22 @@ static struct mhi_controller *mhi_register_controller(struct pci_dev *pci_dev)
if (ret)
goto error_register;
for (i = 0; i < ARRAY_SIZE(firmware_table); i++) {
len = ARRAY_SIZE(firmware_table);
for (i = 0; i < len; i++) {
firmware_info = firmware_table + i;
/* debug mode always use default */
if (!debug_mode && mhi_cntrl->dev_id == firmware_info->dev_id)
if (mhi_cntrl->dev_id == firmware_info->dev_id)
break;
}
if (debug_mode) {
if (debug_mode <= MHI_DEBUG_D3)
firmware_info = firmware_table + (len - 1);
MHI_CNTRL_LOG("fw info: debug_mode:%d dev_id:%d image:%s\n",
debug_mode, firmware_info->dev_id,
firmware_info->fw_image);
}
mhi_cntrl->fw_image = firmware_info->fw_image;
mhi_cntrl->edl_image = firmware_info->edl_image;

View file

@ -33,6 +33,15 @@
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])
enum mhi_debug_mode {
MHI_DEBUG_MODE_OFF,
MHI_DEBUG_NO_D3, /* use debug.mbn as fw image and skip first M3/D3 */
MHI_DEBUG_D3, /* use debug.mbn as fw image and allow first M3/D3 */
MHI_FWIMAGE_NO_D3, /* use fw image if found and skip first M3/D3 */
MHI_FWIMAGE_D3, /* use fw image if found and allow first M3/D3 */
MHI_DEBUG_MODE_MAX = MHI_FWIMAGE_D3,
};
enum mhi_suspend_mode {
MHI_ACTIVE_STATE,
MHI_DEFAULT_SUSPEND,