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

Commit c9603cf5 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "cnss2: set rddm support boolean for MHI"

parents de6576cd 5721bf0f
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -276,6 +276,10 @@ int mhi_download_rddm_img(struct mhi_controller *mhi_cntrl, bool in_panic)
	void __iomem *base = mhi_cntrl->bhie;
	u32 rx_status;

	/* device supports RDDM but controller wants to skip ramdumps */
	if (!mhi_cntrl->rddm_supported || !mhi_cntrl->rddm_image)
		return -EINVAL;

	if (in_panic)
		return __mhi_download_rddm_in_panic(mhi_cntrl);

+1 −1
Original line number Diff line number Diff line
@@ -1760,7 +1760,7 @@ int mhi_prepare_for_power_up(struct mhi_controller *mhi_cntrl)
	 * allocate rddm table if specified, this table is for debug purpose
	 * so we'll ignore erros
	 */
	if (mhi_cntrl->rddm_size) {
	if (mhi_cntrl->rddm_supported && mhi_cntrl->rddm_size) {
		mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image,
				     mhi_cntrl->rddm_size);

+11 −9
Original line number Diff line number Diff line
@@ -1211,7 +1211,7 @@ int mhi_process_ctrl_ev_ring(struct mhi_controller *mhi_cntrl,
				 * event instead of sys error state change event
				 */
				if (mhi_cntrl->ee == MHI_EE_RDDM ||
				    mhi_cntrl->rddm_image)
				    mhi_cntrl->rddm_supported)
					break;

				MHI_ERR("MHI system error detected\n");
@@ -1637,20 +1637,20 @@ irqreturn_t mhi_intvec_threaded_handlr(int irq_number, void *dev)
		TO_MHI_EXEC_STR(ee),
		TO_MHI_STATE_STR(state));

	if (mhi_cntrl->power_down) {
		write_unlock_irq(&mhi_cntrl->pm_lock);
		goto exit_intvec;
	}

	if (state == MHI_STATE_SYS_ERR) {
		MHI_ERR("MHI system error detected\n");
		pm_state = mhi_tryset_pm_state(mhi_cntrl,
					       MHI_PM_SYS_ERR_DETECT);
	}

	if (mhi_cntrl->rddm_supported) {
		/* exit as power down is already initiated */
		if (mhi_cntrl->power_down || ee != MHI_EE_RDDM) {
			write_unlock_irq(&mhi_cntrl->pm_lock);
			goto exit_intvec;
		}

	if (ee == MHI_EE_RDDM) {
		write_lock_irq(&mhi_cntrl->pm_lock);
		/* prevent multiple entries for RDDM execution environment */
		if (mhi_cntrl->ee == MHI_EE_RDDM) {
			write_unlock_irq(&mhi_cntrl->pm_lock);
			goto exit_intvec;
@@ -1670,6 +1670,8 @@ irqreturn_t mhi_intvec_threaded_handlr(int irq_number, void *dev)
		goto exit_intvec;
	}

	write_unlock_irq(&mhi_cntrl->pm_lock);

	/* if device is in RDDM, don't bother processing SYS_ERR */
	if (ee != MHI_EE_RDDM && pm_state == MHI_PM_SYS_ERR_DETECT) {
		wake_up_all(&mhi_cntrl->state_event);
+5 −1
Original line number Diff line number Diff line
@@ -856,7 +856,7 @@ void mhi_process_sys_err(struct mhi_controller *mhi_cntrl)
	 * if controller supports rddm, we do not process sys error state,
	 * instead we will jump directly to rddm state
	 */
	if (mhi_cntrl->rddm_image) {
	if (mhi_cntrl->rddm_supported) {
		MHI_CNTRL_LOG(
			"Controller supports RDDM, skipping SYS_ERR_PROCESS\n");
		return;
@@ -1720,6 +1720,10 @@ int mhi_force_rddm_mode(struct mhi_controller *mhi_cntrl)
			to_mhi_pm_state_str(mhi_cntrl->pm_state),
			TO_MHI_EXEC_STR(mhi_cntrl->ee));

	/* device does not support RDDM */
	if (!mhi_cntrl->rddm_supported)
		return -EINVAL;

	/* device already in rddm */
	if (mhi_cntrl->ee == MHI_EE_RDDM)
		return 0;
+1 −0
Original line number Diff line number Diff line
@@ -4378,6 +4378,7 @@ static int cnss_pci_register_mhi(struct cnss_pci_data *pci_priv)
	mhi_ctrl->sbl_size = SZ_512K;
	mhi_ctrl->seg_len = SZ_512K;
	mhi_ctrl->fbc_download = true;
	mhi_ctrl->rddm_supported = true;

	mhi_ctrl->log_buf = ipc_log_context_create(CNSS_IPC_LOG_PAGES,
						   "cnss-mhi", 0);
Loading