[PATCH RFC 00/11] dmaengine: bcm2835: add BCM2711 40-bit DMA support
Stefan Wahren
stefan.wahren at i2se.com
Sun Jun 18 14:14:55 PDT 2023
Hi Sengyu,
Am 18.06.23 um 21:43 schrieb Shengyu Qu:
> Hello Stefan,
>
> Sorry to reply to this old series, but I wonder what happens to this
> series?
i never found the time to prepare a newer version. Unfortunately the
downstream kernel had a lot of changes regarding this feature recently.
>
> Best regards,
>
> Shengyu
>
>> 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
>>
More information about the linux-arm-kernel
mailing list