linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RFC 14/18] HACK: pinctrl: bcm2835: Implement legacy pull for BCM7211
@ 2019-07-17 21:16 Stefan Wahren
  2019-07-17 21:16 ` [PATCH RFC 15/18] spi: bcm2835: enable shared interrupt support Stefan Wahren
                   ` (4 more replies)
  0 siblings, 5 replies; 23+ messages in thread
From: Stefan Wahren @ 2019-07-17 21:16 UTC (permalink / raw)
  To: Eric Anholt, Florian Fainelli, Ray Jui, Scott Branden,
	Nicolas Saenz Julienne, Rob Herring, Mark Rutland, Linus Walleij,
	Michael Turquette, Stephen Boyd, Ulf Hansson, Adrian Hunter,
	Mark Brown
  Cc: bcm-kernel-feedback-list, linux-rpi-kernel, linux-arm-kernel,
	Stefan Wahren

This temporay hack is necessary to make the BCM2838/7211 work with the legacy
pull configuration. The better approach is to convert all affected DTS files
to the generic bias control.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
---
 drivers/pinctrl/bcm/pinctrl-bcm2835.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/pinctrl/bcm/pinctrl-bcm2835.c b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
index 7f7cc5c..56161b6 100644
--- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
@@ -1003,6 +1003,13 @@ static int bcm7211_pinconf_set(struct pinctrl_dev *pctldev,

 		/* convert to 7211 value */
 		switch (param) {
+		case BCM2835_PINCONF_PARAM_PULL:
+			/* convert legacy brcm,pull */
+			if (arg == BCM2835_PUD_UP)
+				arg = BCM7211_PINCONFIG_PULL_UP;
+			else if (arg == BCM2835_PUD_DOWN)
+				arg = BCM7211_PINCONFIG_PULL_DOWN;
+			break;
 		case PIN_CONFIG_BIAS_DISABLE:
 			arg = BCM7211_PINCONFIG_PULL_NONE;
 			break;
--
2.7.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH RFC 15/18] spi: bcm2835: enable shared interrupt support
  2019-07-17 21:16 [PATCH RFC 14/18] HACK: pinctrl: bcm2835: Implement legacy pull for BCM7211 Stefan Wahren
@ 2019-07-17 21:16 ` Stefan Wahren
  2019-07-18 12:42   ` Mark Brown
  2019-07-17 21:16 ` [PATCH RFC 16/18] dt-bindings: bcm: Add Raspberry Pi 4 B Stefan Wahren
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 23+ messages in thread
From: Stefan Wahren @ 2019-07-17 21:16 UTC (permalink / raw)
  To: Eric Anholt, Florian Fainelli, Ray Jui, Scott Branden,
	Nicolas Saenz Julienne, Rob Herring, Mark Rutland, Linus Walleij,
	Michael Turquette, Stephen Boyd, Ulf Hansson, Adrian Hunter,
	Mark Brown
  Cc: Martin Sperl, bcm-kernel-feedback-list, linux-rpi-kernel,
	linux-arm-kernel, Stefan Wahren

From: Martin Sperl <kernel@martin.sperl.org>

The new BCM2838 share one interrupt for multiple instances of the BCM2835
SPI controller. So this enables shared interrupt support for them.

Signed-off-by: Martin Sperl <kernel@martin.sperl.org>
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
---
 drivers/spi/spi-bcm2835.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c
index 6f243a9..50969ae 100644
--- a/drivers/spi/spi-bcm2835.c
+++ b/drivers/spi/spi-bcm2835.c
@@ -346,6 +346,10 @@ static irqreturn_t bcm2835_spi_interrupt(int irq, void *dev_id)
 	if (bs->tx_len && cs & BCM2835_SPI_CS_DONE)
 		bcm2835_wr_fifo_blind(bs, BCM2835_SPI_FIFO_SIZE);

+	/* check if we got interrupt enabled */
+	if (!(bcm2835_rd(bs, BCM2835_SPI_CS) & BCM2835_SPI_CS_INTR))
+		return IRQ_NONE;
+
 	/* Read as many bytes as possible from FIFO */
 	bcm2835_rd_fifo(bs);
 	/* Write as many bytes as possible to FIFO */
@@ -1028,8 +1032,8 @@ static int bcm2835_spi_probe(struct platform_device *pdev)
 	bcm2835_wr(bs, BCM2835_SPI_CS,
 		   BCM2835_SPI_CS_CLEAR_RX | BCM2835_SPI_CS_CLEAR_TX);

-	err = devm_request_irq(&pdev->dev, bs->irq, bcm2835_spi_interrupt, 0,
-			       dev_name(&pdev->dev), ctlr);
+	err = devm_request_irq(&pdev->dev, bs->irq, bcm2835_spi_interrupt,
+			       IRQF_SHARED, dev_name(&pdev->dev), ctlr);
 	if (err) {
 		dev_err(&pdev->dev, "could not request IRQ: %d\n", err);
 		goto out_clk_disable;
--
2.7.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH RFC 16/18] dt-bindings: bcm: Add Raspberry Pi 4 B
  2019-07-17 21:16 [PATCH RFC 14/18] HACK: pinctrl: bcm2835: Implement legacy pull for BCM7211 Stefan Wahren
  2019-07-17 21:16 ` [PATCH RFC 15/18] spi: bcm2835: enable shared interrupt support Stefan Wahren
@ 2019-07-17 21:16 ` Stefan Wahren
  2019-07-17 21:16 ` [PATCH RFC 17/18] ARM: bcm2835: Add bcm2838 compatible string Stefan Wahren
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 23+ messages in thread
From: Stefan Wahren @ 2019-07-17 21:16 UTC (permalink / raw)
  To: Eric Anholt, Florian Fainelli, Ray Jui, Scott Branden,
	Nicolas Saenz Julienne, Rob Herring, Mark Rutland, Linus Walleij,
	Michael Turquette, Stephen Boyd, Ulf Hansson, Adrian Hunter,
	Mark Brown
  Cc: bcm-kernel-feedback-list, linux-rpi-kernel, linux-arm-kernel,
	Stefan Wahren

This adds the root properties for the Raspberry Pi 4 B.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
---
 Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt
index 245328f..d031e10 100644
--- a/Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt
+++ b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt
@@ -54,6 +54,10 @@ Raspberry Pi Compute Module 3 Lite
 Required root node properties:
 compatible = "raspberrypi,3-compute-module-lite", "brcm,bcm2837";

+Raspberry Pi 4 Model B
+Required root node properties:
+compatible = "raspberrypi,4-model-b", "brcm,bcm2838";
+
 Raspberry Pi Zero
 Required root node properties:
 compatible = "raspberrypi,model-zero", "brcm,bcm2835";
--
2.7.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH RFC 17/18] ARM: bcm2835: Add bcm2838 compatible string
  2019-07-17 21:16 [PATCH RFC 14/18] HACK: pinctrl: bcm2835: Implement legacy pull for BCM7211 Stefan Wahren
  2019-07-17 21:16 ` [PATCH RFC 15/18] spi: bcm2835: enable shared interrupt support Stefan Wahren
  2019-07-17 21:16 ` [PATCH RFC 16/18] dt-bindings: bcm: Add Raspberry Pi 4 B Stefan Wahren
@ 2019-07-17 21:16 ` Stefan Wahren
  2019-07-17 21:16 ` [PATCH RFC 18/18] ARM: dts: Add minimal Raspberry Pi 4 support Stefan Wahren
  2019-08-02 22:12 ` [PATCH RFC 14/18] HACK: pinctrl: bcm2835: Implement legacy pull for BCM7211 Linus Walleij
  4 siblings, 0 replies; 23+ messages in thread
From: Stefan Wahren @ 2019-07-17 21:16 UTC (permalink / raw)
  To: Eric Anholt, Florian Fainelli, Ray Jui, Scott Branden,
	Nicolas Saenz Julienne, Rob Herring, Mark Rutland, Linus Walleij,
	Michael Turquette, Stephen Boyd, Ulf Hansson, Adrian Hunter,
	Mark Brown
  Cc: Phil Elwell, bcm-kernel-feedback-list, linux-rpi-kernel,
	linux-arm-kernel

From: Phil Elwell <phil@raspberrypi.org>

This adds support for the new BCM2838 SoC found on the Raspberry Pi 4.

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
---
 arch/arm/mach-bcm/board_bcm2835.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/mach-bcm/board_bcm2835.c b/arch/arm/mach-bcm/board_bcm2835.c
index d2b31a9..578eaaa 100644
--- a/arch/arm/mach-bcm/board_bcm2835.c
+++ b/arch/arm/mach-bcm/board_bcm2835.c
@@ -19,6 +19,7 @@ static const char * const bcm2835_compat[] = {
 #ifdef CONFIG_ARCH_MULTI_V7
 	"brcm,bcm2836",
 	"brcm,bcm2837",
+	"brcm,bcm2838",
 #endif
 	NULL
 };
--
2.7.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH RFC 18/18] ARM: dts: Add minimal Raspberry Pi 4 support
  2019-07-17 21:16 [PATCH RFC 14/18] HACK: pinctrl: bcm2835: Implement legacy pull for BCM7211 Stefan Wahren
                   ` (2 preceding siblings ...)
  2019-07-17 21:16 ` [PATCH RFC 17/18] ARM: bcm2835: Add bcm2838 compatible string Stefan Wahren
@ 2019-07-17 21:16 ` Stefan Wahren
  2019-07-17 21:22   ` Florian Fainelli
  2019-07-23 18:13   ` Marc Zyngier
  2019-08-02 22:12 ` [PATCH RFC 14/18] HACK: pinctrl: bcm2835: Implement legacy pull for BCM7211 Linus Walleij
  4 siblings, 2 replies; 23+ messages in thread
From: Stefan Wahren @ 2019-07-17 21:16 UTC (permalink / raw)
  To: Eric Anholt, Florian Fainelli, Ray Jui, Scott Branden,
	Nicolas Saenz Julienne, Rob Herring, Mark Rutland, Linus Walleij,
	Michael Turquette, Stephen Boyd, Ulf Hansson, Adrian Hunter,
	Mark Brown
  Cc: bcm-kernel-feedback-list, linux-rpi-kernel, linux-arm-kernel,
	Stefan Wahren

This adds minimal support for the new Raspberry Pi 4 without the
fancy stuff like GENET, PCIe, XHCI, 40 bit DMA and V3D. The RPi 4 is available
in 3 different variants (1, 2 and 4 GB RAM), so leave the memory size to zero
and let the bootloader take care of it.

Other differences to the Raspberry Pi 3:
- additional GIC 400 Interrupt controller
- new thermal IP and HWRNG
- additional MMC interface (emmc2)
- additional UART, I2C, SPI and PWM interfaces

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
---
 arch/arm/boot/dts/Makefile            |   1 +
 arch/arm/boot/dts/bcm2838-rpi-4-b.dts | 120 +++++++
 arch/arm/boot/dts/bcm2838.dtsi        | 657 ++++++++++++++++++++++++++++++++++
 arch/arm/boot/dts/bcm283x.dtsi        |   2 +-
 4 files changed, 779 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/boot/dts/bcm2838-rpi-4-b.dts
 create mode 100644 arch/arm/boot/dts/bcm2838.dtsi

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 9159fa2..7ec9c90 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -83,6 +83,7 @@ dtb-$(CONFIG_ARCH_BCM2835) += \
 	bcm2837-rpi-3-b.dtb \
 	bcm2837-rpi-3-b-plus.dtb \
 	bcm2837-rpi-cm3-io3.dtb \
+	bcm2838-rpi-4-b.dtb \
 	bcm2835-rpi-zero.dtb \
 	bcm2835-rpi-zero-w.dtb
 dtb-$(CONFIG_ARCH_BCM_5301X) += \
diff --git a/arch/arm/boot/dts/bcm2838-rpi-4-b.dts b/arch/arm/boot/dts/bcm2838-rpi-4-b.dts
new file mode 100644
index 0000000..38308d4
--- /dev/null
+++ b/arch/arm/boot/dts/bcm2838-rpi-4-b.dts
@@ -0,0 +1,120 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+#include "bcm2838.dtsi"
+#include "bcm2835-rpi.dtsi"
+
+/ {
+	compatible = "raspberrypi,4-model-b", "brcm,bcm2838";
+	model = "Raspberry Pi 4 Model B";
+
+	chosen {
+		/* 8250 auxiliary UART instead of pl011 */
+		stdout-path = "serial1:115200n8";
+	};
+
+	memory@0 {
+		device_type = "memory";
+		reg = <0 0 0x00000000>;
+	};
+
+	leds {
+		act {
+			gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
+		};
+
+		pwr {
+			label = "PWR";
+			gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	wifi_pwrseq: wifi-pwrseq {
+		compatible = "mmc-pwrseq-simple";
+		reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
+	};
+
+	sd_io_1v8_reg: sd_io_1v8_reg {
+		compatible = "regulator-gpio";
+		regulator-name = "vdd-sd-io";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+		regulator-settling-time-us = <5000>;
+		gpios = <&expgpio 4 GPIO_ACTIVE_HIGH>;
+		states = <1800000 0x1
+			  3300000 0x0>;
+		status = "okay";
+	};
+};
+
+&firmware {
+	expgpio: gpio {
+		compatible = "raspberrypi,firmware-gpio";
+		gpio-controller;
+		#gpio-cells = <2>;
+		gpio-line-names = "BT_ON",
+				  "WL_ON",
+				  "PWR_LED_OFF",
+				  "GLOBAL_RESET",
+				  "VDD_SD_IO_SEL",
+				  "CAM_GPIO",
+				  "",
+				  "";
+		status = "okay";
+	};
+};
+
+&pwm1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pwm1_0_gpio40 &pwm1_1_gpio41>;
+	status = "okay";
+};
+
+/* SDHCI is used to control the SDIO for wireless */
+&sdhci {
+	#address-cells = <1>;
+	#size-cells = <0>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&emmc_gpio34>;
+	bus-width = <4>;
+	non-removable;
+	mmc-pwrseq = <&wifi_pwrseq>;
+	status = "okay";
+
+	brcmf: wifi@1 {
+		reg = <1>;
+		compatible = "brcm,bcm4329-fmac";
+	};
+};
+
+/* EMMC2 is used to drive the SD card */
+&emmc2 {
+	vqmmc-supply = <&sd_io_1v8_reg>;
+	broken-cd;
+	status = "okay";
+};
+
+/* uart0 communicates with the BT module */
+&uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart0_ctsrts_gpio30 &uart0_gpio32 &gpclk2_gpio43>;
+	status = "okay";
+
+	bluetooth {
+		compatible = "brcm,bcm43438-bt";
+		max-speed = <2000000>;
+		shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
+	};
+};
+
+/* uart1 is mapped to the pin header */
+&uart1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart1_gpio14>;
+	status = "okay";
+};
+
+&vchiq {
+	interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
+};
diff --git a/arch/arm/boot/dts/bcm2838.dtsi b/arch/arm/boot/dts/bcm2838.dtsi
new file mode 100644
index 0000000..e004d70
--- /dev/null
+++ b/arch/arm/boot/dts/bcm2838.dtsi
@@ -0,0 +1,657 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "bcm283x.dtsi"
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/soc/bcm2835-pm.h>
+
+/ {
+	compatible = "brcm,bcm2838";
+
+	#address-cells = <2>;
+	#size-cells = <1>;
+
+	interrupt-parent = <&gicv2>;
+
+	soc {
+		ranges = <0x7e000000  0x0 0xfe000000  0x01800000>,
+			 <0x7c000000  0x0 0xfc000000  0x02000000>,
+			 <0x40000000  0x0 0xff800000  0x00800000>;
+		/* Emulate a contiguous 30-bit address range for DMA */
+		dma-ranges = <0xc0000000  0x0 0x00000000  0x3c000000>;
+
+		local_intc: local_intc@40000000 {
+			compatible = "brcm,bcm2836-l1-intc";
+			reg = <0x40000000 0x100>;
+		};
+
+		gicv2: gic400@40041000 {
+			interrupt-controller;
+			#interrupt-cells = <3>;
+			compatible = "arm,gic-400";
+			reg =	<0x40041000 0x1000>,
+				<0x40042000 0x2000>,
+				<0x40044000 0x2000>,
+				<0x40046000 0x2000>;
+		};
+
+		dma: dma@7e007000 {
+			compatible = "brcm,bcm2835-dma";
+			reg = <0x7e007000 0xb00>;
+			interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>, /* dmalite  7 */
+				     <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>, /* dmalite  8 */
+				     <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>, /* dmalite  9 */
+				     <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>; /* dmalite 10 */
+			interrupt-names = "dma0",
+					  "dma1",
+					  "dma2",
+					  "dma3",
+					  "dma4",
+					  "dma5",
+					  "dma6",
+					  "dma7",
+					  "dma8",
+					  "dma9",
+					  "dma10";
+			#dma-cells = <1>;
+			brcm,dma-channel-mask = <0x07f5>;
+		};
+
+		pm: watchdog@7e100000 {
+			reg = <0x7e100000 0x114>,
+			      <0x7e00a000 0x24>,
+			      <0x7ec11000 0x20>;
+		};
+
+		rng@7e104000 {
+			interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
+
+			/* RNG is incompatible to brcm,bcm2835-rng */
+			status = "disabled";
+		};
+
+		uart2: serial@7e201400 {
+			compatible = "arm,pl011", "arm,primecell";
+			reg = <0x7e201400 0x200>;
+			interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clocks BCM2835_CLOCK_UART>,
+				 <&clocks BCM2835_CLOCK_VPU>;
+			clock-names = "uartclk", "apb_pclk";
+			arm,primecell-periphid = <0x00241011>;
+			status = "disabled";
+		};
+
+		uart3: serial@7e201600 {
+			compatible = "arm,pl011", "arm,primecell";
+			reg = <0x7e201600 0x200>;
+			interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clocks BCM2835_CLOCK_UART>,
+				 <&clocks BCM2835_CLOCK_VPU>;
+			clock-names = "uartclk", "apb_pclk";
+			arm,primecell-periphid = <0x00241011>;
+			status = "disabled";
+		};
+
+		uart4: serial@7e201800 {
+			compatible = "arm,pl011", "arm,primecell";
+			reg = <0x7e201800 0x200>;
+			interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clocks BCM2835_CLOCK_UART>,
+				 <&clocks BCM2835_CLOCK_VPU>;
+			clock-names = "uartclk", "apb_pclk";
+			arm,primecell-periphid = <0x00241011>;
+			status = "disabled";
+		};
+
+		uart5: serial@7e201a00 {
+			compatible = "arm,pl011", "arm,primecell";
+			reg = <0x7e201a00 0x200>;
+			interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clocks BCM2835_CLOCK_UART>,
+				 <&clocks BCM2835_CLOCK_VPU>;
+			clock-names = "uartclk", "apb_pclk";
+			arm,primecell-periphid = <0x00241011>;
+			status = "disabled";
+		};
+
+		spi@7e204000 {
+			reg = <0x7e204000 0x0200>;
+			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+		};
+
+		spi3: spi@7e204600 {
+			compatible = "brcm,bcm2835-spi";
+			reg = <0x7e204600 0x0200>;
+			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clocks BCM2835_CLOCK_VPU>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		spi4: spi@7e204800 {
+			compatible = "brcm,bcm2835-spi";
+			reg = <0x7e204800 0x0200>;
+			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clocks BCM2835_CLOCK_VPU>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		spi5: spi@7e204a00 {
+			compatible = "brcm,bcm2835-spi";
+			reg = <0x7e204a00 0x0200>;
+			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clocks BCM2835_CLOCK_VPU>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		spi6: spi@7e204c00 {
+			compatible = "brcm,bcm2835-spi";
+			reg = <0x7e204c00 0x0200>;
+			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clocks BCM2835_CLOCK_VPU>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		i2c3: i2c@7e205600 {
+			compatible = "brcm,bcm2835-i2c";
+			reg = <0x7e205600 0x200>;
+			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clocks BCM2835_CLOCK_VPU>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		i2c4: i2c@7e205800 {
+			compatible = "brcm,bcm2835-i2c";
+			reg = <0x7e205800 0x200>;
+			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clocks BCM2835_CLOCK_VPU>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		i2c5: i2c@7e205a00 {
+			compatible = "brcm,bcm2835-i2c";
+			reg = <0x7e205a00 0x200>;
+			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clocks BCM2835_CLOCK_VPU>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		i2c6: i2c@7e205c00 {
+			compatible = "brcm,bcm2835-i2c";
+			reg = <0x7e205c00 0x200>;
+			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clocks BCM2835_CLOCK_VPU>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		pixelvalve@7e206000 {
+			interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
+		};
+
+		pixelvalve@7e207000 {
+			interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+		};
+
+		pwm1: pwm@7e20c800 {
+			compatible = "brcm,bcm2835-pwm";
+			reg = <0x7e20c800 0x28>;
+			clocks = <&clocks BCM2835_CLOCK_PWM>;
+			assigned-clocks = <&clocks BCM2835_CLOCK_PWM>;
+			assigned-clock-rates = <10000000>;
+			#pwm-cells = <2>;
+			status = "disabled";
+		};
+
+		emmc2: emmc2@7e340000 {
+			compatible = "brcm,bcm2838-emmc2";
+			reg = <0x7e340000 0x100>;
+			interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clocks BCM2838_CLOCK_EMMC2>;
+			status = "disabled";
+		};
+
+		hvs@7e400000 {
+			interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
+		};
+
+		pixelvalve@7e807000 {
+			interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
+		};
+	};
+
+	arm-pmu {
+		/*
+		 * N.B. the A72 PMU support only exists in arch/arm64, hence
+		 * the fallback to the A53 version.
+		 */
+		compatible = "arm,cortex-a72-pmu", "arm,cortex-a53-pmu";
+		interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
+			<GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
+			<GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
+			<GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
+	};
+
+	timer {
+		compatible = "arm,armv7-timer";
+		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) |
+					  IRQ_TYPE_LEVEL_LOW)>,
+			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) |
+					  IRQ_TYPE_LEVEL_LOW)>,
+			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) |
+					  IRQ_TYPE_LEVEL_LOW)>,
+			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) |
+					  IRQ_TYPE_LEVEL_LOW)>;
+		arm,cpu-registers-not-fw-configured;
+		always-on;
+	};
+
+	cpus: cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		enable-method = "brcm,bcm2836-smp"; // for ARM 32-bit
+
+		cpu0: cpu@0 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a72";
+			reg = <0>;
+			enable-method = "spin-table";
+			cpu-release-addr = <0x0 0x000000d8>;
+		};
+
+		cpu1: cpu@1 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a72";
+			reg = <1>;
+			enable-method = "spin-table";
+			cpu-release-addr = <0x0 0x000000e0>;
+		};
+
+		cpu2: cpu@2 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a72";
+			reg = <2>;
+			enable-method = "spin-table";
+			cpu-release-addr = <0x0 0x000000e8>;
+		};
+
+		cpu3: cpu@3 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a72";
+			reg = <3>;
+			enable-method = "spin-table";
+			cpu-release-addr = <0x0 0x000000f0>;
+		};
+	};
+};
+
+&clk_osc {
+	clock-frequency = <54000000>;
+};
+
+&clocks {
+	compatible = "brcm,bcm2838-cprman";
+};
+
+&cpu_thermal {
+	coefficients = <(-487) 410040>;
+};
+
+&dsi0 {
+	interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&dsi1 {
+	interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&gpio {
+	compatible = "brcm,bcm2838-gpio";
+	interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
+		     <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
+		     <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
+		     <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
+
+	gpclk0_gpio49: gpclk0_gpio49 {
+		brcm,pins = <49>;
+		brcm,function = <BCM2835_FSEL_ALT1>;
+		bias-disable;
+	};
+	gpclk1_gpio50: gpclk1_gpio50 {
+		brcm,pins = <50>;
+		brcm,function = <BCM2835_FSEL_ALT1>;
+		bias-disable;
+	};
+	gpclk2_gpio51: gpclk2_gpio51 {
+		brcm,pins = <51>;
+		brcm,function = <BCM2835_FSEL_ALT1>;
+		bias-disable;
+	};
+
+	i2c0_gpio46: i2c0_gpio46 {
+		brcm,pins = <46 47>;
+		brcm,function = <BCM2835_FSEL_ALT0>;
+	};
+	i2c1_gpio46: i2c1_gpio46 {
+		brcm,pins = <46 47>;
+		brcm,function = <BCM2835_FSEL_ALT1>;
+	};
+	i2c3_gpio2: i2c3_gpio2 {
+		brcm,pins = <2 3>;
+		brcm,function = <BCM2835_FSEL_ALT5>;
+	};
+	i2c3_gpio4: i2c3_gpio4 {
+		brcm,pins = <4 5>;
+		brcm,function = <BCM2835_FSEL_ALT5>;
+	};
+	i2c4_gpio6: i2c4_gpio6 {
+		brcm,pins = <6 7>;
+		brcm,function = <BCM2835_FSEL_ALT5>;
+	};
+	i2c4_gpio8: i2c4_gpio8 {
+		brcm,pins = <8 9>;
+		brcm,function = <BCM2835_FSEL_ALT5>;
+	};
+	i2c5_gpio10: i2c5_gpio10 {
+		brcm,pins = <10 11>;
+		brcm,function = <BCM2835_FSEL_ALT5>;
+	};
+	i2c5_gpio12: i2c5_gpio12 {
+		brcm,pins = <12 13>;
+		brcm,function = <BCM2835_FSEL_ALT5>;
+	};
+	i2c6_gpio0: i2c6_gpio0 {
+		brcm,pins = <0 1>;
+		brcm,function = <BCM2835_FSEL_ALT5>;
+	};
+	i2c6_gpio22: i2c6_gpio22 {
+		brcm,pins = <22 23>;
+		brcm,function = <BCM2835_FSEL_ALT5>;
+	};
+	i2c_slave_gpio8: i2c_slave_gpio8 {
+		brcm,pins = <8 9 10 11>;
+		brcm,function = <BCM2835_FSEL_ALT3>;
+	};
+
+	jtag_gpio48: jtag_gpio48 {
+		brcm,pins = <48 49 50 51 52 53>;
+		brcm,function = <BCM2835_FSEL_ALT4>;
+	};
+
+	mii_gpio28: mii_gpio28 {
+		brcm,pins = <28 29 30 31>;
+		brcm,function = <BCM2835_FSEL_ALT4>;
+	};
+	mii_gpio36: mii_gpio36 {
+		brcm,pins = <36 37 38 39>;
+		brcm,function = <BCM2835_FSEL_ALT5>;
+	};
+
+	pcm_gpio50: pcm_gpio50 {
+		brcm,pins = <50 51 52 53>;
+		brcm,function = <BCM2835_FSEL_ALT2>;
+	};
+
+	pwm0_0_gpio12: pwm0_0_gpio12 {
+		brcm,pins = <12>;
+		brcm,function = <BCM2835_FSEL_ALT0>;
+	};
+	pwm0_0_gpio18: pwm0_0_gpio18 {
+		brcm,pins = <18>;
+		brcm,function = <BCM2835_FSEL_ALT5>;
+	};
+	pwm1_0_gpio40: pwm1_0_gpio40 {
+		brcm,pins = <40>;
+		brcm,function = <BCM2835_FSEL_ALT0>;
+	};
+	pwm0_1_gpio13: pwm0_1_gpio13 {
+		brcm,pins = <13>;
+		brcm,function = <BCM2835_FSEL_ALT0>;
+	};
+	pwm0_1_gpio19: pwm0_1_gpio19 {
+		brcm,pins = <19>;
+		brcm,function = <BCM2835_FSEL_ALT5>;
+	};
+	pwm1_1_gpio41: pwm1_1_gpio41 {
+		brcm,pins = <41>;
+		brcm,function = <BCM2835_FSEL_ALT0>;
+	};
+	pwm0_1_gpio45: pwm0_1_gpio45 {
+		brcm,pins = <45>;
+		brcm,function = <BCM2835_FSEL_ALT0>;
+	};
+	pwm0_0_gpio52: pwm0_0_gpio52 {
+		brcm,pins = <52>;
+		brcm,function = <BCM2835_FSEL_ALT1>;
+		bias-disable;
+	};
+	pwm0_1_gpio53: pwm0_1_gpio53 {
+		brcm,pins = <53>;
+		brcm,function = <BCM2835_FSEL_ALT1>;
+		bias-disable;
+	};
+
+	/* The following group consists of:
+	 *  RGMII_START_STOP
+	 *  RGMII_RX_OK
+	 */
+	rgmii_gpio35: rgmii_gpio35 {
+		brcm,pins = <35 36>;
+		brcm,function = <BCM2835_FSEL_ALT4>;
+	};
+	rgmii_irq_gpio34: rgmii_irq_gpio34 {
+		brcm,pins = <34>;
+		brcm,function = <BCM2835_FSEL_ALT5>;
+	};
+	rgmii_irq_gpio39: rgmii_irq_gpio39 {
+		brcm,pins = <39>;
+		brcm,function = <BCM2835_FSEL_ALT4>;
+	};
+	rgmii_mdio_gpio28: rgmii_mdio_gpio28 {
+		brcm,pins = <28 29>;
+		brcm,function = <BCM2835_FSEL_ALT5>;
+	};
+	rgmii_mdio_gpio37: rgmii_mdio_gpio37 {
+		brcm,pins = <37 38>;
+		brcm,function = <BCM2835_FSEL_ALT4>;
+	};
+
+	spi0_gpio46: spi0_gpio46 {
+		brcm,pins = <46 47 48 49>;
+		brcm,function = <BCM2835_FSEL_ALT2>;
+	};
+	spi2_gpio46: spi2_gpio46 {
+		brcm,pins = <46 47 48 49 50>;
+		brcm,function = <BCM2835_FSEL_ALT5>;
+	};
+	spi3_gpio0: spi3_gpio0 {
+		brcm,pins = <0 1 2 3>;
+		brcm,function = <BCM2835_FSEL_ALT3>;
+	};
+	spi4_gpio4: spi4_gpio4 {
+		brcm,pins = <4 5 6 7>;
+		brcm,function = <BCM2835_FSEL_ALT3>;
+	};
+	spi5_gpio12: spi5_gpio12 {
+		brcm,pins = <12 13 14 15>;
+		brcm,function = <BCM2835_FSEL_ALT3>;
+	};
+	spi6_gpio18: spi6_gpio18 {
+		brcm,pins = <18 19 20 21>;
+		brcm,function = <BCM2835_FSEL_ALT3>;
+	};
+
+	uart2_gpio0: uart2_gpio0 {
+		pin-tx {
+			brcm,pins = <0>;
+			brcm,function = <BCM2835_FSEL_ALT4>;
+			bias-disable;
+		};
+		pin-rx {
+			brcm,pins = <1>;
+			brcm,function = <BCM2835_FSEL_ALT4>;
+			bias-pull-up;
+		};
+	};
+	uart2_ctsrts_gpio2: uart2_ctsrts_gpio2 {
+		pin-cts {
+			brcm,pins = <2>;
+			brcm,function = <BCM2835_FSEL_ALT4>;
+			bias-pull-up;
+		};
+		pin-rts {
+			brcm,pins = <3>;
+			brcm,function = <BCM2835_FSEL_ALT4>;
+			bias-disable;
+		};
+	};
+	uart3_gpio4: uart3_gpio4 {
+		pin-tx {
+			brcm,pins = <4>;
+			brcm,function = <BCM2835_FSEL_ALT4>;
+			bias-disable;
+		};
+		pin-rx {
+			brcm,pins = <5>;
+			brcm,function = <BCM2835_FSEL_ALT4>;
+			bias-pull-up;
+		};
+	};
+	uart3_ctsrts_gpio6: uart3_ctsrts_gpio6 {
+		pin-cts {
+			brcm,pins = <6>;
+			brcm,function = <BCM2835_FSEL_ALT4>;
+			bias-pull-up;
+		};
+		pin-rts {
+			brcm,pins = <7>;
+			brcm,function = <BCM2835_FSEL_ALT4>;
+			bias-disable;
+		};
+	};
+	uart4_gpio8: uart4_gpio8 {
+		pin-tx {
+			brcm,pins = <8>;
+			brcm,function = <BCM2835_FSEL_ALT4>;
+			bias-disable;
+		};
+		pin-rx {
+			brcm,pins = <9>;
+			brcm,function = <BCM2835_FSEL_ALT4>;
+			bias-pull-up;
+		};
+	};
+	uart4_ctsrts_gpio10: uart4_ctsrts_gpio10 {
+		pin-cts {
+			brcm,pins = <10>;
+			brcm,function = <BCM2835_FSEL_ALT4>;
+			bias-pull-up;
+		};
+		pin-rts {
+			brcm,pins = <11>;
+			brcm,function = <BCM2835_FSEL_ALT4>;
+			bias-disable;
+		};
+	};
+	uart5_gpio12: uart5_gpio12 {
+		pin-tx {
+			brcm,pins = <12>;
+			brcm,function = <BCM2835_FSEL_ALT4>;
+			bias-disable;
+		};
+		pin-rx {
+			brcm,pins = <13>;
+			brcm,function = <BCM2835_FSEL_ALT4>;
+			bias-pull-up;
+		};
+	};
+	uart5_ctsrts_gpio14: uart5_ctsrts_gpio14 {
+		pin-cts {
+			brcm,pins = <14>;
+			brcm,function = <BCM2835_FSEL_ALT4>;
+			bias-pull-up;
+		};
+		pin-rts {
+			brcm,pins = <15>;
+			brcm,function = <BCM2835_FSEL_ALT4>;
+			bias-disable;
+		};
+	};
+};
+
+&vec {
+	interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&usb {
+	interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&hdmi {
+	interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
+		     <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&uart1 {
+	interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&spi1 {
+	interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&spi2 {
+	interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&sdhci {
+	interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&i2c0 {
+	interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&i2c1 {
+	interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&i2c2 {
+	interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&mailbox {
+	interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&sdhost {
+	interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&uart0 {
+	interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&txp {
+	interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
+};
diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
index 1104e4c..8dbddff 100644
--- a/arch/arm/boot/dts/bcm283x.dtsi
+++ b/arch/arm/boot/dts/bcm283x.dtsi
@@ -53,7 +53,7 @@
 		#address-cells = <1>;
 		#size-cells = <1>;

-		txp@7e004000 {
+		txp: txp@7e004000 {
 			compatible = "brcm,bcm2835-txp";
 			reg = <0x7e004000 0x20>;
 			interrupts = <1 11>;
--
2.7.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH RFC 18/18] ARM: dts: Add minimal Raspberry Pi 4 support
  2019-07-17 21:16 ` [PATCH RFC 18/18] ARM: dts: Add minimal Raspberry Pi 4 support Stefan Wahren
@ 2019-07-17 21:22   ` Florian Fainelli
  2019-07-17 21:32     ` Stefan Wahren
  2019-07-23 18:13   ` Marc Zyngier
  1 sibling, 1 reply; 23+ messages in thread
From: Florian Fainelli @ 2019-07-17 21:22 UTC (permalink / raw)
  To: Stefan Wahren, Eric Anholt, Ray Jui, Scott Branden,
	Nicolas Saenz Julienne, Rob Herring, Mark Rutland, Linus Walleij,
	Michael Turquette, Stephen Boyd, Ulf Hansson, Adrian Hunter,
	Mark Brown
  Cc: bcm-kernel-feedback-list, linux-rpi-kernel, linux-arm-kernel



On 7/17/2019 2:16 PM, Stefan Wahren wrote:
> This adds minimal support for the new Raspberry Pi 4 without the
> fancy stuff like GENET, PCIe, XHCI, 40 bit DMA and V3D. The RPi 4 is avail=
> able
> in 3 different variants (1, 2 and 4 GB RAM), so leave the memory size to z=
> ero
> and let the bootloader take care of it.
> 
> Other differences to the Raspberry Pi 3:
> - additional GIC 400 Interrupt controller
> - new thermal IP and HWRNG
> - additional MMC interface (emmc2)
> - additional UART, I2C, SPI and PWM interfaces
> 
> Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
> =2D--

[snip]

> +		rng@7e104000 {
> +			interrupts =3D <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
> +
> +			/* RNG is incompatible to brcm,bcm2835-rng */
> +			status =3D "disabled";

It's an iproc-rng200, so you can either re-use the bcm7211-rng
compatible string that was just recently added or you can define a
bcm2838-rng if you prefer.
-- 
Florian

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH RFC 18/18] ARM: dts: Add minimal Raspberry Pi 4 support
  2019-07-17 21:22   ` Florian Fainelli
@ 2019-07-17 21:32     ` Stefan Wahren
  0 siblings, 0 replies; 23+ messages in thread
From: Stefan Wahren @ 2019-07-17 21:32 UTC (permalink / raw)
  To: Florian Fainelli, Eric Anholt, Ray Jui, Scott Branden,
	Nicolas Saenz Julienne, Rob Herring, Mark Rutland, Linus Walleij,
	Michael Turquette, Stephen Boyd, Ulf Hansson, Adrian Hunter,
	Mark Brown
  Cc: bcm-kernel-feedback-list, linux-rpi-kernel, linux-arm-kernel

Hi Florian,

Am 17.07.19 um 23:22 schrieb Florian Fainelli:
>
> On 7/17/2019 2:16 PM, Stefan Wahren wrote:
>> This adds minimal support for the new Raspberry Pi 4 without the
>> fancy stuff like GENET, PCIe, XHCI, 40 bit DMA and V3D. The RPi 4 is avail=
>> able
>> in 3 different variants (1, 2 and 4 GB RAM), so leave the memory size to z=
>> ero
>> and let the bootloader take care of it.
>>
>> Other differences to the Raspberry Pi 3:
>> - additional GIC 400 Interrupt controller
>> - new thermal IP and HWRNG
>> - additional MMC interface (emmc2)
>> - additional UART, I2C, SPI and PWM interfaces
>>
>> Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
>> =2D--
> [snip]
>
>> +		rng@7e104000 {
>> +			interrupts =3D <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
>> +
>> +			/* RNG is incompatible to brcm,bcm2835-rng */
>> +			status =3D "disabled";
> It's an iproc-rng200, so you can either re-use the bcm7211-rng
> compatible string that was just recently added or you can define a
> bcm2838-rng if you prefer.

i know [1], but this is not essential and the series is long enough.

Thanks
Stefan

[1] -
https://github.com/raspberrypi/linux/commit/5e74aadfd1e0e6c00994521863ba044ce25b40de#diff-472f0181289458c487c07a343f767a81


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH RFC 15/18] spi: bcm2835: enable shared interrupt support
  2019-07-17 21:16 ` [PATCH RFC 15/18] spi: bcm2835: enable shared interrupt support Stefan Wahren
@ 2019-07-18 12:42   ` Mark Brown
  2019-07-18 17:53     ` Stefan Wahren
  0 siblings, 1 reply; 23+ messages in thread
From: Mark Brown @ 2019-07-18 12:42 UTC (permalink / raw)
  To: Stefan Wahren
  Cc: Mark Rutland, Ulf Hansson, Florian Fainelli, Scott Branden,
	Stephen Boyd, Ray Jui, Linus Walleij, Adrian Hunter, Eric Anholt,
	Rob Herring, bcm-kernel-feedback-list, linux-arm-kernel,
	Martin Sperl, Michael Turquette, Nicolas Saenz Julienne,
	linux-rpi-kernel


[-- Attachment #1.1: Type: text/plain, Size: 267 bytes --]

On Wed, Jul 17, 2019 at 11:16:01PM +0200, Stefan Wahren wrote:

> +	/* check if we got interrupt enabled */
> +	if (!(bcm2835_rd(bs, BCM2835_SPI_CS) & BCM2835_SPI_CS_INTR))
> +		return IRQ_NONE;
> +

Is that checking if the interrupt is enabled or if it is asserted?

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH RFC 15/18] spi: bcm2835: enable shared interrupt support
  2019-07-18 12:42   ` Mark Brown
@ 2019-07-18 17:53     ` Stefan Wahren
  2019-07-18 18:05       ` Florian Fainelli
  2019-07-18 18:52       ` Mark Brown
  0 siblings, 2 replies; 23+ messages in thread
From: Stefan Wahren @ 2019-07-18 17:53 UTC (permalink / raw)
  To: Mark Brown
  Cc: Mark Rutland, Ulf Hansson, Florian Fainelli, Scott Branden,
	Stephen Boyd, Ray Jui, Linus Walleij, Adrian Hunter, Eric Anholt,
	Rob Herring, bcm-kernel-feedback-list, linux-arm-kernel,
	Martin Sperl, Michael Turquette, Nicolas Saenz Julienne,
	linux-rpi-kernel

Hi Mark,

Am 18.07.19 um 14:42 schrieb Mark Brown:
> On Wed, Jul 17, 2019 at 11:16:01PM +0200, Stefan Wahren wrote:
>
>> +	/* check if we got interrupt enabled */
>> +	if (!(bcm2835_rd(bs, BCM2835_SPI_CS) & BCM2835_SPI_CS_INTR))
>> +		return IRQ_NONE;
>> +
> Is that checking if the interrupt is enabled or if it is asserted?

the BCM2835 doesn't provide a SPI register, which shows that the
interrupt has been asserted.

So i think, Martin tried to adapt the workaround from spi-bcm2835-aux
which has the same problem.

Stefan


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH RFC 15/18] spi: bcm2835: enable shared interrupt support
  2019-07-18 17:53     ` Stefan Wahren
@ 2019-07-18 18:05       ` Florian Fainelli
  2019-07-18 18:21         ` Stefan Wahren
  2019-07-18 18:52       ` Mark Brown
  1 sibling, 1 reply; 23+ messages in thread
From: Florian Fainelli @ 2019-07-18 18:05 UTC (permalink / raw)
  To: Stefan Wahren, Mark Brown
  Cc: Mark Rutland, Ulf Hansson, Florian Fainelli, Scott Branden,
	Stephen Boyd, Ray Jui, Linus Walleij, Adrian Hunter, Eric Anholt,
	Rob Herring, bcm-kernel-feedback-list, linux-arm-kernel,
	Martin Sperl, Michael Turquette, Nicolas Saenz Julienne,
	linux-rpi-kernel

On 7/18/19 10:53 AM, Stefan Wahren wrote:
> Hi Mark,
> 
> Am 18.07.19 um 14:42 schrieb Mark Brown:
>> On Wed, Jul 17, 2019 at 11:16:01PM +0200, Stefan Wahren wrote:
>>
>>> +	/* check if we got interrupt enabled */
>>> +	if (!(bcm2835_rd(bs, BCM2835_SPI_CS) & BCM2835_SPI_CS_INTR))
>>> +		return IRQ_NONE;
>>> +
>> Is that checking if the interrupt is enabled or if it is asserted?
> 
> the BCM2835 doesn't provide a SPI register, which shows that the
> interrupt has been asserted.
> 
> So i think, Martin tried to adapt the workaround from spi-bcm2835-aux
> which has the same problem.

I was about to submit a change to address that since we also have that
shared interrupt on BCM7211:

https://github.com/ffainelli/linux/commit/15d96d82bd42991dc71369128131312d5338f65c

Martin's patch is more efficient in terms of amount of register
accesses, but I am bit worried (based on the register description) that
the INTR bit is only asserted with the read FIFO crossing a certain
condition and that a TX only transfer may not be captured by that condition.

Maybe we can just check spi_controller::idling to determine if that
specific instance generated an interrupt?
-- 
Florian

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH RFC 15/18] spi: bcm2835: enable shared interrupt support
  2019-07-18 18:05       ` Florian Fainelli
@ 2019-07-18 18:21         ` Stefan Wahren
  2019-07-24 17:15           ` Mark Brown
  0 siblings, 1 reply; 23+ messages in thread
From: Stefan Wahren @ 2019-07-18 18:21 UTC (permalink / raw)
  To: Florian Fainelli, Mark Brown
  Cc: Mark Rutland, Ulf Hansson, Scott Branden, Stephen Boyd, Ray Jui,
	Linus Walleij, Adrian Hunter, Eric Anholt, Rob Herring,
	bcm-kernel-feedback-list, linux-arm-kernel, Martin Sperl,
	Michael Turquette, Nicolas Saenz Julienne, linux-rpi-kernel

Hi Florian,

Am 18.07.19 um 20:05 schrieb Florian Fainelli:
> On 7/18/19 10:53 AM, Stefan Wahren wrote:
>> Hi Mark,
>>
> I was about to submit a change to address that since we also have that
> shared interrupt on BCM7211:
>
> https://github.com/ffainelli/linux/commit/15d96d82bd42991dc71369128131312d5338f65c
>
> Martin's patch is more efficient in terms of amount of register
> accesses, but I am bit worried (based on the register description) that
> the INTR bit is only asserted with the read FIFO crossing a certain
> condition and that a TX only transfer may not be captured by that condition.
>
> Maybe we can just check spi_controller::idling to determine if that
> specific instance generated an interrupt?

sorry, i'm not that SPI expert. I suggest to drop this non-essential
patch from the series and discuss this separate.

Stefan


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH RFC 15/18] spi: bcm2835: enable shared interrupt support
  2019-07-18 17:53     ` Stefan Wahren
  2019-07-18 18:05       ` Florian Fainelli
@ 2019-07-18 18:52       ` Mark Brown
  1 sibling, 0 replies; 23+ messages in thread
From: Mark Brown @ 2019-07-18 18:52 UTC (permalink / raw)
  To: Stefan Wahren
  Cc: Mark Rutland, Ulf Hansson, Florian Fainelli, Scott Branden,
	Stephen Boyd, Ray Jui, Linus Walleij, Adrian Hunter, Eric Anholt,
	Rob Herring, bcm-kernel-feedback-list, linux-arm-kernel,
	Martin Sperl, Michael Turquette, Nicolas Saenz Julienne,
	linux-rpi-kernel


[-- Attachment #1.1: Type: text/plain, Size: 976 bytes --]

On Thu, Jul 18, 2019 at 07:53:43PM +0200, Stefan Wahren wrote:
> Am 18.07.19 um 14:42 schrieb Mark Brown:
> > On Wed, Jul 17, 2019 at 11:16:01PM +0200, Stefan Wahren wrote:

> >> +	/* check if we got interrupt enabled */
> >> +	if (!(bcm2835_rd(bs, BCM2835_SPI_CS) & BCM2835_SPI_CS_INTR))
> >> +		return IRQ_NONE;

> > Is that checking if the interrupt is enabled or if it is asserted?

> the BCM2835 doesn't provide a SPI register, which shows that the
> interrupt has been asserted.

> So i think, Martin tried to adapt the workaround from spi-bcm2835-aux
> which has the same problem.

OK, I don't know what that workaround was or exactly what this is
checking but if it's just checking if the interrupt was enabled then
there's going to be cases where this gets called while interrupts are
enabled but due to another device asserting the interrupt.  If the
driver can cope with that and this is just an optimization then fine but
if it's relying on this there's an issue.

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH RFC 18/18] ARM: dts: Add minimal Raspberry Pi 4 support
  2019-07-17 21:16 ` [PATCH RFC 18/18] ARM: dts: Add minimal Raspberry Pi 4 support Stefan Wahren
  2019-07-17 21:22   ` Florian Fainelli
@ 2019-07-23 18:13   ` Marc Zyngier
  2019-07-24  9:51     ` Vladimir Murzin
  2019-07-28 10:58     ` Stefan Wahren
  1 sibling, 2 replies; 23+ messages in thread
From: Marc Zyngier @ 2019-07-23 18:13 UTC (permalink / raw)
  To: Stefan Wahren
  Cc: Mark Rutland, Ulf Hansson, Florian Fainelli, linux-arm-kernel,
	Scott Branden, Stephen Boyd, Ray Jui, Linus Walleij,
	Adrian Hunter, Eric Anholt, Rob Herring,
	bcm-kernel-feedback-list, Mark Brown, Michael Turquette,
	Nicolas Saenz Julienne, linux-rpi-kernel

On Wed, 17 Jul 2019 23:16:04 +0200
Stefan Wahren <wahrenst@gmx.net> wrote:

> This adds minimal support for the new Raspberry Pi 4 without the
> fancy stuff like GENET, PCIe, XHCI, 40 bit DMA and V3D. The RPi 4 is available
> in 3 different variants (1, 2 and 4 GB RAM), so leave the memory size to zero
> and let the bootloader take care of it.
> 
> Other differences to the Raspberry Pi 3:
> - additional GIC 400 Interrupt controller
> - new thermal IP and HWRNG
> - additional MMC interface (emmc2)
> - additional UART, I2C, SPI and PWM interfaces
> 
> Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
> ---
>  arch/arm/boot/dts/Makefile            |   1 +
>  arch/arm/boot/dts/bcm2838-rpi-4-b.dts | 120 +++++++
>  arch/arm/boot/dts/bcm2838.dtsi        | 657 ++++++++++++++++++++++++++++++++++
>  arch/arm/boot/dts/bcm283x.dtsi        |   2 +-
>  4 files changed, 779 insertions(+), 1 deletion(-)
>  create mode 100644 arch/arm/boot/dts/bcm2838-rpi-4-b.dts
>  create mode 100644 arch/arm/boot/dts/bcm2838.dtsi
> 

[...]

> diff --git a/arch/arm/boot/dts/bcm2838.dtsi b/arch/arm/boot/dts/bcm2838.dtsi
> new file mode 100644
> index 0000000..e004d70
> --- /dev/null
> +++ b/arch/arm/boot/dts/bcm2838.dtsi
> @@ -0,0 +1,657 @@
> +// SPDX-License-Identifier: GPL-2.0
> +#include "bcm283x.dtsi"
> +
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
> +#include <dt-bindings/soc/bcm2835-pm.h>
> +
> +/ {
> +	compatible = "brcm,bcm2838";
> +
> +	#address-cells = <2>;
> +	#size-cells = <1>;
> +
> +	interrupt-parent = <&gicv2>;
> +
> +	soc {
> +		ranges = <0x7e000000  0x0 0xfe000000  0x01800000>,
> +			 <0x7c000000  0x0 0xfc000000  0x02000000>,
> +			 <0x40000000  0x0 0xff800000  0x00800000>;
> +		/* Emulate a contiguous 30-bit address range for DMA */
> +		dma-ranges = <0xc0000000  0x0 0x00000000  0x3c000000>;
> +
> +		local_intc: local_intc@40000000 {
> +			compatible = "brcm,bcm2836-l1-intc";
> +			reg = <0x40000000 0x100>;
> +		};
> +
> +		gicv2: gic400@40041000 {
> +			interrupt-controller;
> +			#interrupt-cells = <3>;
> +			compatible = "arm,gic-400";
> +			reg =	<0x40041000 0x1000>,
> +				<0x40042000 0x2000>,
> +				<0x40044000 0x2000>,
> +				<0x40046000 0x2000>;

Missing maintenance interrupt (usually on PPI9).

> +		};

[...]

> +	arm-pmu {
> +		/*
> +		 * N.B. the A72 PMU support only exists in arch/arm64, hence
> +		 * the fallback to the A53 version.
> +		 */
> +		compatible = "arm,cortex-a72-pmu", "arm,cortex-a53-pmu";

You're thus guaranteed to count the wrong events... And you could at
least have "arm,armv8-pmuv3".

> +		interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
> +			<GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
> +			<GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
> +			<GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;

You're missing the interrupt-affinity property.

> +	};
> +
> +	timer {
> +		compatible = "arm,armv7-timer";
> +		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) |
> +					  IRQ_TYPE_LEVEL_LOW)>,
> +			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) |
> +					  IRQ_TYPE_LEVEL_LOW)>,
> +			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) |
> +					  IRQ_TYPE_LEVEL_LOW)>,
> +			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) |
> +					  IRQ_TYPE_LEVEL_LOW)>;
> +		arm,cpu-registers-not-fw-configured;

Really? :-(

> +		always-on;

I'm pretty sure that's not the case. This indicates that you can power
the CPU off, bring it back on, and yet have your timer alive and
kicking. The only case this actually exists is for VMs. I can see it
being cargo-culted from previous RPi revisions, but that doesn't make
it true.

Thanks,

	M.
-- 
Without deviation from the norm, progress is not possible.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH RFC 18/18] ARM: dts: Add minimal Raspberry Pi 4 support
  2019-07-23 18:13   ` Marc Zyngier
@ 2019-07-24  9:51     ` Vladimir Murzin
  2019-07-24 10:41       ` Marc Zyngier
  2019-07-28 10:58     ` Stefan Wahren
  1 sibling, 1 reply; 23+ messages in thread
From: Vladimir Murzin @ 2019-07-24  9:51 UTC (permalink / raw)
  To: Marc Zyngier, Stefan Wahren
  Cc: Mark Rutland, Ulf Hansson, Florian Fainelli, Scott Branden,
	Stephen Boyd, Ray Jui, Linus Walleij, Adrian Hunter, Eric Anholt,
	Rob Herring, bcm-kernel-feedback-list, Mark Brown,
	Nicolas Saenz Julienne, Michael Turquette, linux-arm-kernel,
	linux-rpi-kernel

On 7/23/19 7:13 PM, Marc Zyngier wrote:
>> +	arm-pmu {
>> +		/*
>> +		 * N.B. the A72 PMU support only exists in arch/arm64, hence
>> +		 * the fallback to the A53 version.
>> +		 */
>> +		compatible = "arm,cortex-a72-pmu", "arm,cortex-a53-pmu";
> You're thus guaranteed to count the wrong events... And you could at
> least have "arm,armv8-pmuv3".
> 

Isn't "arm,armv8-pmuv3" still "only exists in arch/arm64" (along with "arm,cortex-a53-pmu")?

P.S.
Yes, I remember you posted some related patches in a past yet they never hit mainline :(

Cheers
Vladimir

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH RFC 18/18] ARM: dts: Add minimal Raspberry Pi 4 support
  2019-07-24  9:51     ` Vladimir Murzin
@ 2019-07-24 10:41       ` Marc Zyngier
  2019-07-24 12:36         ` Vladimir Murzin
  0 siblings, 1 reply; 23+ messages in thread
From: Marc Zyngier @ 2019-07-24 10:41 UTC (permalink / raw)
  To: Vladimir Murzin, Stefan Wahren
  Cc: Mark Rutland, Ulf Hansson, Florian Fainelli, Scott Branden,
	Stephen Boyd, Ray Jui, Linus Walleij, Adrian Hunter, Eric Anholt,
	Rob Herring, bcm-kernel-feedback-list, Mark Brown,
	Nicolas Saenz Julienne, Michael Turquette, linux-arm-kernel,
	linux-rpi-kernel

Hi Vladimir,

On 24/07/2019 10:51, Vladimir Murzin wrote:
> On 7/23/19 7:13 PM, Marc Zyngier wrote:
>>> +	arm-pmu {
>>> +		/*
>>> +		 * N.B. the A72 PMU support only exists in arch/arm64, hence
>>> +		 * the fallback to the A53 version.
>>> +		 */
>>> +		compatible = "arm,cortex-a72-pmu", "arm,cortex-a53-pmu";
>> You're thus guaranteed to count the wrong events... And you could at
>> least have "arm,armv8-pmuv3".
>>
> 
> Isn't "arm,armv8-pmuv3" still "only exists in arch/arm64" (along with "arm,cortex-a53-pmu")?

Absolutely. And yet this is describing the HW, not the shortcomings of
the kernel. I want to be able to take the same DT and run it on the
64bit kernel.

> P.S.
> Yes, I remember you posted some related patches in a past yet they never hit mainline :(

Will wanted me to repaint the whole of the 32bit perf code. I may end-up
doing that in the future if I get some idle time (but don't hold your
breath).

	M.
-- 
Jazz is not dead. It just smells funny...

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH RFC 18/18] ARM: dts: Add minimal Raspberry Pi 4 support
  2019-07-24 10:41       ` Marc Zyngier
@ 2019-07-24 12:36         ` Vladimir Murzin
  2019-07-24 19:04           ` Stefan Wahren
  0 siblings, 1 reply; 23+ messages in thread
From: Vladimir Murzin @ 2019-07-24 12:36 UTC (permalink / raw)
  To: Marc Zyngier, Stefan Wahren
  Cc: Mark Rutland, Ulf Hansson, Florian Fainelli, Scott Branden,
	Stephen Boyd, Ray Jui, Linus Walleij, Adrian Hunter, Eric Anholt,
	Rob Herring, bcm-kernel-feedback-list, Mark Brown,
	linux-rpi-kernel, Michael Turquette, Nicolas Saenz Julienne,
	linux-arm-kernel

Hi Marc,

On 7/24/19 11:41 AM, Marc Zyngier wrote:
> Hi Vladimir,
> 
> On 24/07/2019 10:51, Vladimir Murzin wrote:
>> On 7/23/19 7:13 PM, Marc Zyngier wrote:
>>>> +	arm-pmu {
>>>> +		/*
>>>> +		 * N.B. the A72 PMU support only exists in arch/arm64, hence
>>>> +		 * the fallback to the A53 version.
>>>> +		 */
>>>> +		compatible = "arm,cortex-a72-pmu", "arm,cortex-a53-pmu";
>>> You're thus guaranteed to count the wrong events... And you could at
>>> least have "arm,armv8-pmuv3".
>>>
>>
>> Isn't "arm,armv8-pmuv3" still "only exists in arch/arm64" (along with "arm,cortex-a53-pmu")?
> 
> Absolutely. And yet this is describing the HW, not the shortcomings of
> the kernel. I want to be able to take the same DT and run it on the
> 64bit kernel.
> 

Agreed. I was confused by comment block which describes software side of things rather than hardware.

@Stefan, can you, please, update compatible per Marc suggestion, i.e

compatible = "arm,cortex-a72-pmu", "arm,armv8-pmuv3";

and remove that comment block?

>> P.S.
>> Yes, I remember you posted some related patches in a past yet they never hit mainline :(
> 
> Will wanted me to repaint the whole of the 32bit perf code. I may end-up
> doing that in the future if I get some idle time (but don't hold your
> breath).
> 

:)

Thanks
Vladimir

> 	M.
> 


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH RFC 15/18] spi: bcm2835: enable shared interrupt support
  2019-07-18 18:21         ` Stefan Wahren
@ 2019-07-24 17:15           ` Mark Brown
  0 siblings, 0 replies; 23+ messages in thread
From: Mark Brown @ 2019-07-24 17:15 UTC (permalink / raw)
  To: Stefan Wahren
  Cc: Mark Rutland, Ulf Hansson, Florian Fainelli, Scott Branden,
	Stephen Boyd, Ray Jui, Linus Walleij, Adrian Hunter, Eric Anholt,
	Rob Herring, bcm-kernel-feedback-list, linux-arm-kernel,
	Martin Sperl, Michael Turquette, Nicolas Saenz Julienne,
	linux-rpi-kernel


[-- Attachment #1.1: Type: text/plain, Size: 1222 bytes --]

On Thu, Jul 18, 2019 at 08:21:36PM +0200, Stefan Wahren wrote:
> Am 18.07.19 um 20:05 schrieb Florian Fainelli:
> > On 7/18/19 10:53 AM, Stefan Wahren wrote:

> > Martin's patch is more efficient in terms of amount of register
> > accesses, but I am bit worried (based on the register description) that
> > the INTR bit is only asserted with the read FIFO crossing a certain
> > condition and that a TX only transfer may not be captured by that condition.

It looks like the driver sets the bit for TX only transfers so that's
probably fine but I might be missing something.

> > Maybe we can just check spi_controller::idling to determine if that
> > specific instance generated an interrupt?

> sorry, i'm not that SPI expert. I suggest to drop this non-essential
> patch from the series and discuss this separate.

I'm not opposed to the patch, I'm just concerned based on the
combination of the description and the code that it might not be doing
what's expected.  If it's mostly just an optimization that provides a
fast path in the case the interrupt is shared rather than a correctness
thing then it's fine.  A comment in the commit message or the code about
this being an optimization would be a good idea though.

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH RFC 18/18] ARM: dts: Add minimal Raspberry Pi 4 support
  2019-07-24 12:36         ` Vladimir Murzin
@ 2019-07-24 19:04           ` Stefan Wahren
  0 siblings, 0 replies; 23+ messages in thread
From: Stefan Wahren @ 2019-07-24 19:04 UTC (permalink / raw)
  To: Vladimir Murzin, Marc Zyngier
  Cc: Mark Rutland, Ulf Hansson, Florian Fainelli, Scott Branden,
	Stephen Boyd, Ray Jui, Linus Walleij, Adrian Hunter, Eric Anholt,
	Rob Herring, bcm-kernel-feedback-list, Mark Brown,
	linux-rpi-kernel, Michael Turquette, Nicolas Saenz Julienne,
	linux-arm-kernel

Hi Vladimir,

Am 24.07.19 um 14:36 schrieb Vladimir Murzin:
> Hi Marc,
>
> On 7/24/19 11:41 AM, Marc Zyngier wrote:
>> Hi Vladimir,
>>
>> On 24/07/2019 10:51, Vladimir Murzin wrote:
>>> On 7/23/19 7:13 PM, Marc Zyngier wrote:
>>>>> +	arm-pmu {
>>>>> +		/*
>>>>> +		 * N.B. the A72 PMU support only exists in arch/arm64, hence
>>>>> +		 * the fallback to the A53 version.
>>>>> +		 */
>>>>> +		compatible = "arm,cortex-a72-pmu", "arm,cortex-a53-pmu";
>>>> You're thus guaranteed to count the wrong events... And you could at
>>>> least have "arm,armv8-pmuv3".
>>>>
>>> Isn't "arm,armv8-pmuv3" still "only exists in arch/arm64" (along with "arm,cortex-a53-pmu")?
>> Absolutely. And yet this is describing the HW, not the shortcomings of
>> the kernel. I want to be able to take the same DT and run it on the
>> 64bit kernel.
>>
> Agreed. I was confused by comment block which describes software side of things rather than hardware.
>
> @Stefan, can you, please, update compatible per Marc suggestion, i.e
>
> compatible = "arm,cortex-a72-pmu", "arm,armv8-pmuv3";
>
> and remove that comment block?

yes, i will do in the next version of the series. I also got some
feedback about the rest of Marc's comments.

Btw you are commenting on a older version of this series, but the
mentioned parts are not affected.

Stefan


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH RFC 18/18] ARM: dts: Add minimal Raspberry Pi 4 support
  2019-07-23 18:13   ` Marc Zyngier
  2019-07-24  9:51     ` Vladimir Murzin
@ 2019-07-28 10:58     ` Stefan Wahren
  2019-07-28 11:38       ` Marc Zyngier
  1 sibling, 1 reply; 23+ messages in thread
From: Stefan Wahren @ 2019-07-28 10:58 UTC (permalink / raw)
  To: Marc Zyngier, Stefan Wahren
  Cc: Mark Rutland, Ulf Hansson, Florian Fainelli, Scott Branden,
	Stephen Boyd, Ray Jui, Linus Walleij, Adrian Hunter, Eric Anholt,
	Rob Herring, bcm-kernel-feedback-list, Mark Brown,
	Nicolas Saenz Julienne, Michael Turquette, linux-arm-kernel,
	linux-rpi-kernel

Hi Marc,

Am 23.07.19 um 20:13 schrieb Marc Zyngier:
> On Wed, 17 Jul 2019 23:16:04 +0200
> Stefan Wahren <wahrenst@gmx.net> wrote:
>
>> This adds minimal support for the new Raspberry Pi 4 without the
>> fancy stuff like GENET, PCIe, XHCI, 40 bit DMA and V3D. The RPi 4 is available
>> in 3 different variants (1, 2 and 4 GB RAM), so leave the memory size to zero
>> and let the bootloader take care of it.
>>
>> Other differences to the Raspberry Pi 3:
>> - additional GIC 400 Interrupt controller
>> - new thermal IP and HWRNG
>> - additional MMC interface (emmc2)
>> - additional UART, I2C, SPI and PWM interfaces
>>
>> Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
>>
>> ...
>> +	};
>> +
>> +	timer {
>> +		compatible = "arm,armv7-timer";
>> +		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) |
>> +					  IRQ_TYPE_LEVEL_LOW)>,
>> +			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) |
>> +					  IRQ_TYPE_LEVEL_LOW)>,
>> +			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) |
>> +					  IRQ_TYPE_LEVEL_LOW)>,
>> +			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) |
>> +					  IRQ_TYPE_LEVEL_LOW)>;
>> +		arm,cpu-registers-not-fw-configured;
> Really? :-(
i asked about that [1] and they said that the arm stubs [2] only set the
timer frequency and zeroing CNTVOFF_EL2.
>
>> +		always-on;
> I'm pretty sure that's not the case. This indicates that you can power
> the CPU off, bring it back on, and yet have your timer alive and
> kicking. The only case this actually exists is for VMs. I can see it
> being cargo-culted from previous RPi revisions, but that doesn't make
> it true.

They said that they used this to suppress high interrupt load for the
timers.

Stefan

[1] - https://github.com/raspberrypi/linux/issues/3101
[2] - https://github.com/raspberrypi/tools/blob/master/armstubs/armstub8.S

>
> Thanks,
>
> 	M.


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH RFC 18/18] ARM: dts: Add minimal Raspberry Pi 4 support
  2019-07-28 10:58     ` Stefan Wahren
@ 2019-07-28 11:38       ` Marc Zyngier
  2019-07-30 18:33         ` Stefan Wahren
  0 siblings, 1 reply; 23+ messages in thread
From: Marc Zyngier @ 2019-07-28 11:38 UTC (permalink / raw)
  To: Stefan Wahren
  Cc: Mark Rutland, Ulf Hansson, Florian Fainelli, Scott Branden,
	Stephen Boyd, Ray Jui, Linus Walleij, Mark Brown, Adrian Hunter,
	Eric Anholt, Rob Herring, bcm-kernel-feedback-list,
	Stefan Wahren, Nicolas Saenz Julienne, Michael Turquette,
	linux-arm-kernel, linux-rpi-kernel

Hi Stephan,

On Sun, 28 Jul 2019 11:58:58 +0100,
Stefan Wahren <stefan.wahren@i2se.com> wrote:
> 
> Hi Marc,
> 
> Am 23.07.19 um 20:13 schrieb Marc Zyngier:
> > On Wed, 17 Jul 2019 23:16:04 +0200
> > Stefan Wahren <wahrenst@gmx.net> wrote:
> >
> >> This adds minimal support for the new Raspberry Pi 4 without the
> >> fancy stuff like GENET, PCIe, XHCI, 40 bit DMA and V3D. The RPi 4 is available
> >> in 3 different variants (1, 2 and 4 GB RAM), so leave the memory size to zero
> >> and let the bootloader take care of it.
> >>
> >> Other differences to the Raspberry Pi 3:
> >> - additional GIC 400 Interrupt controller
> >> - new thermal IP and HWRNG
> >> - additional MMC interface (emmc2)
> >> - additional UART, I2C, SPI and PWM interfaces
> >>
> >> Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
> >>
> >> ...
> >> +	};
> >> +
> >> +	timer {
> >> +		compatible = "arm,armv7-timer";

BTW, this should be "arm,armv8-timer".

> >> +		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) |
> >> +					  IRQ_TYPE_LEVEL_LOW)>,
> >> +			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) |
> >> +					  IRQ_TYPE_LEVEL_LOW)>,
> >> +			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) |
> >> +					  IRQ_TYPE_LEVEL_LOW)>,
> >> +			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) |
> >> +					  IRQ_TYPE_LEVEL_LOW)>;
> >> +		arm,cpu-registers-not-fw-configured;
> > Really? :-(
> i asked about that [1] and they said that the arm stubs [2] only set the
> timer frequency and zeroing CNTVOFF_EL2.

Who is "they"? As long as it is done on all CPUs, that's the right
thing to do, and this property is pretty useless in that case.

> >
> >> +		always-on;
> > I'm pretty sure that's not the case. This indicates that you can power
> > the CPU off, bring it back on, and yet have your timer alive and
> > kicking. The only case this actually exists is for VMs. I can see it
> > being cargo-culted from previous RPi revisions, but that doesn't make
> > it true.
> 
> They said that they used this to suppress high interrupt load for the
> timers.

Indeed, and that's the only thing the kernel can do if it isn't
provided with a global timer that can be used as a backup then the
CPUs transition to a deep idle state where the timers are not actually
running.

If you have such a global timer, enable it and you'll see the
interrupt rate dropping like a rock. Don't you have a
brcm,bcm2835-system-timer stashed somewhere?

If you don't have such a timer, then the question is whether the CPUs
can go into a deep enough sleep state where the timer comparator is
disabled, leading to missed events. If this system can only reach very
shallow sleep states, then always-on is OK. Otherwise, this is a total
lie and you're likely to miss timer events.

Thanks,

	M.

-- 
Jazz is not dead, it just smells funny.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH RFC 18/18] ARM: dts: Add minimal Raspberry Pi 4 support
  2019-07-28 11:38       ` Marc Zyngier
@ 2019-07-30 18:33         ` Stefan Wahren
  2019-07-31 10:55           ` Marc Zyngier
  0 siblings, 1 reply; 23+ messages in thread
From: Stefan Wahren @ 2019-07-30 18:33 UTC (permalink / raw)
  To: Marc Zyngier, Stefan Wahren
  Cc: Mark Rutland, Ulf Hansson, Florian Fainelli, Scott Branden,
	Stephen Boyd, Ray Jui, Linus Walleij, Adrian Hunter, Eric Anholt,
	Rob Herring, bcm-kernel-feedback-list, Mark Brown,
	Nicolas Saenz Julienne, Michael Turquette, linux-arm-kernel,
	linux-rpi-kernel

Hi Marc,
>> Hi Marc,
>>
>> Am 23.07.19 um 20:13 schrieb Marc Zyngier:
>>> On Wed, 17 Jul 2019 23:16:04 +0200
>>> Stefan Wahren <wahrenst@gmx.net> wrote:
>>>
>>>> This adds minimal support for the new Raspberry Pi 4 without the
>>>> fancy stuff like GENET, PCIe, XHCI, 40 bit DMA and V3D. The RPi 4 is available
>>>> in 3 different variants (1, 2 and 4 GB RAM), so leave the memory size to zero
>>>> and let the bootloader take care of it.
>>>>
>>>> Other differences to the Raspberry Pi 3:
>>>> - additional GIC 400 Interrupt controller
>>>> - new thermal IP and HWRNG
>>>> - additional MMC interface (emmc2)
>>>> - additional UART, I2C, SPI and PWM interfaces
>>>>
>>>> Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
>>>>
>>>> ...
>>>> +	};
>>>> +
>>>> +	timer {
>>>> +		compatible = "arm,armv7-timer";
> BTW, this should be "arm,armv8-timer".
>
>>>> +		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) |
>>>> +					  IRQ_TYPE_LEVEL_LOW)>,
>>>> +			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) |
>>>> +					  IRQ_TYPE_LEVEL_LOW)>,
>>>> +			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) |
>>>> +					  IRQ_TYPE_LEVEL_LOW)>,
>>>> +			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) |
>>>> +					  IRQ_TYPE_LEVEL_LOW)>;
>>>> +		arm,cpu-registers-not-fw-configured;
>>> Really? :-(
>> i asked about that [1] and they said that the arm stubs [2] only set the
>> timer frequency and zeroing CNTVOFF_EL2.
> Who is "they"? As long as it is done on all CPUs, that's the right
> thing to do, and this property is pretty useless in that case.

"They" are the developer at Raspberry Pi Trading. I forwarded some
questions regarding this topic to them, but didn't get a reply yet. My
current understanding is that the armv8 stubs do setup the timer, but
the armv7 stubs do not. So we probably need to keep it.

>
>>>> +		always-on;
>>> I'm pretty sure that's not the case. This indicates that you can power
>>> the CPU off, bring it back on, and yet have your timer alive and
>>> kicking. The only case this actually exists is for VMs. I can see it
>>> being cargo-culted from previous RPi revisions, but that doesn't make
>>> it true.
>> They said that they used this to suppress high interrupt load for the
>> timers.
> Indeed, and that's the only thing the kernel can do if it isn't
> provided with a global timer that can be used as a backup then the
> CPUs transition to a deep idle state where the timers are not actually
> running.
>
> If you have such a global timer, enable it and you'll see the
> interrupt rate dropping like a rock. Don't you have a
> brcm,bcm2835-system-timer stashed somewhere?

I've got the feedback that the system timer still exists. Unfortunately
i don't have the new interrupt definition yet. So i need to wait for
this before sending a new version of this series.

Best regards
Stefan Wahren

>
> If you don't have such a timer, then the question is whether the CPUs
> can go into a deep enough sleep state where the timer comparator is
> disabled, leading to missed events. If this system can only reach very
> shallow sleep states, then always-on is OK. Otherwise, this is a total
> lie and you're likely to miss timer events.
>
> Thanks,
>
> 	M.
>

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH RFC 18/18] ARM: dts: Add minimal Raspberry Pi 4 support
  2019-07-30 18:33         ` Stefan Wahren
@ 2019-07-31 10:55           ` Marc Zyngier
  0 siblings, 0 replies; 23+ messages in thread
From: Marc Zyngier @ 2019-07-31 10:55 UTC (permalink / raw)
  To: Stefan Wahren, Stefan Wahren
  Cc: Mark Rutland, Ulf Hansson, Florian Fainelli, Scott Branden,
	Stephen Boyd, Ray Jui, Linus Walleij, Adrian Hunter, Eric Anholt,
	Rob Herring, bcm-kernel-feedback-list, Mark Brown,
	Nicolas Saenz Julienne, Michael Turquette, linux-arm-kernel,
	linux-rpi-kernel

On 30/07/2019 19:33, Stefan Wahren wrote:
> Hi Marc,
>>> Hi Marc,
>>>
>>> Am 23.07.19 um 20:13 schrieb Marc Zyngier:
>>>> On Wed, 17 Jul 2019 23:16:04 +0200
>>>> Stefan Wahren <wahrenst@gmx.net> wrote:
>>>>
>>>>> This adds minimal support for the new Raspberry Pi 4 without the
>>>>> fancy stuff like GENET, PCIe, XHCI, 40 bit DMA and V3D. The RPi 4 is available
>>>>> in 3 different variants (1, 2 and 4 GB RAM), so leave the memory size to zero
>>>>> and let the bootloader take care of it.
>>>>>
>>>>> Other differences to the Raspberry Pi 3:
>>>>> - additional GIC 400 Interrupt controller
>>>>> - new thermal IP and HWRNG
>>>>> - additional MMC interface (emmc2)
>>>>> - additional UART, I2C, SPI and PWM interfaces
>>>>>
>>>>> Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
>>>>>
>>>>> ...
>>>>> +	};
>>>>> +
>>>>> +	timer {
>>>>> +		compatible = "arm,armv7-timer";
>> BTW, this should be "arm,armv8-timer".
>>
>>>>> +		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) |
>>>>> +					  IRQ_TYPE_LEVEL_LOW)>,
>>>>> +			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) |
>>>>> +					  IRQ_TYPE_LEVEL_LOW)>,
>>>>> +			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) |
>>>>> +					  IRQ_TYPE_LEVEL_LOW)>,
>>>>> +			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) |
>>>>> +					  IRQ_TYPE_LEVEL_LOW)>;
>>>>> +		arm,cpu-registers-not-fw-configured;
>>>> Really? :-(
>>> i asked about that [1] and they said that the arm stubs [2] only set the
>>> timer frequency and zeroing CNTVOFF_EL2.
>> Who is "they"? As long as it is done on all CPUs, that's the right
>> thing to do, and this property is pretty useless in that case.
> 
> "They" are the developer at Raspberry Pi Trading. I forwarded some
> questions regarding this topic to them, but didn't get a reply yet. My
> current understanding is that the armv8 stubs do setup the timer, but
> the armv7 stubs do not. So we probably need to keep it.

From what I gather, these stubs can be updated (and apparently are
updated regularly). So why not fix them once and for all?

> 
>>
>>>>> +		always-on;
>>>> I'm pretty sure that's not the case. This indicates that you can power
>>>> the CPU off, bring it back on, and yet have your timer alive and
>>>> kicking. The only case this actually exists is for VMs. I can see it
>>>> being cargo-culted from previous RPi revisions, but that doesn't make
>>>> it true.
>>> They said that they used this to suppress high interrupt load for the
>>> timers.
>> Indeed, and that's the only thing the kernel can do if it isn't
>> provided with a global timer that can be used as a backup then the
>> CPUs transition to a deep idle state where the timers are not actually
>> running.
>>
>> If you have such a global timer, enable it and you'll see the
>> interrupt rate dropping like a rock. Don't you have a
>> brcm,bcm2835-system-timer stashed somewhere?
> 
> I've got the feedback that the system timer still exists. Unfortunately
> i don't have the new interrupt definition yet. So i need to wait for
> this before sending a new version of this series.

Sure, no problem. I also wonder whether the SoC has the memory-mapped
generic timer, which would make a lot of sense...

Thanks,

	M.
-- 
Jazz is not dead. It just smells funny...

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH RFC 14/18] HACK: pinctrl: bcm2835: Implement legacy pull for BCM7211
  2019-07-17 21:16 [PATCH RFC 14/18] HACK: pinctrl: bcm2835: Implement legacy pull for BCM7211 Stefan Wahren
                   ` (3 preceding siblings ...)
  2019-07-17 21:16 ` [PATCH RFC 18/18] ARM: dts: Add minimal Raspberry Pi 4 support Stefan Wahren
@ 2019-08-02 22:12 ` Linus Walleij
  4 siblings, 0 replies; 23+ messages in thread
From: Linus Walleij @ 2019-08-02 22:12 UTC (permalink / raw)
  To: Stefan Wahren
  Cc: Mark Rutland, Ulf Hansson, Florian Fainelli, Scott Branden,
	Stephen Boyd, Ray Jui, Michael Turquette, Adrian Hunter,
	Eric Anholt, Rob Herring, bcm-kernel-feedback-list, Mark Brown,
	linux-rpi-kernel, Nicolas Saenz Julienne, Linux ARM

On Wed, Jul 17, 2019 at 11:16 PM Stefan Wahren <wahrenst@gmx.net> wrote:

> This temporay hack is necessary to make the BCM2838/7211 work with the legacy
> pull configuration. The better approach is to convert all affected DTS files
> to the generic bias control.
>
> Signed-off-by: Stefan Wahren <wahrenst@gmx.net>

I don't understand this: why do you even need to make a *new* SoC work
with *legacy* bias control? Just use the generic pin configs and be happy.

Or did someone produce a lot of DTS file using the "hack" seen in earlier
patches that you would now have to fix? (Sigh.) That is why they should
discuss with community first I guess.

Yours,
Linus Walleij

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

end of thread, other threads:[~2019-08-02 22:12 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-17 21:16 [PATCH RFC 14/18] HACK: pinctrl: bcm2835: Implement legacy pull for BCM7211 Stefan Wahren
2019-07-17 21:16 ` [PATCH RFC 15/18] spi: bcm2835: enable shared interrupt support Stefan Wahren
2019-07-18 12:42   ` Mark Brown
2019-07-18 17:53     ` Stefan Wahren
2019-07-18 18:05       ` Florian Fainelli
2019-07-18 18:21         ` Stefan Wahren
2019-07-24 17:15           ` Mark Brown
2019-07-18 18:52       ` Mark Brown
2019-07-17 21:16 ` [PATCH RFC 16/18] dt-bindings: bcm: Add Raspberry Pi 4 B Stefan Wahren
2019-07-17 21:16 ` [PATCH RFC 17/18] ARM: bcm2835: Add bcm2838 compatible string Stefan Wahren
2019-07-17 21:16 ` [PATCH RFC 18/18] ARM: dts: Add minimal Raspberry Pi 4 support Stefan Wahren
2019-07-17 21:22   ` Florian Fainelli
2019-07-17 21:32     ` Stefan Wahren
2019-07-23 18:13   ` Marc Zyngier
2019-07-24  9:51     ` Vladimir Murzin
2019-07-24 10:41       ` Marc Zyngier
2019-07-24 12:36         ` Vladimir Murzin
2019-07-24 19:04           ` Stefan Wahren
2019-07-28 10:58     ` Stefan Wahren
2019-07-28 11:38       ` Marc Zyngier
2019-07-30 18:33         ` Stefan Wahren
2019-07-31 10:55           ` Marc Zyngier
2019-08-02 22:12 ` [PATCH RFC 14/18] HACK: pinctrl: bcm2835: Implement legacy pull for BCM7211 Linus Walleij

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).