This series adds minimal support for the new Raspberry Pi 4, so we are able
to login via debug UART.
Patch 1: Bluetooth driver fix
Patch 2-3: Fix some DT schema warnings
Patch 4-5: Prepare DTS for the new SoC BMC2711
Patch 6-9: Add Raspberry Pi 4 DTS support
Patch 10: Update MAINTAINERS
Unfortunately the Raspberry Pi Foundation didn't released a
peripheral documentation for the new SoC yet. So we only have a preliminary
datasheet [1] and reduced schematics [2].
Known issues:
Since Linux 5.3-rc1 DMA doesn't work properly on that platform.
Nicolas Saenz Julienne investigates on that issue. As a temporary workaround
i reverted the following patch to test this series:
79a98672 "dma-mapping: remove dma_max_pfn"
7559d612 "mmc: core: let the dma map ops handle bouncing"
Changes in V4:
- add Rob's Reviewed-by
- enable ZONE_DMA for ARCH_BCM2835
- fix spi reference in bcm2711.dtsi
- fix bluetooth section in RPi 4 dts
- drop "always-on" for armv8-timer
- add necessary Bluetooth driver fix
- add arm64 dts link
- additional comments to the dts files as requested by Florian
Changes in V3:
- rebased series
- add Reviewed-by
- enable ARM_GIC for ARCH_BCM2835 on arm64 too
- configure i2c pull-up in bcm2711.dtsi
- move i2c2 to bcm2835-common.dtsi
- add missing compatibles to DT schema as suggested by Rob
- fix DT schema warnings in dtsi files
- replace brcm pintrl with generic pinctrl as suggested by Linus
- make dma_zone_size depend on CONFIG_ZONE_DMA as suggested by Matthias
Changes in V2:
- use separate board file for BCM2711
- enable ARM_GIC for ARCH_BCM2835
- add Acked-by and Reviewed-by
- fix arm-pmu and timer nodes for BCM2711 reported by Marc Zyngier
- enable HDMI at board level
- move HDMI and pixelvalve into bcm2835-common.dtsi as suggested by Eric Anholt
- fix DWC2 probing warning by setting USB role to peripheral
- fix order of node references in bcm2711.dtsi
- disable I2C clock stretching quirk for BCM2711
- mark PLLD_PER as critical clock
- make PLLH clock unavailable on BCM2711
- fix compile warning in clk-bcm2835 for arm64
Changes since RFC:
- change BCM2838 -> BCM2711 as discussed in RFC
- update MAINTAINERS accordingly
- drop "spi: bcm2835: enable shared interrupt support" from series
- squash all pinctrl-bcm2835 changes into one patch
- introduce SoC specific clock registration as suggested by Florian
- fix watchdog probing for Raspberry Pi 4
- convert brcm,bcm2835.txt to json-schema
- move VC4 node to bcm2835-common.dtsi
- fallback to legacy pull config for Raspberry Pi 4
- revert unintended change of mailbox in bcm283x.dtsi
- add reference for arm64
[1] - https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711/rpi_DATA_2711_1p0_preliminary.pdf
[2] - https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/rpi_SCH_4b_4p0_reduced.pdf
Stefan Wahren (10):
bluetooth: hci_bcm: Fix RTS handling during startup
ARM: dts: bcm283x: Remove simple-bus from fixed clocks
ARM: dts: bcm283x: Remove brcm,bcm2835-pl011 compatible
ARM: dts: bcm283x: Move BCM2835/6/7 specific to bcm2835-common.dtsi
dt-bindings: arm: Convert BCM2835 board/soc bindings to json-schema
dt-bindings: arm: bcm2835: Add Raspberry Pi 4 to DT schema
ARM: bcm: Add support for BCM2711 SoC
ARM: dts: Add minimal Raspberry Pi 4 support
arm64: dts: broadcom: Add reference to RPi 4 B
MAINTAINERS: Add BCM2711 to BCM2835 ARCH
.../devicetree/bindings/arm/bcm/bcm2835.yaml | 54 ++
.../devicetree/bindings/arm/bcm/brcm,bcm2835.txt | 67 --
MAINTAINERS | 3 +-
arch/arm/boot/dts/Makefile | 1 +
arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 123 +++
arch/arm/boot/dts/bcm2711.dtsi | 844 +++++++++++++++++++++
arch/arm/boot/dts/bcm2835-common.dtsi | 194 +++++
arch/arm/boot/dts/bcm2835-rpi.dtsi | 4 -
arch/arm/boot/dts/bcm2835.dtsi | 1 +
arch/arm/boot/dts/bcm2836.dtsi | 1 +
arch/arm/boot/dts/bcm2837.dtsi | 1 +
arch/arm/boot/dts/bcm283x-rpi-usb-peripheral.dtsi | 7 +
arch/arm/boot/dts/bcm283x.dtsi | 190 +----
arch/arm/mach-bcm/Kconfig | 4 +-
arch/arm/mach-bcm/Makefile | 3 +-
arch/arm/mach-bcm/bcm2711.c | 24 +
arch/arm64/Kconfig.platforms | 5 +-
arch/arm64/boot/dts/broadcom/Makefile | 3 +-
arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dts | 2 +
drivers/bluetooth/hci_bcm.c | 2 +
20 files changed, 1272 insertions(+), 261 deletions(-)
create mode 100644 Documentation/devicetree/bindings/arm/bcm/bcm2835.yaml
delete mode 100644 Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt
create mode 100644 arch/arm/boot/dts/bcm2711-rpi-4-b.dts
create mode 100644 arch/arm/boot/dts/bcm2711.dtsi
create mode 100644 arch/arm/boot/dts/bcm2835-common.dtsi
create mode 100644 arch/arm/boot/dts/bcm283x-rpi-usb-peripheral.dtsi
create mode 100644 arch/arm/mach-bcm/bcm2711.c
create mode 100644 arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dts
--
2.7.4
The RPi 4 uses the hardware handshake lines for CYW43455, but the chip
doesn't react to HCI requests during DT probe. The reason is the inproper
handling of the RTS line during startup. According to the startup
signaling sequence in the CYW43455 datasheet, the hosts RTS line must
be driven after BT_REG_ON and BT_HOST_WAKE.
Signed-off-by: Stefan Wahren <[email protected]>
---
drivers/bluetooth/hci_bcm.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c
index 7646636..0f73f6a 100644
--- a/drivers/bluetooth/hci_bcm.c
+++ b/drivers/bluetooth/hci_bcm.c
@@ -445,9 +445,11 @@ static int bcm_open(struct hci_uart *hu)
out:
if (bcm->dev) {
+ hci_uart_set_flow_control(hu, true);
hu->init_speed = bcm->dev->init_speed;
hu->oper_speed = bcm->dev->oper_speed;
err = bcm_gpio_set_power(bcm->dev, true);
+ hci_uart_set_flow_control(hu, false);
if (err)
goto err_unset_hu;
}
--
2.7.4
On 06/10/2019 17:28, Stefan Wahren wrote:
> This series adds minimal support for the new Raspberry Pi 4, so we are able
> to login via debug UART.
>
> Patch 1: Bluetooth driver fix
> Patch 2-3: Fix some DT schema warnings
> Patch 4-5: Prepare DTS for the new SoC BMC2711
> Patch 6-9: Add Raspberry Pi 4 DTS support
> Patch 10: Update MAINTAINERS
>
> Unfortunately the Raspberry Pi Foundation didn't released a
> peripheral documentation for the new SoC yet. So we only have a preliminary
> datasheet [1] and reduced schematics [2].
>
> Known issues:
> Since Linux 5.3-rc1 DMA doesn't work properly on that platform.
> Nicolas Saenz Julienne investigates on that issue. As a temporary workaround
> i reverted the following patch to test this series:
>
> 79a98672 "dma-mapping: remove dma_max_pfn"
> 7559d612 "mmc: core: let the dma map ops handle bouncing"
>
Just for reference, the patches from Nicolas are queued for v5.5 inclusion, so
it is a better basis to test using his series:
https://patchwork.kernel.org/cover/11141719/
Regards,
Matthias
> Changes in V4:
> - add Rob's Reviewed-by
> - enable ZONE_DMA for ARCH_BCM2835
> - fix spi reference in bcm2711.dtsi
> - fix bluetooth section in RPi 4 dts
> - drop "always-on" for armv8-timer
> - add necessary Bluetooth driver fix
> - add arm64 dts link
> - additional comments to the dts files as requested by Florian
>
> Changes in V3:
> - rebased series
> - add Reviewed-by
> - enable ARM_GIC for ARCH_BCM2835 on arm64 too
> - configure i2c pull-up in bcm2711.dtsi
> - move i2c2 to bcm2835-common.dtsi
> - add missing compatibles to DT schema as suggested by Rob
> - fix DT schema warnings in dtsi files
> - replace brcm pintrl with generic pinctrl as suggested by Linus
> - make dma_zone_size depend on CONFIG_ZONE_DMA as suggested by Matthias
>
> Changes in V2:
> - use separate board file for BCM2711
> - enable ARM_GIC for ARCH_BCM2835
> - add Acked-by and Reviewed-by
> - fix arm-pmu and timer nodes for BCM2711 reported by Marc Zyngier
> - enable HDMI at board level
> - move HDMI and pixelvalve into bcm2835-common.dtsi as suggested by Eric Anholt
> - fix DWC2 probing warning by setting USB role to peripheral
> - fix order of node references in bcm2711.dtsi
> - disable I2C clock stretching quirk for BCM2711
> - mark PLLD_PER as critical clock
> - make PLLH clock unavailable on BCM2711
> - fix compile warning in clk-bcm2835 for arm64
>
> Changes since RFC:
> - change BCM2838 -> BCM2711 as discussed in RFC
> - update MAINTAINERS accordingly
> - drop "spi: bcm2835: enable shared interrupt support" from series
> - squash all pinctrl-bcm2835 changes into one patch
> - introduce SoC specific clock registration as suggested by Florian
> - fix watchdog probing for Raspberry Pi 4
> - convert brcm,bcm2835.txt to json-schema
> - move VC4 node to bcm2835-common.dtsi
> - fallback to legacy pull config for Raspberry Pi 4
> - revert unintended change of mailbox in bcm283x.dtsi
> - add reference for arm64
>
> [1] - https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711/rpi_DATA_2711_1p0_preliminary.pdf
> [2] - https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/rpi_SCH_4b_4p0_reduced.pdf
>
> Stefan Wahren (10):
> bluetooth: hci_bcm: Fix RTS handling during startup
> ARM: dts: bcm283x: Remove simple-bus from fixed clocks
> ARM: dts: bcm283x: Remove brcm,bcm2835-pl011 compatible
> ARM: dts: bcm283x: Move BCM2835/6/7 specific to bcm2835-common.dtsi
> dt-bindings: arm: Convert BCM2835 board/soc bindings to json-schema
> dt-bindings: arm: bcm2835: Add Raspberry Pi 4 to DT schema
> ARM: bcm: Add support for BCM2711 SoC
> ARM: dts: Add minimal Raspberry Pi 4 support
> arm64: dts: broadcom: Add reference to RPi 4 B
> MAINTAINERS: Add BCM2711 to BCM2835 ARCH
>
> .../devicetree/bindings/arm/bcm/bcm2835.yaml | 54 ++
> .../devicetree/bindings/arm/bcm/brcm,bcm2835.txt | 67 --
> MAINTAINERS | 3 +-
> arch/arm/boot/dts/Makefile | 1 +
> arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 123 +++
> arch/arm/boot/dts/bcm2711.dtsi | 844 +++++++++++++++++++++
> arch/arm/boot/dts/bcm2835-common.dtsi | 194 +++++
> arch/arm/boot/dts/bcm2835-rpi.dtsi | 4 -
> arch/arm/boot/dts/bcm2835.dtsi | 1 +
> arch/arm/boot/dts/bcm2836.dtsi | 1 +
> arch/arm/boot/dts/bcm2837.dtsi | 1 +
> arch/arm/boot/dts/bcm283x-rpi-usb-peripheral.dtsi | 7 +
> arch/arm/boot/dts/bcm283x.dtsi | 190 +----
> arch/arm/mach-bcm/Kconfig | 4 +-
> arch/arm/mach-bcm/Makefile | 3 +-
> arch/arm/mach-bcm/bcm2711.c | 24 +
> arch/arm64/Kconfig.platforms | 5 +-
> arch/arm64/boot/dts/broadcom/Makefile | 3 +-
> arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dts | 2 +
> drivers/bluetooth/hci_bcm.c | 2 +
> 20 files changed, 1272 insertions(+), 261 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/arm/bcm/bcm2835.yaml
> delete mode 100644 Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt
> create mode 100644 arch/arm/boot/dts/bcm2711-rpi-4-b.dts
> create mode 100644 arch/arm/boot/dts/bcm2711.dtsi
> create mode 100644 arch/arm/boot/dts/bcm2835-common.dtsi
> create mode 100644 arch/arm/boot/dts/bcm283x-rpi-usb-peripheral.dtsi
> create mode 100644 arch/arm/mach-bcm/bcm2711.c
> create mode 100644 arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dts
>
> --
> 2.7.4
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
Am 06.10.19 um 17:28 schrieb Stefan Wahren:
> This series adds minimal support for the new Raspberry Pi 4, so we are able
> to login via debug UART.
>
> Patch 1: Bluetooth driver fix
> Patch 2-3: Fix some DT schema warnings
> Patch 4-5: Prepare DTS for the new SoC BMC2711
> Patch 6-9: Add Raspberry Pi 4 DTS support
> Patch 10: Update MAINTAINERS
>
> Unfortunately the Raspberry Pi Foundation didn't released a
> peripheral documentation for the new SoC yet. So we only have a preliminary
> datasheet [1] and reduced schematics [2].
>
> Known issues:
> Since Linux 5.3-rc1 DMA doesn't work properly on that platform.
> Nicolas Saenz Julienne investigates on that issue. As a temporary workaround
> i reverted the following patch to test this series:
>
> 79a98672 "dma-mapping: remove dma_max_pfn"
> 7559d612 "mmc: core: let the dma map ops handle bouncing"
>
> Changes in V4:
> - add Rob's Reviewed-by
> - enable ZONE_DMA for ARCH_BCM2835
> - fix spi reference in bcm2711.dtsi
> - fix bluetooth section in RPi 4 dts
> - drop "always-on" for armv8-timer
> - add necessary Bluetooth driver fix
> - add arm64 dts link
> - additional comments to the dts files as requested by Florian
>
Patches 2-10 applied so that we don't miss Linux 5.5
Hi Marcel,
hi Johan,
Am 06.10.19 um 17:28 schrieb Stefan Wahren:
> The RPi 4 uses the hardware handshake lines for CYW43455, but the chip
> doesn't react to HCI requests during DT probe. The reason is the inproper
> handling of the RTS line during startup. According to the startup
> signaling sequence in the CYW43455 datasheet, the hosts RTS line must
> be driven after BT_REG_ON and BT_HOST_WAKE.
>
> Signed-off-by: Stefan Wahren <[email protected]>
> ---
> drivers/bluetooth/hci_bcm.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c
> index 7646636..0f73f6a 100644
> --- a/drivers/bluetooth/hci_bcm.c
> +++ b/drivers/bluetooth/hci_bcm.c
> @@ -445,9 +445,11 @@ static int bcm_open(struct hci_uart *hu)
>
> out:
> if (bcm->dev) {
> + hci_uart_set_flow_control(hu, true);
> hu->init_speed = bcm->dev->init_speed;
> hu->oper_speed = bcm->dev->oper_speed;
> err = bcm_gpio_set_power(bcm->dev, true);
> + hci_uart_set_flow_control(hu, false);
> if (err)
> goto err_unset_hu;
> }
> --
> 2.7.4
would be nice to get some feedback about this.
Regards
Stefan
Hi Stefan,
> The RPi 4 uses the hardware handshake lines for CYW43455, but the chip
> doesn't react to HCI requests during DT probe. The reason is the inproper
> handling of the RTS line during startup. According to the startup
> signaling sequence in the CYW43455 datasheet, the hosts RTS line must
> be driven after BT_REG_ON and BT_HOST_WAKE.
>
> Signed-off-by: Stefan Wahren <[email protected]>
> ---
> drivers/bluetooth/hci_bcm.c | 2 ++
> 1 file changed, 2 insertions(+)
patch has been applied to bluetooth-next tree.
Regards
Marcel
Hi Stefan,
>>> Meanwhile i will play with modifications of original patch on the
>>> Raspberry Pi 4 and come back to you.
>
> could you please test this patch [2] on top of current bluetooth-next?
>
> This is the solution in case we don't find the cause of this issue. I
> don't prefer this one, because this is next stuff and we need to revert
> the offending patch for Linux 5.5.
>
> [2] - https://gist.github.com/lategoodbye/3d39e4b07d401f07fa9f9c2f11e1f17d
that patch looks fine to me. Just submit it and we will see how it works out.
Regards
Marcel