[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