blob: 5fb5d60f069a288d2cda955c2ce2ceaf99d11640 [file] [log] [blame]
Tom Rini762f85b2024-07-20 11:15:10 -06001# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/media/brcm,bcm2835-unicam.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Broadcom BCM283x Camera Interface (Unicam)
8
9maintainers:
10 - Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>
11
12description: |-
13 The Unicam block on BCM283x SoCs is the receiver for either
14 CSI-2 or CCP2 data from image sensors or similar devices.
15
16 The main platform using this SoC is the Raspberry Pi family of boards. On
17 the Pi the VideoCore firmware can also control this hardware block, and
18 driving it from two different processors will cause issues. To avoid this,
19 the firmware checks the device tree configuration during boot. If it finds
20 device tree nodes whose name starts with 'csi' then it will stop the firmware
21 accessing the block, and it can then safely be used via the device tree
22 binding.
23
24properties:
25 compatible:
26 const: brcm,bcm2835-unicam
27
28 reg:
29 items:
30 - description: Unicam block.
31 - description: Clock Manager Image (CMI) block.
32
33 reg-names:
34 items:
35 - const: unicam
36 - const: cmi
37
38 interrupts:
39 maxItems: 1
40
41 clocks:
42 items:
43 - description: Clock to drive the LP state machine of Unicam.
44 - description: Clock for the VPU (core clock).
45
46 clock-names:
47 items:
48 - const: lp
49 - const: vpu
50
51 power-domains:
52 items:
53 - description: Unicam power domain
54
55 brcm,num-data-lanes:
56 $ref: /schemas/types.yaml#/definitions/uint32
57 enum: [ 2, 4 ]
58 description: |
59 Number of CSI-2 data lanes supported by this Unicam instance. The number
60 of data lanes actively used is specified with the data-lanes endpoint
61 property.
62
63 port:
64 $ref: /schemas/graph.yaml#/$defs/port-base
65 unevaluatedProperties: false
66
67 properties:
68 endpoint:
69 $ref: /schemas/media/video-interfaces.yaml#
70 additionalProperties: false
71
72 properties:
73 bus-type:
74 enum: [ 3, 4 ]
75
76 clock-noncontinuous: true
77 data-lanes: true
78 remote-endpoint: true
79
80 required:
81 - bus-type
82 - data-lanes
83 - remote-endpoint
84
85 required:
86 - endpoint
87
88required:
89 - compatible
90 - reg
91 - reg-names
92 - interrupts
93 - clocks
94 - clock-names
95 - power-domains
96 - brcm,num-data-lanes
97 - port
98
99additionalProperties: False
100
101examples:
102 - |
103 #include <dt-bindings/clock/bcm2835.h>
104 #include <dt-bindings/interrupt-controller/arm-gic.h>
105 #include <dt-bindings/media/video-interfaces.h>
106 #include <dt-bindings/power/raspberrypi-power.h>
107
108 csi1: csi@7e801000 {
109 compatible = "brcm,bcm2835-unicam";
110 reg = <0x7e801000 0x800>,
111 <0x7e802004 0x4>;
112 reg-names = "unicam", "cmi";
113 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
114 clocks = <&clocks BCM2835_CLOCK_CAM1>,
115 <&firmware_clocks 4>;
116 clock-names = "lp", "vpu";
117 power-domains = <&power RPI_POWER_DOMAIN_UNICAM1>;
118 brcm,num-data-lanes = <2>;
119 port {
120 csi1_ep: endpoint {
121 remote-endpoint = <&imx219_0>;
122 bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
123 data-lanes = <1 2>;
124 };
125 };
126 };
127...