forked from Qortal/Brooklyn
86 lines
2.7 KiB
Plaintext
86 lines
2.7 KiB
Plaintext
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 "lp" and "vpu" entries, 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>,
|
|
<&firmware_clocks 4>;
|
|
clock-names = "lp", "vpu";
|
|
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>;
|
|
};
|
|
};
|
|
};
|
|
};
|