6db4831e98
Android 14
230 lines
5.4 KiB
Plaintext
230 lines
5.4 KiB
Plaintext
Qualcomm Camera Subsystem
|
|
|
|
* Properties
|
|
|
|
- compatible:
|
|
Usage: required
|
|
Value type: <stringlist>
|
|
Definition: Should contain one of:
|
|
- "qcom,msm8916-camss"
|
|
- "qcom,msm8996-camss"
|
|
- reg:
|
|
Usage: required
|
|
Value type: <prop-encoded-array>
|
|
Definition: Register ranges as listed in the reg-names property.
|
|
- reg-names:
|
|
Usage: required
|
|
Value type: <stringlist>
|
|
Definition: Should contain the following entries:
|
|
- "csiphy0"
|
|
- "csiphy0_clk_mux"
|
|
- "csiphy1"
|
|
- "csiphy1_clk_mux"
|
|
- "csiphy2" (8996 only)
|
|
- "csiphy2_clk_mux" (8996 only)
|
|
- "csid0"
|
|
- "csid1"
|
|
- "csid2" (8996 only)
|
|
- "csid3" (8996 only)
|
|
- "ispif"
|
|
- "csi_clk_mux"
|
|
- "vfe0"
|
|
- "vfe1" (8996 only)
|
|
- interrupts:
|
|
Usage: required
|
|
Value type: <prop-encoded-array>
|
|
Definition: Interrupts as listed in the interrupt-names property.
|
|
- interrupt-names:
|
|
Usage: required
|
|
Value type: <stringlist>
|
|
Definition: Should contain the following entries:
|
|
- "csiphy0"
|
|
- "csiphy1"
|
|
- "csiphy2" (8996 only)
|
|
- "csid0"
|
|
- "csid1"
|
|
- "csid2" (8996 only)
|
|
- "csid3" (8996 only)
|
|
- "ispif"
|
|
- "vfe0"
|
|
- "vfe1" (8996 only)
|
|
- power-domains:
|
|
Usage: required
|
|
Value type: <prop-encoded-array>
|
|
Definition: A phandle and power domain specifier pairs to the
|
|
power domain which is responsible for collapsing
|
|
and restoring power to the peripheral.
|
|
- clocks:
|
|
Usage: required
|
|
Value type: <prop-encoded-array>
|
|
Definition: A list of phandle and clock specifier pairs as listed
|
|
in clock-names property.
|
|
- clock-names:
|
|
Usage: required
|
|
Value type: <stringlist>
|
|
Definition: Should contain the following entries:
|
|
- "top_ahb"
|
|
- "ispif_ahb"
|
|
- "csiphy0_timer"
|
|
- "csiphy1_timer"
|
|
- "csiphy2_timer" (8996 only)
|
|
- "csi0_ahb"
|
|
- "csi0"
|
|
- "csi0_phy"
|
|
- "csi0_pix"
|
|
- "csi0_rdi"
|
|
- "csi1_ahb"
|
|
- "csi1"
|
|
- "csi1_phy"
|
|
- "csi1_pix"
|
|
- "csi1_rdi"
|
|
- "csi2_ahb" (8996 only)
|
|
- "csi2" (8996 only)
|
|
- "csi2_phy" (8996 only)
|
|
- "csi2_pix" (8996 only)
|
|
- "csi2_rdi" (8996 only)
|
|
- "csi3_ahb" (8996 only)
|
|
- "csi3" (8996 only)
|
|
- "csi3_phy" (8996 only)
|
|
- "csi3_pix" (8996 only)
|
|
- "csi3_rdi" (8996 only)
|
|
- "ahb"
|
|
- "vfe0"
|
|
- "csi_vfe0"
|
|
- "vfe0_ahb", (8996 only)
|
|
- "vfe0_stream", (8996 only)
|
|
- "vfe1", (8996 only)
|
|
- "csi_vfe1", (8996 only)
|
|
- "vfe1_ahb", (8996 only)
|
|
- "vfe1_stream", (8996 only)
|
|
- "vfe_ahb"
|
|
- "vfe_axi"
|
|
- vdda-supply:
|
|
Usage: required
|
|
Value type: <phandle>
|
|
Definition: A phandle to voltage supply for CSI2.
|
|
- iommus:
|
|
Usage: required
|
|
Value type: <prop-encoded-array>
|
|
Definition: A list of phandle and IOMMU specifier pairs.
|
|
|
|
* Nodes
|
|
|
|
- ports:
|
|
Usage: required
|
|
Definition: As described in video-interfaces.txt in same directory.
|
|
Properties:
|
|
- reg:
|
|
Usage: required
|
|
Value type: <u32>
|
|
Definition: Selects CSI2 PHY interface - PHY0, PHY1
|
|
or PHY2 (8996 only)
|
|
Endpoint node properties:
|
|
- clock-lanes:
|
|
Usage: required
|
|
Value type: <u32>
|
|
Definition: The physical clock lane index. On 8916
|
|
the value must always be <1> as the physical
|
|
clock lane is lane 1. On 8996 the value must
|
|
always be <7> as the hardware supports D-PHY
|
|
and C-PHY, indexes are in a common set and
|
|
D-PHY physical clock lane is labeled as 7.
|
|
- data-lanes:
|
|
Usage: required
|
|
Value type: <prop-encoded-array>
|
|
Definition: An array of physical data lanes indexes.
|
|
Position of an entry determines the logical
|
|
lane number, while the value of an entry
|
|
indicates physical lane index. Lane swapping
|
|
is supported. Physical lane indexes for
|
|
8916: 0, 2, 3, 4; for 8996: 0, 1, 2, 3.
|
|
|
|
* An Example
|
|
|
|
camss: camss@1b00000 {
|
|
compatible = "qcom,msm8916-camss";
|
|
reg = <0x1b0ac00 0x200>,
|
|
<0x1b00030 0x4>,
|
|
<0x1b0b000 0x200>,
|
|
<0x1b00038 0x4>,
|
|
<0x1b08000 0x100>,
|
|
<0x1b08400 0x100>,
|
|
<0x1b0a000 0x500>,
|
|
<0x1b00020 0x10>,
|
|
<0x1b10000 0x1000>;
|
|
reg-names = "csiphy0",
|
|
"csiphy0_clk_mux",
|
|
"csiphy1",
|
|
"csiphy1_clk_mux",
|
|
"csid0",
|
|
"csid1",
|
|
"ispif",
|
|
"csi_clk_mux",
|
|
"vfe0";
|
|
interrupts = <GIC_SPI 78 0>,
|
|
<GIC_SPI 79 0>,
|
|
<GIC_SPI 51 0>,
|
|
<GIC_SPI 52 0>,
|
|
<GIC_SPI 55 0>,
|
|
<GIC_SPI 57 0>;
|
|
interrupt-names = "csiphy0",
|
|
"csiphy1",
|
|
"csid0",
|
|
"csid1",
|
|
"ispif",
|
|
"vfe0";
|
|
power-domains = <&gcc VFE_GDSC>;
|
|
clocks = <&gcc GCC_CAMSS_TOP_AHB_CLK>,
|
|
<&gcc GCC_CAMSS_ISPIF_AHB_CLK>,
|
|
<&gcc GCC_CAMSS_CSI0PHYTIMER_CLK>,
|
|
<&gcc GCC_CAMSS_CSI1PHYTIMER_CLK>,
|
|
<&gcc GCC_CAMSS_CSI0_AHB_CLK>,
|
|
<&gcc GCC_CAMSS_CSI0_CLK>,
|
|
<&gcc GCC_CAMSS_CSI0PHY_CLK>,
|
|
<&gcc GCC_CAMSS_CSI0PIX_CLK>,
|
|
<&gcc GCC_CAMSS_CSI0RDI_CLK>,
|
|
<&gcc GCC_CAMSS_CSI1_AHB_CLK>,
|
|
<&gcc GCC_CAMSS_CSI1_CLK>,
|
|
<&gcc GCC_CAMSS_CSI1PHY_CLK>,
|
|
<&gcc GCC_CAMSS_CSI1PIX_CLK>,
|
|
<&gcc GCC_CAMSS_CSI1RDI_CLK>,
|
|
<&gcc GCC_CAMSS_AHB_CLK>,
|
|
<&gcc GCC_CAMSS_VFE0_CLK>,
|
|
<&gcc GCC_CAMSS_CSI_VFE0_CLK>,
|
|
<&gcc GCC_CAMSS_VFE_AHB_CLK>,
|
|
<&gcc GCC_CAMSS_VFE_AXI_CLK>;
|
|
clock-names = "top_ahb",
|
|
"ispif_ahb",
|
|
"csiphy0_timer",
|
|
"csiphy1_timer",
|
|
"csi0_ahb",
|
|
"csi0",
|
|
"csi0_phy",
|
|
"csi0_pix",
|
|
"csi0_rdi",
|
|
"csi1_ahb",
|
|
"csi1",
|
|
"csi1_phy",
|
|
"csi1_pix",
|
|
"csi1_rdi",
|
|
"ahb",
|
|
"vfe0",
|
|
"csi_vfe0",
|
|
"vfe_ahb",
|
|
"vfe_axi";
|
|
vdda-supply = <&pm8916_l2>;
|
|
iommus = <&apps_iommu 3>;
|
|
ports {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
port@0 {
|
|
reg = <0>;
|
|
csiphy0_ep: endpoint {
|
|
clock-lanes = <1>;
|
|
data-lanes = <0 2>;
|
|
remote-endpoint = <&ov5645_ep>;
|
|
};
|
|
};
|
|
};
|
|
};
|