From nobody Fri Apr 3 06:12:18 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 613D94219E9; Mon, 2 Mar 2026 15:59:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772467148; cv=none; b=AoZJDIIjNwvTKkIRpdh95h8tZCQ5zUxAFPLvgi+5iF4Qeg2qgGeDr+HtNqc482Ps+Bmlf++SqxJpctfcFrvVsdp+uffPPYCxYxM5rezM0FpEXsOmVV074rPYYV9bJ5rte9hvIRhwj+aM3FxIv5RCVg/L4cgustB95Ls9UOnwwAc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772467148; c=relaxed/simple; bh=jPoALjGIJosbnsT7LQYpnfA7my0J+97RmRVEyzh8brU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=O3NgYaiW0QF0N9UdXkr7l1bagB33mPkRFQlHAV+hGkJiccIS8DiA66rrzUkQIe4GzjEkbyS7FZ1WRNp29wUvXOOOLFpD79wKDZkRTVgev8JQ+qpd1UrGon7x8CwxVdBWSM/TFhoG82nvzxMYVg7YwGyoUCj35dxzqs7MKjWA97Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=sFMnGsgM; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="sFMnGsgM" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DDB3DC19423; Mon, 2 Mar 2026 15:59:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772467148; bh=jPoALjGIJosbnsT7LQYpnfA7my0J+97RmRVEyzh8brU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=sFMnGsgMk3rvHrYjD0+TgRDirgr/P+cWPnZkHnm7Z9v8YLyHsxw3ej39yuXwDwMor KH8jSIWAdTZcJunEkwkI0OKRSMU9hCTXAfQZM7nTLzER3dZSTJNY8V79tuvzE+3/XB Fs2yGUi6k7QG9sXWeUoO4r3u8vIwtoOIkdzFchb0WYi9jh3vTLnTQktsVvHGw6a5gY 5d+jBgW8P61/JW0l/RpxQqNJ30PKadxq0gzhLOvXUThlb/h2jpNbO6+Lt3N9Ymc+ME H23EMAZ3IyOpjKw3npGjqmdlRRP9jiLut7VnilBhzY3VJPYuxupsiKqNm7TfHdc/JO w6+XaB2Zz2ZMA== From: Konrad Dybcio Date: Mon, 02 Mar 2026 16:58:45 +0100 Subject: [PATCH net-next v6 3/3] net: ipa: Grab IMEM slice base/size from DTS Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260302-topic-ipa_imem-v6-3-c0ebbf3eae9f@oss.qualcomm.com> References: <20260302-topic-ipa_imem-v6-0-c0ebbf3eae9f@oss.qualcomm.com> In-Reply-To: <20260302-topic-ipa_imem-v6-0-c0ebbf3eae9f@oss.qualcomm.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alex Elder Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Konrad Dybcio , Alex Elder , Dmitry Baryshkov , Simon Horman X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1772467127; l=2779; i=konrad.dybcio@oss.qualcomm.com; s=20230215; h=from:subject:message-id; bh=IjEzmMlwd+3eC68bOWdIEpVrr7dfATtLLbU+ngjO+E4=; b=HxdYODHFO1ypLQqwFh6Smn5yUCMVYHYWUUN/NZ900TGu/Ca82nspqvG2qSpMbd7u4ZgzO2x3a FZggmUClw/jBDEOUDx2lF4vBI8XMox3yD/UV80Z66PX1Z/ft89u6Npc X-Developer-Key: i=konrad.dybcio@oss.qualcomm.com; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= From: Konrad Dybcio This is a detail that differ per chip, and not per IPA version (and there are cases of the same IPA versions being implemented across very very very different SoCs). This region isn't actually used by the driver, but we most definitely want to iommu-map it, so that IPA can poke at the data within. Reviewed-by: Alex Elder Acked-by: Dmitry Baryshkov Reviewed-by: Simon Horman Signed-off-by: Konrad Dybcio --- drivers/net/ipa/ipa_data.h | 9 +++++++-- drivers/net/ipa/ipa_mem.c | 24 +++++++++++++++++++++++- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/drivers/net/ipa/ipa_data.h b/drivers/net/ipa/ipa_data.h index 2fd03f0799b2..f3bdc64cef05 100644 --- a/drivers/net/ipa/ipa_data.h +++ b/drivers/net/ipa/ipa_data.h @@ -185,8 +185,13 @@ struct ipa_resource_data { struct ipa_mem_data { u32 local_count; const struct ipa_mem *local; - u32 imem_addr; - u32 imem_size; + + /* These values are now passed via DT, but to support + * older systems we must allow this to be specified here. + */ + u32 imem_addr; /* DEPRECATED */ + u32 imem_size; /* DEPRECATED */ + u32 smem_size; }; =20 diff --git a/drivers/net/ipa/ipa_mem.c b/drivers/net/ipa/ipa_mem.c index 835a3c9c1fd4..078d32a18dbf 100644 --- a/drivers/net/ipa/ipa_mem.c +++ b/drivers/net/ipa/ipa_mem.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include =20 @@ -617,7 +618,9 @@ static void ipa_smem_exit(struct ipa *ipa) int ipa_mem_init(struct ipa *ipa, struct platform_device *pdev, const struct ipa_mem_data *mem_data) { + struct device_node *ipa_slice_np; struct device *dev =3D &pdev->dev; + u32 imem_base, imem_size; struct resource *res; int ret; =20 @@ -656,7 +659,26 @@ int ipa_mem_init(struct ipa *ipa, struct platform_devi= ce *pdev, ipa->mem_addr =3D res->start; ipa->mem_size =3D resource_size(res); =20 - ret =3D ipa_imem_init(ipa, mem_data->imem_addr, mem_data->imem_size); + ipa_slice_np =3D of_parse_phandle(dev->of_node, "sram", 0); + if (ipa_slice_np) { + struct resource sram_res; + + ret =3D of_address_to_resource(ipa_slice_np, 0, &sram_res); + of_node_put(ipa_slice_np); + if (ret) + goto err_unmap; + + imem_base =3D sram_res.start; + imem_size =3D resource_size(&sram_res); + } else { + /* Backwards compatibility for DTs lacking + * an explicit reference + */ + imem_base =3D mem_data->imem_addr; + imem_size =3D mem_data->imem_size; + } + + ret =3D ipa_imem_init(ipa, imem_base, imem_size); if (ret) goto err_unmap; =20 --=20 2.53.0