devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RFC 00/11] dmaengine: bcm2835: add BCM2711 40-bit DMA support
@ 2021-12-27 12:05 Stefan Wahren
  2021-12-27 12:05 ` [PATCH RFC 01/11] ARM: dts: bcm283x: Update DMA node name per DT schema Stefan Wahren
                   ` (10 more replies)
  0 siblings, 11 replies; 15+ messages in thread
From: Stefan Wahren @ 2021-12-27 12:05 UTC (permalink / raw)
  To: Vinod Koul, Rob Herring, Florian Fainelli, Nicolas Saenz Julienne
  Cc: Ray Jui, Scott Branden, bcm-kernel-feedback-list, dmaengine,
	Phil Elwell, devicetree, linux-arm-kernel, Lukas Wunner,
	linux-rpi-kernel, Stefan Wahren

The BCM2711 has 4 DMA channels with a 40-bit address range, allowing them
to access the full 4GB of memory on a Pi 4. This patch series serves as a
basis for a discussion (just compile tested, so don't expect anything working)
which include the following points:

* correct DT binding and representation for BCM2711

According to the vendor DTS [1] the 4 DMA channels are connected to SCB.
I'm not sure how this is properly adapted to the mainline DT.

* general implementation approach

The vendor approach mapped all the BCM2835 control block bits to the BCM2711
layout and the rest of the differences are handled by a lot of is_40bit_channel
conditions. An advantage of this is the small amount of changes to the driver.
But on the down side the code is now much harder to understand and maintain.

This series tries to implement this feature in a more cleaner way
while keeping it in the bcm2835-dma driver. Before this series the driver
has ~ 1000 lines and after that ~ 1500 lines.

So the question is this approach acceptable?

Patches 1 - 3 are just clean-ups.

Disclaimer: my knowledge about the DMA controller is very limited

More information:

https://datasheets.raspberrypi.com/bcm2711/bcm2711-peripherals.pdf

[1] - https://github.com/raspberrypi/linux/blob/561deffcf471ba0f7bd48541d06a79d5aa38d297/arch/arm/boot/dts/bcm2711-rpi-ds.dtsi#L47
[2] - https://github.com/raspberrypi/linux/commit/44364bd140b0bc9187c881fbdc4ee358961059d5

Stefan Wahren (11):
  ARM: dts: bcm283x: Update DMA node name per DT schema
  dt-bindings: dma: Convert brcm,bcm2835-dma to json-schema
  dmaengine: bcm2835: Support common dma-channel-mask
  dmaengine: bcm2835: move CB info generation into separate function
  dmaengine: bcm2835: move CB final extra info generation into function
  dmaengine: bcm2835: make address increment platform independent
  dmaengine: bcm2385: drop info parameters
  dmaengine: bcm2835: pass dma_chan to generic functions
  dmaengine: bcm2835: introduce multi platform support
  dmaengine: bcm2835: add BCM2711 40-bit DMA support
  ARM: dts: bcm2711: add bcm2711-dma node

 .../devicetree/bindings/dma/brcm,bcm2835-dma.txt   |  83 ---
 .../devicetree/bindings/dma/brcm,bcm2835-dma.yaml  | 107 +++
 arch/arm/boot/dts/bcm2711.dtsi                     |  18 +-
 arch/arm/boot/dts/bcm2835-common.dtsi              |   2 +-
 drivers/dma/bcm2835-dma.c                          | 745 +++++++++++++++++----
 5 files changed, 734 insertions(+), 221 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt
 create mode 100644 Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.yaml

-- 
2.7.4


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2023-06-18 21:15 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-12-27 12:05 [PATCH RFC 00/11] dmaengine: bcm2835: add BCM2711 40-bit DMA support Stefan Wahren
2021-12-27 12:05 ` [PATCH RFC 01/11] ARM: dts: bcm283x: Update DMA node name per DT schema Stefan Wahren
2021-12-27 12:05 ` [PATCH RFC 02/11] dt-bindings: dma: Convert brcm,bcm2835-dma to json-schema Stefan Wahren
2022-01-04 22:50   ` Rob Herring
2021-12-27 12:05 ` [PATCH RFC 03/11] dmaengine: bcm2835: Support common dma-channel-mask Stefan Wahren
2021-12-27 12:05 ` [PATCH RFC 04/11] dmaengine: bcm2835: move CB info generation into separate function Stefan Wahren
2021-12-27 12:05 ` [PATCH RFC 05/11] dmaengine: bcm2835: move CB final extra info generation into function Stefan Wahren
2021-12-27 12:05 ` [PATCH RFC 06/11] dmaengine: bcm2835: make address increment platform independent Stefan Wahren
2021-12-27 12:05 ` [PATCH RFC 07/11] dmaengine: bcm2385: drop info parameters Stefan Wahren
2021-12-27 12:05 ` [PATCH RFC 08/11] dmaengine: bcm2835: pass dma_chan to generic functions Stefan Wahren
2021-12-27 12:05 ` [PATCH RFC 09/11] dmaengine: bcm2835: introduce multi platform support Stefan Wahren
2022-01-23 14:08 ` [PATCH RFC 00/11] dmaengine: bcm2835: add BCM2711 40-bit DMA support Stefan Wahren
2022-02-15 11:20   ` Vinod Koul
2023-06-18 19:43 ` Shengyu Qu
2023-06-18 21:14   ` Stefan Wahren

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).