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

Commit 54eb5e26 authored by Srinivas Kandagatla's avatar Srinivas Kandagatla Committed by Vinod Koul
Browse files

dmaengine: qcom: bam_dma: do not write to global regs in remote mode



BAM_DESC_CNT_TRSHLD register is global register, which can only be written
when BAM is in master mode, So check the mode of operation before writing
it.

Without this check SOC's xPU would catch such access and crash the system.
First noticed on DB820c while testing SLIMBus BAM.

Signed-off-by: default avatarSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
parent 48d163b1
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -935,12 +935,15 @@ static void bam_apply_new_config(struct bam_chan *bchan,
	struct bam_device *bdev = bchan->bdev;
	u32 maxburst;

	if (!bdev->controlled_remotely) {
		if (dir == DMA_DEV_TO_MEM)
			maxburst = bchan->slave.src_maxburst;
		else
			maxburst = bchan->slave.dst_maxburst;

	writel_relaxed(maxburst, bam_addr(bdev, 0, BAM_DESC_CNT_TRSHLD));
		writel_relaxed(maxburst,
			       bam_addr(bdev, 0, BAM_DESC_CNT_TRSHLD));
	}

	bchan->reconfigure = 0;
}