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

Commit 227a982a authored by Vatsal Bucha's avatar Vatsal Bucha Committed by Gerrit - the friendly Code Review server
Browse files

soc: swr-mstr: Check if fifo available before bulk write



Check for fifo availability before writing slave registers
during swrm master bulk write so as to prevent swr
overflow, underflow errors.

Change-Id: I97a914cac289b3f1215ccf5c1abec88b959a9f21
Signed-off-by: default avatarVatsal Bucha <vbucha@codeaurora.org>
parent 8165cfda
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -104,6 +104,7 @@ static void swrm_unlock_sleep(struct swr_mstr_ctrl *swrm);
static u32 swr_master_read(struct swr_mstr_ctrl *swrm, unsigned int reg_addr);
static void swr_master_write(struct swr_mstr_ctrl *swrm, u16 reg_addr, u32 val);
static int swrm_runtime_resume(struct device *dev);
static void swrm_wait_for_fifo_avail(struct swr_mstr_ctrl *swrm, int swrm_rd_wr);

static u8 swrm_get_clk_div(int mclk_freq, int bus_clk_freq)
{
@@ -627,6 +628,9 @@ static int swr_master_bulk_write(struct swr_mstr_ctrl *swrm, u32 *reg_addr,
		 * This still meets the hardware spec
		 */
			usleep_range(50, 55);
			if (reg_addr[i] == SWRM_CMD_FIFO_WR_CMD)
				swrm_wait_for_fifo_avail(swrm,
							 SWRM_WR_CHECK_AVAIL);
			swr_master_write(swrm, reg_addr[i], val[i]);
		}
		usleep_range(100, 110);