Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7eee98e1 authored by Bhaumik Bhatt's avatar Bhaumik Bhatt
Browse files

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: default avatarBhaumik Bhatt <bbhatt@codeaurora.org>
parent 79730055
Loading
Loading
Loading
Loading
+17 −4
Original line number Diff line number Diff line
@@ -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;

+9 −0
Original line number Diff line number Diff line
@@ -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,