From nobody Fri Dec 19 21:14:37 2025 Received: from mail-qk1-f174.google.com (mail-qk1-f174.google.com [209.85.222.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E309C2EA752 for ; Wed, 3 Dec 2025 12:09:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764763749; cv=none; b=R0C63+UWWs9WsHhbL0/ip7h8qU8yL+A3nE9iv16GBSxMA0WRTLi+G6ClTtTO9rToNefmatJiKKvy7Zf4osslk5VXV/k3y4k5294HA5EvLZyIxkWnHvoT3iHM/G91+/YZd1+hgBjA+fTGLg7iI6AItTpOCtgBkTyRyeldhIiSs+w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764763749; c=relaxed/simple; bh=P7lSmpig9zvj2k3eR7cFCUad6kDfPxhEgkhD6MAg9ho=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=NFCtELnh2kOkUBsQtQ72Z7taM/TKYxmoPNaGKCmNPz9RlzjmV2kD5Tepwq0A6beR8x+YM4hI48O0RMTLC5CDkItCNBEAjvHpkJM8ogiclfGcHbvd1AG/aT83qubBdQ2NLhr8CkcbDzF+yieKEuceUdNS5BbblrTbSHkN8wzu7ow= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sartura.hr; spf=pass smtp.mailfrom=sartura.hr; dkim=pass (2048-bit key) header.d=sartura.hr header.i=@sartura.hr header.b=C4sjjgNA; arc=none smtp.client-ip=209.85.222.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sartura.hr Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sartura.hr Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sartura.hr header.i=@sartura.hr header.b="C4sjjgNA" Received: by mail-qk1-f174.google.com with SMTP id af79cd13be357-8b144ec3aa8so611894085a.2 for ; Wed, 03 Dec 2025 04:09:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sartura.hr; s=sartura; t=1764763747; x=1765368547; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=HY6LofQj0a46MQGd5q5uk/dioxwk+UPp1qGJ6sCZzPw=; b=C4sjjgNA8FMDK1xGguDM1lBjSRBwp1u04sFFvfLypnEJa/mPP+FnURA+ZEiLeyWdad usGyR+kWBcWnSeB6Pgf4WHnyGHrGt/XT83Tz4Rs6g1zQxBp29j8w0P77MH0o3KE3xIU0 low89WAIzGXjZqsSeYJffjdwBJhw8AP+N3TdszY+bn/msHMISjKrmjPzP2Nc+1Lt2lFv H1l/NG/300+mOjV3kofjuQrmoV781VK2myIc0uNUJQL+xV/BfDTUD3lL/+D1E9wFY+vh k4jgGH2YC8OlXmpROkLdwjz7A/YTTDU8c8lrzoSlB2uYyKAkZWWGzq7iuj17rwhNxBZM EjQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764763747; x=1765368547; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=HY6LofQj0a46MQGd5q5uk/dioxwk+UPp1qGJ6sCZzPw=; b=Kq+R7zl+tJrcMf8kFQStXXHxK0wTGcR5b5PaXdK+ytFPuTTJDl0Z+MyR1O4UMNIoy0 63fh4lGitZ31/WAuT3tzQPmztOJqffaDb/sl7Jk4DFki40oEWRoDBTX7f2LL/MQTL406 z00dZmUTLUY8GP1GKpYVAtFvPGW4oCeJbNiRIHV7+/Z6b2k7ANmx0p8zEMxBZFWdSbdA WMHSapI8pgX/K3KBGlq5LtV88MONZBGLaEEID6jdbpdpwNTNy85yNHXVyBliiBPTGqxY 6aoLn1mky8SfvDu+VaoImcWHy6l1YOharEX23PhHI/DVQIASvUarO94OqAwQqCjIJWW5 wGTQ== X-Forwarded-Encrypted: i=1; AJvYcCXRDtrlDnX/695f1Rzzy+plQjbjbmpmOAHv5RB2ElQr+IT4C+/+mbTLr1JdRDuGjvdnm7qC7IRnrEFzPbc=@vger.kernel.org X-Gm-Message-State: AOJu0Yzro8mJLS/njCV2jRsu5b7pVPkyKimSTnlWuUW8dYtju+ojXc4H +NpLyuTuRN8yu6S+Q7trMSNZmM1TPfdGeuSUGOajs81PEoLBnwNQY5SQMt0pfuha9ic= X-Gm-Gg: ASbGncvIXmjZVxsC3+k4LX4Uo6IIAdyR1cOlWh1/hG54DFrrbUGZAjfansv7PNtCvJq gxZEMLiN7wCb3eOH68aeRiB6SO6kqbCX5ao9IRRVwA/SGgX74IRFYLb8G2aLh1J9LMx2eAdoyqI JOHWk7RqmlFodxqH1M4aG5aHS/jf0IDYXYn+1WyxG80GvIAytAuBYsF2SQXPpdjanpsikUQxp6T w4kp4a8JGMwavaFY2rdmS5ZbRXj1GrCoVcK+leXLdJt85ZT1H0v5MZq1W0PgRIInU+iN39wB68P q73Qn9uWx3P0a05bWNM3o3k2fTNqkUZvv0bfE98HNVfDWe5n/I0wQivlSdmEfN8tZH7xxo9ucSj tUk76kCK89eLclsDgrT1E8HXRlKAUlT7ecr2+N8u1GkJk6PleL7n7B0FrUSXJVuELH3jNpiASS8 6sSNZ+ax45+lJQ52PoOtkBcq0L8YLIqoy1Ph4k7V2nnXnWDSxUfPw3aQg= X-Google-Smtp-Source: AGHT+IEvNXdED/r4HNe9JNsgMM/9LcSRInAqa0tAj0HpibxFF7yD3qYBXk2NGsNRo5JcknABVsIKhw== X-Received: by 2002:ad4:5aa5:0:b0:880:448b:b893 with SMTP id 6a1803df08f44-8881956a88amr25245066d6.50.1764763746646; Wed, 03 Dec 2025 04:09:06 -0800 (PST) Received: from fedora (cpezg-94-253-146-247-cbl.xnet.hr. [94.253.146.247]) by smtp.googlemail.com with ESMTPSA id 6a1803df08f44-88652b49390sm126308036d6.32.2025.12.03.04.09.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Dec 2025 04:09:06 -0800 (PST) From: Robert Marko To: ludovic.desroches@microchip.com, vkoul@kernel.org, linux-arm-kernel@lists.infradead.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, daniel.machon@microchip.com Cc: luka.perkov@sartura.hr, Tony Han , Cristian Birsan Subject: [PATCH] dmaengine: at_xdmac: get the number of DMA channels from device tree Date: Wed, 3 Dec 2025 13:08:23 +0100 Message-ID: <20251203120856.1267671-1-robert.marko@sartura.hr> X-Mailer: git-send-email 2.52.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Tony Han In case of kernel runs in non-secure mode, the number of DMA channels can be got from device tree since the value read from GTYPE register is "0" as it's always secured. As the number of channels can never be negative, update them to the type "unsigned". Signed-off-by: Tony Han Reviewed-by: Cristian Birsan --- drivers/dma/at_xdmac.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c index 3fbc74710a13..acabf82e293c 100644 --- a/drivers/dma/at_xdmac.c +++ b/drivers/dma/at_xdmac.c @@ -2257,12 +2257,29 @@ static int __maybe_unused atmel_xdmac_runtime_resum= e(struct device *dev) return clk_enable(atxdmac->clk); } =20 +static inline int at_xdmac_get_channel_number(struct platform_device *pdev, + u32 reg, u32 *pchannels) +{ + int ret; + + if (reg) { + *pchannels =3D AT_XDMAC_NB_CH(reg); + return 0; + } + + ret =3D of_property_read_u32(pdev->dev.of_node, "dma-channels", pchannels= ); + if (ret) + dev_err(&pdev->dev, "can't get number of channels\n"); + + return ret; +} + static int at_xdmac_probe(struct platform_device *pdev) { struct at_xdmac *atxdmac; - int irq, nr_channels, i, ret; + int irq, ret; void __iomem *base; - u32 reg; + u32 nr_channels, i, reg; =20 irq =3D platform_get_irq(pdev, 0); if (irq < 0) @@ -2278,7 +2295,10 @@ static int at_xdmac_probe(struct platform_device *pd= ev) * of channels to do the allocation. */ reg =3D readl_relaxed(base + AT_XDMAC_GTYPE); - nr_channels =3D AT_XDMAC_NB_CH(reg); + ret =3D at_xdmac_get_channel_number(pdev, reg, &nr_channels); + if (ret) + return ret; + if (nr_channels > AT_XDMAC_MAX_CHAN) { dev_err(&pdev->dev, "invalid number of channels (%u)\n", nr_channels); --=20 2.52.0