Skip to content

Commit 25d77bd

Browse files
6by9ffainelli
authored andcommitted
arm64: dts: broadcom: Add display pipeline support to BCM2712
Adds the HVS and associated hardware blocks to support the HDMI and writeback connectors on BCM2712 / Pi5. Signed-off-by: Dave Stevenson <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Florian Fainelli <[email protected]>
1 parent 568680a commit 25d77bd

File tree

2 files changed

+202
-0
lines changed

2 files changed

+202
-0
lines changed

arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,5 +88,19 @@
8888
firmware = <&firmware>;
8989
#power-domain-cells = <1>;
9090
};
91+
};
92+
93+
&hvs {
94+
clocks = <&firmware_clocks 4>, <&firmware_clocks 16>;
95+
clock-names = "core", "disp";
96+
};
97+
98+
&hdmi0 {
99+
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
100+
clock-names = "hdmi", "bvb", "audio", "cec";
101+
};
91102

103+
&hdmi1 {
104+
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
105+
clock-names = "hdmi", "bvb", "audio", "cec";
92106
};

arch/arm64/boot/dts/broadcom/bcm2712.dtsi

Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,172 @@
260260
interrupt-controller;
261261
#interrupt-cells = <3>;
262262
};
263+
264+
aon_intr: interrupt-controller@7d510600 {
265+
compatible = "brcm,bcm2711-l2-intc", "brcm,l2-intc";
266+
reg = <0x7d510600 0x30>;
267+
interrupts = <GIC_SPI 239 IRQ_TYPE_LEVEL_HIGH>;
268+
interrupt-controller;
269+
#interrupt-cells = <1>;
270+
};
271+
272+
pixelvalve0: pixelvalve@7c410000 {
273+
compatible = "brcm,bcm2712-pixelvalve0";
274+
reg = <0x7c410000 0x100>;
275+
interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
276+
};
277+
278+
pixelvalve1: pixelvalve@7c411000 {
279+
compatible = "brcm,bcm2712-pixelvalve1";
280+
reg = <0x7c411000 0x100>;
281+
interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
282+
};
283+
284+
mop: mop@7c500000 {
285+
compatible = "brcm,bcm2712-mop";
286+
reg = <0x7c500000 0x28>;
287+
interrupt-parent = <&disp_intr>;
288+
interrupts = <1>;
289+
};
290+
291+
moplet: moplet@7c501000 {
292+
compatible = "brcm,bcm2712-moplet";
293+
reg = <0x7c501000 0x20>;
294+
interrupt-parent = <&disp_intr>;
295+
interrupts = <0>;
296+
};
297+
298+
disp_intr: interrupt-controller@7c502000 {
299+
compatible = "brcm,bcm2711-l2-intc", "brcm,l2-intc";
300+
reg = <0x7c502000 0x30>;
301+
interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
302+
interrupt-controller;
303+
#interrupt-cells = <1>;
304+
};
305+
306+
dvp: clock@7c700000 {
307+
compatible = "brcm,brcm2711-dvp";
308+
reg = <0x7c700000 0x10>;
309+
clocks = <&clk_108MHz>;
310+
#clock-cells = <1>;
311+
#reset-cells = <1>;
312+
};
313+
314+
ddc0: i2c@7d508200 {
315+
compatible = "brcm,brcmstb-i2c";
316+
reg = <0x7d508200 0x58>;
317+
interrupt-parent = <&bsc_irq>;
318+
interrupts = <1>;
319+
clock-frequency = <97500>;
320+
#address-cells = <1>;
321+
#size-cells = <0>;
322+
};
323+
324+
ddc1: i2c@7d508280 {
325+
compatible = "brcm,brcmstb-i2c";
326+
reg = <0x7d508280 0x58>;
327+
interrupt-parent = <&bsc_irq>;
328+
interrupts = <2>;
329+
clock-frequency = <97500>;
330+
#address-cells = <1>;
331+
#size-cells = <0>;
332+
};
333+
334+
bsc_irq: interrupt-controller@7d508380 {
335+
compatible = "brcm,bcm7271-l2-intc";
336+
reg = <0x7d508380 0x10>;
337+
interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>;
338+
interrupt-controller;
339+
#interrupt-cells = <1>;
340+
};
341+
342+
main_irq: interrupt-controller@7d508400 {
343+
compatible = "brcm,bcm7271-l2-intc";
344+
reg = <0x7d508400 0x10>;
345+
interrupts = <GIC_SPI 244 IRQ_TYPE_LEVEL_HIGH>;
346+
interrupt-controller;
347+
#interrupt-cells = <1>;
348+
};
349+
350+
hdmi0: hdmi@7c701400 {
351+
compatible = "brcm,bcm2712-hdmi0";
352+
reg = <0x7c701400 0x300>,
353+
<0x7c701000 0x200>,
354+
<0x7c701d00 0x300>,
355+
<0x7c702000 0x80>,
356+
<0x7c703800 0x200>,
357+
<0x7c704000 0x800>,
358+
<0x7c700100 0x80>,
359+
<0x7d510800 0x100>,
360+
<0x7c720000 0x100>;
361+
reg-names = "hdmi",
362+
"dvp",
363+
"phy",
364+
"rm",
365+
"packet",
366+
"metadata",
367+
"csc",
368+
"cec",
369+
"hd";
370+
resets = <&dvp 1>;
371+
interrupt-parent = <&aon_intr>;
372+
interrupts = <1>, <2>, <3>,
373+
<7>, <8>;
374+
interrupt-names = "cec-tx", "cec-rx", "cec-low",
375+
"hpd-connected", "hpd-removed";
376+
ddc = <&ddc0>;
377+
};
378+
379+
hdmi1: hdmi@7c706400 {
380+
compatible = "brcm,bcm2712-hdmi1";
381+
reg = <0x7c706400 0x300>,
382+
<0x7c706000 0x200>,
383+
<0x7c706d00 0x300>,
384+
<0x7c707000 0x80>,
385+
<0x7c708800 0x200>,
386+
<0x7c709000 0x800>,
387+
<0x7c700180 0x80>,
388+
<0x7d511000 0x100>,
389+
<0x7c720000 0x100>;
390+
reg-names = "hdmi",
391+
"dvp",
392+
"phy",
393+
"rm",
394+
"packet",
395+
"metadata",
396+
"csc",
397+
"cec",
398+
"hd";
399+
resets = <&dvp 2>;
400+
interrupt-parent = <&aon_intr>;
401+
interrupts = <11>, <12>, <13>,
402+
<14>, <15>;
403+
interrupt-names = "cec-tx", "cec-rx", "cec-low",
404+
"hpd-connected", "hpd-removed";
405+
ddc = <&ddc1>;
406+
};
407+
};
408+
409+
axi: axi {
410+
compatible = "simple-bus";
411+
#address-cells = <2>;
412+
#size-cells = <2>;
413+
414+
ranges = <0x00 0x00000000 0x00 0x00000000 0x10 0x00000000>,
415+
<0x10 0x00000000 0x10 0x00000000 0x01 0x00000000>,
416+
<0x14 0x00000000 0x14 0x00000000 0x04 0x00000000>,
417+
<0x18 0x00000000 0x18 0x00000000 0x04 0x00000000>,
418+
<0x1c 0x00000000 0x1c 0x00000000 0x04 0x00000000>;
419+
420+
dma-ranges = <0x00 0x00000000 0x00 0x00000000 0x10 0x00000000>,
421+
<0x10 0x00000000 0x10 0x00000000 0x01 0x00000000>,
422+
<0x14 0x00000000 0x14 0x00000000 0x04 0x00000000>,
423+
<0x18 0x00000000 0x18 0x00000000 0x04 0x00000000>,
424+
<0x1c 0x00000000 0x1c 0x00000000 0x04 0x00000000>;
425+
426+
vc4: gpu {
427+
compatible = "brcm,bcm2712-vc6";
428+
};
263429
};
264430

265431
timer {
@@ -275,4 +441,26 @@
275441
<GIC_PPI 12 (GIC_CPU_MASK_SIMPLE(4) |
276442
IRQ_TYPE_LEVEL_LOW)>;
277443
};
444+
445+
clk_27MHz: clk-27M {
446+
#clock-cells = <0>;
447+
compatible = "fixed-clock";
448+
clock-frequency = <27000000>;
449+
clock-output-names = "27MHz-clock";
450+
};
451+
452+
clk_108MHz: clk-108M {
453+
#clock-cells = <0>;
454+
compatible = "fixed-clock";
455+
clock-frequency = <108000000>;
456+
clock-output-names = "108MHz-clock";
457+
};
458+
459+
hvs: hvs@107c580000 {
460+
compatible = "brcm,bcm2712-hvs";
461+
reg = <0x10 0x7c580000 0x0 0x1a000>;
462+
interrupt-parent = <&disp_intr>;
463+
interrupts = <2>, <9>, <16>;
464+
interrupt-names = "ch0-eof", "ch1-eof", "ch2-eof";
465+
};
278466
};

0 commit comments

Comments
 (0)