Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dt-bindings: Document BCM283x CSI2/CCP2 receiver
Document the DT bindings for the CSI2/CCP2 receiver peripheral (known as Unicam) on BCM283x SoCs. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org> Acked-by: Rob Herring <robh@kernel.org>
- Loading branch information
Showing
1 changed file
with
85 additions
and
0 deletions.
There are no files selected for viewing
85 changes: 85 additions & 0 deletions
85
Documentation/devicetree/bindings/media/bcm2835-unicam.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
Broadcom BCM283x Camera Interface (Unicam) | ||
------------------------------------------ | ||
|
||
The Unicam block on BCM283x SoCs is the receiver for either | ||
CSI-2 or CCP2 data from image sensors or similar devices. | ||
|
||
The main platform using this SoC is the Raspberry Pi family of boards. | ||
On the Pi the VideoCore firmware can also control this hardware block, | ||
and driving it from two different processors will cause issues. | ||
To avoid this, the firmware checks the device tree configuration | ||
during boot. If it finds device tree nodes called csi0 or csi1 then | ||
it will stop the firmware accessing the block, and it can then | ||
safely be used via the device tree binding. | ||
|
||
Required properties: | ||
=================== | ||
- compatible : must be "brcm,bcm2835-unicam". | ||
- reg : physical base address and length of the register sets for the | ||
device. | ||
- interrupts : should contain the IRQ line for this Unicam instance. | ||
- clocks : list of clock specifiers, corresponding to entries in | ||
clock-names property. | ||
- clock-names : must contain an "lp" entry, matching entries in the | ||
clocks property. | ||
|
||
Unicam supports a single port node. It should contain one 'port' child node | ||
with child 'endpoint' node. Please refer to the bindings defined in | ||
Documentation/devicetree/bindings/media/video-interfaces.txt. | ||
|
||
Within the endpoint node the "remote-endpoint" and "data-lanes" properties | ||
are mandatory. | ||
Data lane reordering is not supported so the data lanes must be in order, | ||
starting at 1. The number of data lanes should represent the number of | ||
usable lanes for the hardware block. That may be limited by either the SoC or | ||
how the platform presents the interface, and the lower value must be used. | ||
|
||
Lane reordering is not supported on the clock lane either, so the optional | ||
property "clock-lane" will implicitly be <0>. | ||
Similarly lane inversion is not supported, therefore "lane-polarities" will | ||
implicitly be <0 0 0 0 0>. | ||
Neither of these values will be checked. | ||
|
||
Example: | ||
csi1: csi1@7e801000 { | ||
compatible = "brcm,bcm2835-unicam"; | ||
reg = <0x7e801000 0x800>, | ||
<0x7e802004 0x4>; | ||
interrupts = <2 7>; | ||
clocks = <&clocks BCM2835_CLOCK_CAM1>; | ||
clock-names = "lp"; | ||
|
||
port { | ||
csi1_ep: endpoint { | ||
remote-endpoint = <&tc358743_0>; | ||
data-lanes = <1 2>; | ||
}; | ||
}; | ||
}; | ||
|
||
i2c0: i2c@7e205000 { | ||
tc358743: csi-hdmi-bridge@0f { | ||
compatible = "toshiba,tc358743"; | ||
reg = <0x0f>; | ||
|
||
clocks = <&tc358743_clk>; | ||
clock-names = "refclk"; | ||
|
||
tc358743_clk: bridge-clk { | ||
compatible = "fixed-clock"; | ||
#clock-cells = <0>; | ||
clock-frequency = <27000000>; | ||
}; | ||
|
||
port { | ||
tc358743_0: endpoint { | ||
remote-endpoint = <&csi1_ep>; | ||
clock-lanes = <0>; | ||
data-lanes = <1 2>; | ||
clock-noncontinuous; | ||
link-frequencies = | ||
/bits/ 64 <297000000>; | ||
}; | ||
}; | ||
}; | ||
}; |