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

Commit 4dfd3f42 authored by Bhaumik Bhatt's avatar Bhaumik Bhatt
Browse files

mhi: core: ensure non-zero session or sequence ID values



While writing any sequence or session identifiers, it is
possible that the host could write a zero value, whereas only
non-zero values are supported writes to those registers. Ensure
that host does not write a non-zero value for those cases.

Change-Id: I33248a0aa43321c85a107e394f953774140dec50
Signed-off-by: default avatarBhaumik Bhatt <bbhatt@codeaurora.org>
parent b09fb5f8
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. */
/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. */

#include <linux/debugfs.h>
#include <linux/delay.h>
@@ -319,6 +319,9 @@ static int mhi_fw_load_amss(struct mhi_controller *mhi_cntrl,
			mhi_buf->len);

	mhi_cntrl->sequence_id = prandom_u32() & BHIE_TXVECSTATUS_SEQNUM_BMSK;
	if (unlikely(!mhi_cntrl->sequence_id))
		mhi_cntrl->sequence_id = 1;

	mhi_write_reg_field(mhi_cntrl, base, BHIE_TXVECDB_OFFS,
			    BHIE_TXVECDB_SEQNUM_BMSK, BHIE_TXVECDB_SEQNUM_SHFT,
			    mhi_cntrl->sequence_id);
@@ -381,6 +384,9 @@ static int mhi_fw_load_sbl(struct mhi_controller *mhi_cntrl,
		      lower_32_bits(dma_addr));
	mhi_cntrl->write_reg(mhi_cntrl, base, BHI_IMGSIZE, size);
	mhi_cntrl->session_id = prandom_u32() & BHI_TXDB_SEQNUM_BMSK;
	if (unlikely(!mhi_cntrl->session_id))
		mhi_cntrl->session_id = 1;

	mhi_cntrl->write_reg(mhi_cntrl, base, BHI_IMGTXDB,
			mhi_cntrl->session_id);
	read_unlock_bh(pm_lock);