Message ID | 1640606743-10993-1-git-send-email-stefan.wahren@i2se.com (mailing list archive) |
---|---|
Headers | show |
Series | dmaengine: bcm2835: add BCM2711 40-bit DMA support | expand |
Hi, Am 27.12.21 um 13:05 schrieb 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 would be nice to get some input aka gentle ping.
On 23-01-22, 15:08, Stefan Wahren wrote: > Hi, > > Am 27.12.21 um 13:05 schrieb 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 > would be nice to get some input aka gentle ping. Somehow patch 10/11 is appearing split from rest of the series. The series looks fairly okay, dts needs more polishing as Rob indicated
Hello Stefan, Sorry to reply to this old series, but I wonder what happens to this series? 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 >
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 >>