Commit c0732fe7 authored by Suraj Gupta's avatar Suraj Gupta Committed by Vinod Koul
Browse files

dmaengine: xilinx_dma: Fix uninitialized addr_width when "xlnx,addrwidth" property is missing



When device tree lacks optional "xlnx,addrwidth" property, the addr_width
variable remained uninitialized with garbage values, causing incorrect
DMA mask configuration and subsequent probe failure. The fix ensures a
fallback to the default 32-bit address width when this property is missing.

Signed-off-by: default avatarSuraj Gupta <suraj.gupta2@amd.com>
Fixes: b72db400 ("dmaengine: vdma: Add 64 bit addressing support to the driver")
Reviewed-by: default avatarRadhey Shyam Pandey <radhey.shyam.pandey@amd.com>
Reviewed-by: default avatarFolker Schwesinger <dev@folker-schwesinger.de>
Link: https://patch.msgid.link/20251021183006.3434495-1-suraj.gupta2@amd.com


Signed-off-by: default avatarVinod Koul <vkoul@kernel.org>
parent 2efd07a7
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -131,6 +131,7 @@
#define XILINX_MCDMA_MAX_CHANS_PER_DEVICE	0x20
#define XILINX_DMA_MAX_CHANS_PER_DEVICE		0x2
#define XILINX_CDMA_MAX_CHANS_PER_DEVICE	0x1
#define XILINX_DMA_DFAULT_ADDRWIDTH		0x20

#define XILINX_DMA_DMAXR_ALL_IRQ_MASK	\
		(XILINX_DMA_DMASR_FRM_CNT_IRQ | \
@@ -3159,7 +3160,7 @@ static int xilinx_dma_probe(struct platform_device *pdev)
	struct device_node *node = pdev->dev.of_node;
	struct xilinx_dma_device *xdev;
	struct device_node *child, *np = pdev->dev.of_node;
	u32 num_frames, addr_width, len_width;
	u32 num_frames, addr_width = XILINX_DMA_DFAULT_ADDRWIDTH, len_width;
	int i, err;

	/* Allocate and initialize the DMA engine structure */
@@ -3235,7 +3236,9 @@ static int xilinx_dma_probe(struct platform_device *pdev)

	err = of_property_read_u32(node, "xlnx,addrwidth", &addr_width);
	if (err < 0)
		dev_warn(xdev->dev, "missing xlnx,addrwidth property\n");
		dev_warn(xdev->dev,
			 "missing xlnx,addrwidth property, using default value %d\n",
			 XILINX_DMA_DFAULT_ADDRWIDTH);

	if (addr_width > 32)
		xdev->ext_addr = true;