From: Konrad Dybcio <konradybcio@kernel.org>
To: Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Bjorn Andersson <andersson@kernel.org>,
Andrew Lunn <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>,
Paolo Abeni <pabeni@redhat.com>, Alex Elder <elder@kernel.org>
Cc: Marijn Suijten <marijn.suijten@somainline.org>,
linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>,
Alex Elder <elder@riscstar.com>,
Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
Simon Horman <horms@kernel.org>
Subject: [PATCH net-next v6 3/3] net: ipa: Grab IMEM slice base/size from DTS
Date: Mon, 02 Mar 2026 16:58:45 +0100 [thread overview]
Message-ID: <20260302-topic-ipa_imem-v6-3-c0ebbf3eae9f@oss.qualcomm.com> (raw)
In-Reply-To: <20260302-topic-ipa_imem-v6-0-c0ebbf3eae9f@oss.qualcomm.com>
From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
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 <elder@riscstar.com>
Acked-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
---
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;
};
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 <linux/dma-mapping.h>
#include <linux/io.h>
#include <linux/iommu.h>
+#include <linux/of_address.h>
#include <linux/platform_device.h>
#include <linux/types.h>
@@ -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 = &pdev->dev;
+ u32 imem_base, imem_size;
struct resource *res;
int ret;
@@ -656,7 +659,26 @@ int ipa_mem_init(struct ipa *ipa, struct platform_device *pdev,
ipa->mem_addr = res->start;
ipa->mem_size = resource_size(res);
- ret = ipa_imem_init(ipa, mem_data->imem_addr, mem_data->imem_size);
+ ipa_slice_np = of_parse_phandle(dev->of_node, "sram", 0);
+ if (ipa_slice_np) {
+ struct resource sram_res;
+
+ ret = of_address_to_resource(ipa_slice_np, 0, &sram_res);
+ of_node_put(ipa_slice_np);
+ if (ret)
+ goto err_unmap;
+
+ imem_base = sram_res.start;
+ imem_size = resource_size(&sram_res);
+ } else {
+ /* Backwards compatibility for DTs lacking
+ * an explicit reference
+ */
+ imem_base = mem_data->imem_addr;
+ imem_size = mem_data->imem_size;
+ }
+
+ ret = ipa_imem_init(ipa, imem_base, imem_size);
if (ret)
goto err_unmap;
--
2.53.0
next prev parent reply other threads:[~2026-03-02 15:59 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-02 15:58 [net-next PATCH v6 0/3] Grab IPA IMEM slice through DT Konrad Dybcio
2026-03-02 15:58 ` [PATCH net-next v6 1/3] dt-bindings: sram: qcom,imem: Allow modem-tables subnode Konrad Dybcio
2026-03-02 15:58 ` [PATCH net-next v6 2/3] dt-bindings: net: qcom,ipa: Add sram property for describing IMEM slice Konrad Dybcio
2026-03-02 15:58 ` Konrad Dybcio [this message]
2026-03-04 1:30 ` [net-next PATCH v6 0/3] Grab IPA IMEM slice through DT patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260302-topic-ipa_imem-v6-3-c0ebbf3eae9f@oss.qualcomm.com \
--to=konradybcio@kernel.org \
--cc=andersson@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=conor+dt@kernel.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=edumazet@google.com \
--cc=elder@kernel.org \
--cc=elder@riscstar.com \
--cc=horms@kernel.org \
--cc=konrad.dybcio@oss.qualcomm.com \
--cc=krzk+dt@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=marijn.suijten@somainline.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=robh@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox