From: Rosen Penev <rosenp@gmail.com>
To: linux-kernel@vger.kernel.org, f.fainelli@gmail.com,
Christoph Hellwig <hch@lst.de>, Linus Walleij <linusw@kernel.org>
Cc: "Rafał Miłecki" <zajec5@gmail.com>,
"Paul Burton" <paulburton@kernel.org>,
linux-wireless@vger.kernel.org (open list:BROADCOM SPECIFIC AMBA
DRIVER (BCMA))
Subject: [PATCH] bcma: use the SoC device for DMA on MIPS
Date: Fri, 9 Oct 2026 14:31:56 -0700 [thread overview]
Message-ID: <20261009213156.109965-1-rosenp@gmail.com> (raw)
The MIPS BCM47xx code allocates a struct device for the SoC, sets a
32-bit DMA mask on it and passes it to bcma in struct bcma_soc. bcma
never uses it: bus->dev stays NULL for the MIPS SoC host, so cores fall
back to doing DMA through their own struct device, whose
coherent_dma_mask is 0. Since
commit f8c55dc6e828 ("MIPS: use generic dma noncoherent ops for simple noncoherent platforms")
coherent allocations then fail:
bgmac_bcma bcma0:2: Allocation of TX ring 0x200 failed
bgmac_bcma bcma0:2: Unable to alloc memory for DMA
bgmac_bcma: probe of bcma0:2 failed with error -12
Set bus->dev from the SoC device and do DMA through it, as the ARM SoC
host already does. Every SoC host now has a bus device, so drop the
fallback that pointed a core's dma_mask at its coherent_dma_mask.
This addresses the review of the earlier postings: the cores' DMA masks
are no longer touched at all.
Tested on an ASUS RT-N16 (BCM4718): bgmac probes and passes traffic.
Fixes: f8c55dc6e828 ("MIPS: use generic dma noncoherent ops for simple noncoherent platforms")
Link: https://patchwork.kernel.org/project/linux-wireless/patch/20190121101121.24555-1-zajec5@gmail.com/
Link: https://lore.kernel.org/linux-mips/20220107041744.2388470-1-f.fainelli@gmail.com/
Suggested-by: Rafał Miłecki <rafal@milecki.pl>
Assisted-by: LLM
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/bcma/host_soc.c | 2 ++
drivers/bcma/main.c | 7 +------
2 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/drivers/bcma/host_soc.c b/drivers/bcma/host_soc.c
index 411cfbf53f7b..6150e1588af5 100644
--- a/drivers/bcma/host_soc.c
+++ b/drivers/bcma/host_soc.c
@@ -188,6 +188,8 @@ int __init bcma_host_soc_register(struct bcma_soc *soc)
int __init bcma_host_soc_init(struct bcma_soc *soc)
{
+ soc->bus.dev = soc->dev;
+
return bcma_bus_early_register(&soc->bus);
}
diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c
index 72f045e6ed51..3498d5419c19 100644
--- a/drivers/bcma/main.c
+++ b/drivers/bcma/main.c
@@ -251,12 +251,7 @@ void bcma_prepare_core(struct bcma_bus *bus, struct bcma_device *core)
core->irq = bus->host_pci->irq;
break;
case BCMA_HOSTTYPE_SOC:
- if (IS_ENABLED(CONFIG_OF) && bus->dev) {
- core->dma_dev = bus->dev;
- } else {
- core->dev.dma_mask = &core->dev.coherent_dma_mask;
- core->dma_dev = &core->dev;
- }
+ core->dma_dev = bus->dev;
break;
case BCMA_HOSTTYPE_SDIO:
break;
--
2.56.0
reply other threads:[~2026-10-09 21:32 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=20261009213156.109965-1-rosenp@gmail.com \
--to=rosenp@gmail.com \
--cc=f.fainelli@gmail.com \
--cc=hch@lst.de \
--cc=linusw@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=paulburton@kernel.org \
--cc=zajec5@gmail.com \
/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
all inboxes | Powered by JetHome®