Merge "dt-bindings: camera: Update dt-bindings for Waipio" into camera-kernel.lnx.4.0

This commit is contained in:
Camera Software Integration 2020-10-01 13:13:10 -07:00 • committed by Gerrit - the friendly Code Review server
commit 0693537fbd
8 changed files with 570 additions and 278 deletions

View file

@ -15,6 +15,11 @@ i2c communication.
First Level Node - CCI device
======================================
- cell-index: cci hardware core index
Usage: required
Value type: <u32>
Definition: Should specify the Hardware index id.
- compatible
Usage: required
Value type: <string>
@ -22,11 +27,6 @@ First Level Node - CCI device
In case of cci version 1.2,
use "qcom,cci-v1.2".
- cell-index: cci hardware core index
Usage: required
Value type: <u32>
Definition: Should specify the Hardware index id.
- reg
Usage: required
Value type: <u32>
@ -40,16 +40,21 @@ First Level Node - CCI device
Definition: Should specify relevant names to each
reg property defined.
- interrupts
- reg-cam-base
Usage: required
Value type: <u32>
Definition: Interrupt associated with CCI HW.
Definition: List of bases.
- interrupt-names
Usage: required
Value type: <string>
Definition: Name of the interrupt.
- interrupts
Usage: required
Value type: <u32>
Definition: Interrupt associated with CCI HW.
- gpios
Usage: required
Value type: <phandle>

View file

@ -57,13 +57,13 @@ to CDM interface node.
Definition: Should be "qcom,cam170-cpas-cdm0", "qcom,cam480-cpas-cdm0",
"qcom,cam480-cpas-cdm1", "qcom,cam480-cpas-cdm2", "qcom,cam-cpas-cdm1_0",
"qcom,cam-cpas-cdm1_1", "qcom,cam-cpas-cdm1_2", "qcom,cam-ife-cdm1_2",
"qcom,cam-cpas-cdm2_0" or "qcom,cam-ope-cdm2_0",
"qcom,cam-cpas-cdm2_1" or "qcom,cam-ope-cdm2_1"
"qcom,cam-cpas-cdm2_0", "qcom,cam-ope-cdm2_0", "qcom,cam-cpas-cdm2_1",
"qcom,cam-rt-cdm2_1" or "qcom,cam-ope-cdm2_1"
- label
Usage: required
Value type: <string>
Definition: Should be "cpas-cdm".
Definition: Should be "cpas-cdm", "ife-cdm", or "rt-cdm".
- reg-names
Usage: required
@ -117,17 +117,34 @@ to CDM interface node.
Value type: <u32>
Definition: List of clocks rates.
- cdm-client-names
Usage: required
Value type: <string>
Definition: List of Clients supported by CDM HW node.
- clock-cntl-level
Usage: required
Value type: <string>
Definition: List of strings corresponds clock-rates levels.
Supported strings: minsvs, lowsvs, svs, svs_l1, nominal, turbo.
- cdm-client-names
Usage: required
Value type: <string>
Definition: List of Clients supported by CDM HW node.
- config-fifo
Usage: required
Value type: <empty>
Definition: Flag to let driver know whether to load fifo depths
from property fifo-depths or not.
- fifo-depths
Usage: required
Value type: <u32>
Definition: List of fifo depths supported by device.
- single-context-cdm
Usage: required
Value type: <empty>
Definition: Flag to indicate that the CDM is being used in single
context mode.
Example:
qcom,cpas-cdm0@ac48000 {
cell-index = <0>;
@ -152,7 +169,10 @@ Example:
<&clock_camcc CAM_CC_CPAS_AHB_CLK>,
<&clock_camcc CAM_CC_CAMNOC_AXI_CLK>;
qcom,clock-rates = <0 80000000 80000000 80000000 80000000 80000000>;
cdm-client-names = "ife";
clock-cntl-level = "turbo";
cdm-client-names = "ife0";
config-fifo;
fifo-depths = <64 0 0 0>;
single-context-cdm;
status = "ok";
};

View file

@ -9,6 +9,10 @@ first level describe the overall CSIPHY node structure.
======================================
First Level Node - CSIPHY device
======================================
- cell-index: csiphy hardware core index
Usage: required
Value type: <u32>
Definition: Should specify the Hardware index id.
- compatible
Usage: required
@ -19,11 +23,6 @@ First Level Node - CSIPHY device
"qcom,csiphy-v1.2.3", "qcom,csiphy-v2.0.1", "qcom,csiphy-v2.1.0",
"qcom,csiphy-v1.2.4", "qcom,csiphy-v1.2.5", "qcom,csiphy".
- cell-index: csiphy hardware core index
Usage: required
Value type: <u32>
Definition: Should specify the Hardware index id.
- reg
Usage: required
Value type: <u32>
@ -52,26 +51,6 @@ First Level Node - CSIPHY device
Value type: <string>
Definition: Name of the interrupt.
- clock-names
Usage: required
Value type: <string>
Definition: List of clock names required for CSIPHY HW.
- clock-rates
Usage: required
Value type: <u32>
Definition: List of clock rates in Hz for CSIPHY HW.
- clock-cntl-level
Usage: required
Value type: <string>
Definition: All different clock level node can support.
- clocks
Usage: required
Value type: <phandle>
Definition: all clock phandle and source clocks.
- regulator-names
Usage: required
Value type: <string>
@ -88,32 +67,96 @@ First Level Node - CSIPHY device
Definition: should contain phandle for mipi-csi-vdd regulator used for
CSIPHY device.
- csi-vdd-xxx-supply
Usage: required
Value type: <phandle>
Definition: should contain phandles for csi-vdd-1p2 and csi-vdd-0p9
regulators used for CSIPHY.
- csi-vdd-voltage
Usage: required
Value type: <u32>
Definition: should contain required voltage for csi-vdd supply for CSIPHY.
Definition: should contain required voltage for csi-vdd supply
for CSIPHY.
- rgltr-cntrl-support
Usage: required
Value type: <empty>
Definition: Flag to indicate whether regulator control support is
enabled or not.
- rgltr-min-voltage
Usage: required
Value type: <u32>
Definition: should contain required min voltage for gdsr, csi-vdd-1p2
and csi-vdd-0p9 supply for CSIPHY.
- rgltr-max-voltage
Usage: required
Value type: <u32>
Definition: should contain required max voltage for gdsr, csi-vdd-1p2
and csi-vdd-0p9 supply for CSIPHY.
- rgltr-load-current
Usage: required
Value type: <u32>
Definition: should contain peak current for gdsr, csi-vdd-1p2
and csi-vdd-0p9 supply for CSIPHY.
- clocks
Usage: required
Value type: <phandle>
Definition: all clock phandle and source clocks.
- clock-names
Usage: required
Value type: <string>
Definition: List of clock names required for CSIPHY HW.
- clock-cntl-level
Usage: required
Value type: <string>
Definition: All different clock level node can support.
- src-clock-name
Usage: required
Value type: <string>
Definition: Source clock name.
- clock-rates
Usage: required
Value type: <u32>
Definition: List of clock rates in Hz for CSIPHY HW.
Example:
qcom,csiphy@ac65000 {
cell-index = <0>;
compatible = "qcom,csiphy-v1.0", "qcom,csiphy";
reg = <0xac65000 0x200>;
reg-cam-base = <0x65000>;
reg-names = "csiphy";
interrupts = <0 477 0>;
interrupt-names = "csiphy";
regulator-names = "gdscr", "refgen";
mipi-csi-vdd-supply = <&pm8998_l1>;
csi-vdd-voltage = <1200000>;
gdscr-supply = <&titan_top_gdsc>;
clocks = <&clock_camcc CAM_CC_CPHY_RX_CLK_SRC>,
<&clock_camcc CAM_CC_CSIPHY0_CLK>,
<&clock_camcc CAM_CC_CSI0PHYTIMER_CLK_SRC>,
<&clock_camcc CAM_CC_CSI0PHYTIMER_CLK>;
clock-names = "cphy_rx_clk_src", "csiphy0_clk",
"csi0phytimer_clk_src", "csi0phytimer_clk";
clock-rates = <400000000 0 300000000 0>;
clock-cntl-level = "turbo";
status = "ok";
cam_csiphy0: qcom,csiphy0@ace4000 {
cell-index = <0>;
compatible = "qcom,csiphy-v2.1.0", "qcom,csiphy";
reg = < 0x0ace4000 0x2000>;
reg-names = "csiphy";
reg-cam-base = <0xe4000>;
interrupts = <GIC_SPI 477 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "csiphy0";
gdscr-supply = <&cam_cc_titan_top_gdsc>;
csi-vdd-1p2-supply = <&pm8350_l6>;
csi-vdd-0p9-supply = <&pm8350_l5>;
rgltr-cntrl-support;
regulator-names = "gdscr", "csi-vdd-1p2", "csi-vdd-0p9";
rgltr-min-voltage = <0 1200000 880000>;
rgltr-max-voltage = <0 1248000 912000>;
rgltr-load-current = <0 54700 102000>;
clocks = <&clock_camcc CAM_CC_CPHY_RX_CLK_SRC>,
<&clock_camcc CAM_CC_CSIPHY0_CLK>,
<&clock_camcc CAM_CC_CSI0PHYTIMER_CLK_SRC>,
<&clock_camcc CAM_CC_CSI0PHYTIMER_CLK>;
clock-names = "cphy_rx_clk_src",
"csiphy0_clk",
"csi0phytimer_clk_src",
"csi0phytimer_clk";
src-clock-name = "csi0phytimer_clk_src";
clock-cntl-level = "nominal";
clock-rates =
<480000000 0 400000000 0>;
status = "ok";
};

View file

@ -2,7 +2,7 @@
The MSM camera ICP devices are implemented multiple device nodes.
The root icp device node has properties defined to hint the driver
about the number of A5,IPE and BPS nodes available during the
about the number of A5, LX7, IPE and BPS nodes available during the
probe sequence. Each node has multiple properties defined
for interrupts, clocks and regulators.
@ -10,7 +10,7 @@ for interrupts, clocks and regulators.
Required Node Structure
=======================
ICP root interface node takes care of the handling account for number
of A5, IPE and BPS devices present on the hardware.
of A5, LX7, IPE and BPS devices present on the hardware.
- compatible
Usage: required
@ -20,12 +20,13 @@ of A5, IPE and BPS devices present on the hardware.
- compat-hw-name
Usage: required
Value type: <string>
Definition: Should be "qcom,a5" or "qcom,ipe0" or "qcom,ipe1" or "qcom,bps".
Definition: Should be "qcom,a5", "qcom,lx7", "qcom,ipe0",
"qcom,ipe1" or "qcom,bps".
- num-a5
- num-a5 or num-lx7
Usage: required
Value type: <u32>
Definition: Number of supported A5 processors.
Definition: Number of supported A5 or LX7 processors.
- num-ipe
Usage: required
@ -38,20 +39,21 @@ of A5, IPE and BPS devices present on the hardware.
Definition: Number of supported BPS HW blocks.
Example:
qcom,cam-icp {
compatible = "qcom,cam-icp";
compat-hw-name = "qcom,a5", "qcom,ipe0", "qcom,ipe1", "qcom,bps";
num-a5 = <1>;
num-ipe = <2>;
num-bps = <1>;
status = "ok";
};
qcom,cam-icp {
compatible = "qcom,cam-icp";
compat-hw-name = "qcom,a5", "qcom,lx7", "qcom,ipe0",
"qcom,ipe0", "qcom,bps";
num-a5 = <1>; or num-lx7 = <1>;
num-ipe = <2>;
num-bps = <1>;
status = "ok";
};
=======================
Required Node Structure
=======================
A5/IPE/BPS Node's provides interface for Image Control Processor driver
about the A5 register map, interrupt map, clocks, regulators
A5/LX7/IPE/BPS Node's provides interface for Image Control Processor driver
about the A5/LX7 register map, interrupt map, clocks, regulators
and name of firmware image.
- cell-index
@ -62,7 +64,8 @@ and name of firmware image.
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,cam-a5" or "qcom,cam-ipe" or "qcom,cam-bps".
Definition: Should be "qcom,cam-a5", "qcom,cam-lx7",
"qcom,cam-ipe" or "qcom,cam-bps".
- reg-names
Usage: optional
@ -87,23 +90,23 @@ and name of firmware image.
- interrupts
Usage: optional
Value type: <u32>
Definition: Interrupt associated with CDM HW.
Definition: Interrupt associated with ICP HW.
- regulator-names
Usage: required
Value type: <string>
Definition: Name of the regulator resources for CDM HW.
Definition: Name of the regulator resources for ICP HW.
- camss-supply
Usage: required
Value type: <phandle>
Definition: Regulator reference corresponding to the names listed
in "regulator-names".
in "regulator-names".
- clock-names
Usage: required
Value type: <string>
Definition: List of clock names required for CDM HW.
Definition: List of clock names required for ICP HW.
- src-clock-name
Usage: required
@ -118,7 +121,7 @@ and name of firmware image.
- clocks
Usage: required
Value type: <phandle>
Definition: List of clocks used for CDM HW.
Definition: List of clocks used for ICP HW.
- clock-cntl-level
Usage: required
@ -163,75 +166,123 @@ and name of firmware image.
ipe/bps ubwc properties are not used.
Examples:
a5: qcom,a5@ac00000 {
cam_a5: qcom,a5 {
cell-index = <0>;
compatible = "qcom,cam-a5";
reg = <0xac00000 0x6000>,
<0xac10000 0x8000>,
<0xac18000 0x3000>;
reg-names = "a5_qgic", "a5_sierra", "a5_csr";
interrupts = <0 463 0>;
reg-cam-base = <0x00000 0x10000 0x18000>;
interrupts = <GIC_SPI 463 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "a5";
regulator-names = "camss-vdd";
camss-vdd-supply = <&titan_top_gdsc>;
clock-names = "gcc_cam_ahb_clk",
"gcc_cam_axi_clk",
"soc_ahb_clk",
"cpas_ahb_clk",
"camnoc_axi_clk",
"icp_apb_clk",
"icp_atb_clk",
"icp_clk",
camss-vdd-supply = <&cam_cc_titan_top_gdsc>;
clock-names =
"soc_fast_ahb",
"icp_ahb_clk",
"icp_clk_src",
"icp_cti_clk",
"icp_ts_clk";
clocks = <&clock_gcc GCC_CAMERA_AHB_CLK>,
<&clock_gcc GCC_CAMERA_AXI_CLK>,
<&clock_camcc CAM_CC_SOC_AHB_CLK>,
<&clock_camcc CAM_CC_CPAS_AHB_CLK>,
<&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
<&clock_camcc CAM_CC_ICP_APB_CLK>,
<&clock_camcc CAM_CC_ICP_ATB_CLK>,
<&clock_camcc CAM_CC_ICP_CLK>,
<&clock_camcc CAM_CC_ICP_CLK_SRC>,
<&clock_camcc CAM_CC_ICP_CTI_CLK>,
<&clock_camcc CAM_CC_ICP_TS_CLK>;
"icp_clk";
src-clock-name = "icp_clk_src";
clocks =
<&clock_camcc CAM_CC_FAST_AHB_CLK_SRC>,
<&clock_camcc CAM_CC_ICP_AHB_CLK>,
<&clock_camcc CAM_CC_ICP_CLK_SRC>,
<&clock_camcc CAM_CC_ICP_CLK>;
clock-rates = <0 0 0 80000000 0 0 0 0 600000000 0 0>;
clock-cntl-level = "turbo";
clock-rates =
<0 0 400000000 0>,
<0 0 480000000 0>,
<0 0 600000000 0>,
<0 0 600000000 0>,
<0 0 600000000 0>;
clock-cntl-level = "lowsvs", "svs", "svs_l1", "nominal",
"turbo";
fw_name = "CAMERA_ICP.elf";
/* "ubwc-cfg" is not used, even if defined the new property
tags will be priortized. If the new properties are not used
please specify "ubwc-cfg" in that case */
ubwc-ipe-fetch-cfg = <0x707b 0x7083>;
ubwc-ipe-write-cfg = <0x161ef 0x1620f>;
ubwc-bps-fetch-cfg = <0x707b 0x7083>
ubwc-bps-fetch-cfg = <0x707b 0x7083>;
ubwc-bps-write-cfg = <0x161ef 0x1620f>;
status = "ok";
};
qcom,ipe0 {
cam_lx7: qcom,lx7 {
cell-index = <0>;
compatible = "qcom,cam-lx7";
reg = <0xac01000 0x400>,
<0xac01800 0x400>;
reg-names = "lx7_csr", "lx7_cirq";
reg-cam-base = <0x1000 0x1800>;
interrupts = <GIC_SPI 463 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "lx7";
regulator-names = "camss-vdd";
camss-vdd-supply = <&cam_cc_titan_top_gdsc>;
clock-names =
"soc_slow_ahb",
"icp_ahb_clk",
"icp_clk_src",
"icp_clk";
src-clock-name = "icp_clk_src";
clocks =
<&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
<&clock_camcc CAM_CC_ICP_AHB_CLK>,
<&clock_camcc CAM_CC_ICP_CLK_SRC>,
<&clock_camcc CAM_CC_ICP_CLK>;
clock-rates =
<80000000 0 400000000 0>,
<80000000 0 480000000 0>,
<80000000 0 600000000 0>,
<80000000 0 600000000 0>,
<80000000 0 600000000 0>;
clock-cntl-level = "lowsvs", "svs", "svs_l1", "nominal",
"turbo";
fw_name = "CAMERA_ICP.elf";
ubwc-ipe-fetch-cfg = <0x707b 0x7083>;
ubwc-ipe-write-cfg = <0x161ef 0x1620f>;
ubwc-bps-fetch-cfg = <0x707b 0x7083>;
ubwc-bps-write-cfg = <0x161ef 0x1620f>;
status = "ok";
};
cam_ipe0: qcom,ipe0@ac42000 {
cell-index = <0>;
compatible = "qcom,cam-ipe";
reg = <0xac42000 0x18000>;
reg-names = "ipe0_top";
reg-cam-base = <0x42000>;
regulator-names = "ipe0-vdd";
ipe0-vdd-supply = <&ipe_0_gdsc>;
clock-names = "ipe_0_ahb_clk",
"ipe_0_areg_clk",
"ipe_0_axi_clk",
"ipe_0_clk",
"ipe_0_clk_src";
src-clock-name = "ipe_0_clk_src";
clocks = <&clock_camcc CAM_CC_IPE_0_AHB_CLK>,
<&clock_camcc CAM_CC_IPE_0_AREG_CLK>,
<&clock_camcc CAM_CC_IPE_0_AXI_CLK>,
<&clock_camcc CAM_CC_IPE_0_CLK>,
<&clock_camcc CAM_CC_IPE_0_CLK_SRC>;
ipe0-vdd-supply = <&cam_cc_ipe_0_gdsc>;
clock-names =
"ipe_nps_ahb_clk_src",
"ipe_nps_ahb_clk",
"ipe_fast_ahb_clk_src",
"ipe_nps_fast_ahb_clk",
"ipe_pps_fast_ahb_clk",
"ipe_nps_clk_src",
"ipe_nps_clk";
"ipe_pps_clk";
src-clock-name = "ipe_nps_clk_src";
clock-control-debugfs = "true";
clocks =
<&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
<&clock_camcc CAM_CC_IPE_NPS_AHB_CLK>,
<&clock_camcc CAM_CC_FAST_AHB_CLK_SRC>,
<&clock_camcc CAM_CC_IPE_NPS_FAST_AHB_CLK>,
<&clock_camcc CAM_CC_IPE_PPS_FAST_AHB_CLK>,
<&clock_camcc CAM_CC_IPE_NPS_CLK_SRC>,
<&clock_camcc CAM_CC_IPE_NPS_CLK>,
<&clock_camcc CAM_CC_IPE_PPS_CLK>;
clock-rates = <0 0 0 0 240000000>,
<0 0 0 0 404000000>,
<0 0 0 0 480000000>,
<0 0 0 0 538000000>,
<0 0 0 0 600000000>;
clock-cntl-level = "lowsvs", "svs",
"svs_l1", "nominal", "turbo";
clock-rates =
<80000000 0 100000000 0 0 364000000 0 0>,
<80000000 0 200000000 0 0 500000000 0 0>,
<80000000 0 300000000 0 0 600000000 0 0>,
<80000000 0 400000000 0 0 700000000 0 0>,
<80000000 0 400000000 0 0 700000000 0 0>;
clock-cntl-level = "lowsvs", "svs", "svs_l1", "nominal",
"turbo";
status = "ok";
};
qcom,ipe1 {
@ -260,28 +311,38 @@ qcom,ipe1 {
"svs_l1", "nominal", "turbo";
};
bps: qcom,bps {
cam_bps: qcom,bps@ac2c000 {
cell-index = <0>;
compatible = "qcom,cam-bps";
reg = <0xac2c000 0xB000>;
reg-names = "bps_top";
reg-cam-base = <0x2c000>;
regulator-names = "bps-vdd";
bps-vdd-supply = <&bps_gdsc>;
clock-names = "bps_ahb_clk",
"bps_areg_clk",
"bps_axi_clk",
"bps_clk",
"bps_clk_src";
bps-vdd-supply = <&cam_cc_bps_gdsc>;
clock-names =
"bps_ahb_clk_src",
"bps_ahb_clk",
"bps_fast_ahb_clk_src",
"bps_fast_ahb_clk",
"bps_clk_src",
"bps_clk";
src-clock-name = "bps_clk_src";
clocks = <&clock_camcc CAM_CC_BPS_AHB_CLK>,
<&clock_camcc CAM_CC_BPS_AREG_CLK>,
<&clock_camcc CAM_CC_BPS_AXI_CLK>,
<&clock_camcc CAM_CC_BPS_CLK>,
<&clock_camcc CAM_CC_BPS_CLK_SRC>;
clock-control-debugfs = "true";
clocks =
<&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
<&clock_camcc CAM_CC_BPS_AHB_CLK>,
<&clock_camcc CAM_CC_FAST_AHB_CLK_SRC>,
<&clock_camcc CAM_CC_BPS_FAST_AHB_CLK>,
<&clock_camcc CAM_CC_BPS_CLK_SRC>,
<&clock_camcc CAM_CC_BPS_CLK>;
clock-rates = <0 0 0 0 200000000>,
<0 0 0 0 404000000>,
<0 0 0 0 480000000>,
<0 0 0 0 600000000>,
<0 0 0 0 600000000>;
clock-cntl-level = "lowsvs", "svs",
"svs_l1", "nominal", "turbo";
clock-rates =
<80000000 0 100000000 0 200000000 0>,
<80000000 0 200000000 0 400000000 0>,
<80000000 0 300000000 0 480000000 0>,
<80000000 0 400000000 0 600000000 0>,
<80000000 0 400000000 0 600000000 0>;
clock-cntl-level = "lowsvs", "svs", "svs_l1", "nominal",
"turbo";
status = "ok";
};

View file

@ -12,21 +12,20 @@ The IFE CSID device is described in one level of the device node.
======================================
First Level Node - CAM IFE CSID device
======================================
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,csid170", "qcom,csid170_200", "qcom,csid175", "qcom,csid175_200",
"qcom,csid480", "qcom,csid580", "qcom,csid680", "qcom,csid-lite170",
"qcom,csid-lite175", "qcom,csid-lite480" or "qcom,csid-custom480",
"qcom,csid-lite580" or "qcom,csid-custom580",
"qcom,csid-lite680".
- cell-index
Usage: required
Value type: <u32>
Definition: Should specify the hardware index id.
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,csid170", "qcom,csid170_200", "qcom,csid175",
"qcom,csid175_200", "qcom,csid480", "qcom,csid580", "qcom,csid680",
"qcom,csid-lite170", "qcom,csid-lite175", "qcom,csid-lite480",
"qcom,csid-custom480", "qcom,csid-lite580", "qcom,csid-custom580",
"qcom,csid-lite680" or "qcom,csid-custom680".
- reg-names
Usage: required
Value type: <string>
@ -37,6 +36,11 @@ First Level Node - CAM IFE CSID device
Value type: <u32>
Definition: Register values.
- reg-cam-base
Usage: required
Value type: <u32>
Definition: List of bases.
- interrupt-names
Usage: Required
Value type: <string>
@ -90,35 +94,41 @@ First Level Node - CAM IFE CSID device
Example:
qcom,csid0@acb3000 {
cell-index = <0>;
compatible = "qcom,csid580";
reg = <0xacb3000 0x1000>;
reg-names = "csid";
interrupts = <0 464 0>;
interrupt-names = "csid";
vdd-names = "camss", "ife0";
camss-supply = <&titan_top_gdsc>;
ife0-supply = <&ife_0_gdsc>;
clock-names = "soc_ahb_clk",
"cpas_ahb_clk",
"slow_ahb_clk_src",
"ife_clk",
"ife_clk_src",
"ife_csid_clk",
"ife_csid_clk_src",
"ife_cphy_rx_clk",
"cphy_rx_clk_src";
clocks = <&clock_camcc CAM_CC_SOC_AHB_CLK>,
<&clock_camcc CAM_CC_CPAS_AHB_CLK>,
<&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
<&clock_camcc CAM_CC_IFE_0_CLK>,
<&clock_camcc CAM_CC_IFE_0_CLK_SRC>,
<&clock_camcc CAM_CC_IFE_0_CSID_CLK>,
<&clock_camcc CAM_CC_IFE_0_CSID_CLK_SRC>,
<&clock_camcc CAM_CC_IFE_0_CPHY_RX_CLK>,
<&clock_camcc CAM_CC_CPHY_RX_CLK_SRC>;
clock-rates = <0 0 80000000 0 320000000 0 384000000 0 384000000>;
src-clock-name = "ife_csid_clk_src";
status = "ok";
};
cam_csid0: qcom,csid0@acb7000 {
cell-index = <0>;
compatible = "qcom,csid680";
reg-names = "csid", "csid_top", "rt_wrapper";
reg = <0xacb7000 0xd00>,
<0xacb6000 0x1000>,
<0xac62000 0x64000>;
reg-cam-base = <0xb7000 0xb6000 0x62000>;
interrupt-names = "csid";
interrupts = <GIC_SPI 464 IRQ_TYPE_EDGE_RISING>;
regulator-names = "camss";
camss-supply = <&cam_cc_titan_top_gdsc>;
clock-names =
"csid_clk_src",
"csid_clk",
"cphy_rx_clk_src",
"csiphy_rx_clk",
"cpas_fast_ahb_src",
"cpas_fast_ahb";
clocks =
<&clock_camcc CAM_CC_CSID_CLK_SRC>,
<&clock_camcc CAM_CC_CSID_CLK>,
<&clock_camcc CAM_CC_CPHY_RX_CLK_SRC>,
<&clock_camcc CAM_CC_CSID_CSIPHY_RX_CLK>,
<&clock_camcc CAM_CC_FAST_AHB_CLK_SRC>,
<&clock_camcc CAM_CC_CPAS_FAST_AHB_CLK>;
clock-rates =
<400000000 0 400000000 0 100000000 0>,
<480000000 0 480000000 0 200000000 0>,
<480000000 0 480000000 0 300000000 0>,
<480000000 0 480000000 0 400000000 0>,
<480000000 0 480000000 0 400000000 0>;
clock-cntl-level = "lowsvs", "svs", "svs_l1", "nominal",
"turbo";
src-clock-name = "csid_clk_src";
clock-control-debugfs = "true";
status = "ok";
};

132
bindings/msm-cam-sfe.txt Normal file
View file

@ -0,0 +1,132 @@
* Qualcomm Technologies, Inc. MSM Camera SFE
Camera SFE device provides the definitions for enabling
the SFE hardware. It also provides the functions for the client
to control the SFE hardware.
=======================
Required Node Structure
=======================
The SFE device is described in one level of the device node.
======================================
First Level Node - CAM SFE device
======================================
Required properties:
- cell-index
Usage: required
Value type: <u32>
Definition: Should specify the hardware index id.
- compatible
Usage: required
Value type: <string>
Definition: Should specify the compatibility string for matching the
driver. e.g. "qcom,sfe680".
- reg-names
Usage: required
Value type: <string>
Definition: Should specify the name of the register block.
- reg
Usage: required
Value type: <u32>
Definition: Register values.
- reg-cam-base
Usage: required
Value type: <u32>
Definition: List of bases.
- interrupt-names
Usage: Required
Value type: <string>
Definition: Name of the interrupt.
- interrupts
Usage: Required
Value type: <u32>
Definition: Interrupt associated with SFE HW.
- regulator-names
Usage: required
Value type: <string>
Definition: Name of the regulator resources for SFE HW.
- xxxx-supply
Usage: required
Value type: <phandle>
Definition: Regulator reference corresponding to the names listed in
"regulator-names".
- clock-names
Usage: required
Value type: <string>
Definition: List of clock names required for SFE HW.
- clocks
Usage: required
Value type: <phandle>
Definition: List of clocks used for SFE HW.
- clock-rates
Usage: required
Value type: <u32>
Definition: List of clocks rates.
- clock-cntl-level
Usage: required
Value type: <string>
Definition: All different clock level node can support.
- src-clock-name
Usage: required
Value type: <string>
Definition: Source clock name.
- scl-clk-names
Usage: required
Value type: <string>
Definition: Source clock name for register write.
- clock-control-debugfs
Usage: optional
Value type: <string>
Definition: Enable/Disable clk rate control.
Example:
cam_sfe0: qcom,sfe0@ac9e000 {
cell-index = <0>;
compatible = "qcom,sfe680";
reg-names = "sfe0", "rt_wrapper";
reg = <0xac9e000 0x8000>,
<0xac62000 0x64000>;
reg-cam-base = <0x9e000 0x62000>;
interrupt-names = "sfe";
interrupts = <GIC_SPI 462 IRQ_TYPE_EDGE_RISING>;
regulator-names = "camss", "sfe0";
camss-supply = <&cam_cc_titan_top_gdsc>;
sfe0-supply = <&cam_cc_sfe_0_gdsc>;
clock-names =
"sfe_0_ahb",
"sfe_clk_src",
"sfe_clk";
clocks =
<&clock_camcc CAM_CC_SFE_0_FAST_AHB_CLK>,
<&clock_camcc CAM_CC_SFE_0_CLK_SRC>,
<&clock_camcc CAM_CC_SFE_0_CLK>;
clock-rates =
<100000000 432000000 0>,
<200000000 594000000 0>,
<300000000 675000000 0>,
<400000000 785000000 0>,
<400000000 785000000 0>;
clock-cntl-level = "lowsvs", "svs", "svs_l1", "nominal",
"turbo";
src-clock-name = "sfe_clk_src";
scl-clk-names = "sfe_0_ahb";
clock-control-debugfs = "true";
status = "ok";
};

View file

@ -13,17 +13,17 @@ The TPG device is described in one level of the device node.
First Level Node - CAM TPG device
======================================
Required properties:
- cell-index
Usage: required
Value type: <u32>
Definition: Should specify the hardware index id.
- compatible
Usage: required
Value type: <string>
Definition: Should specify the compatibility string for matching the
driver. e.g. "qcom,tpg101", "qcom,tpg102", "qcom,tpgv1", "qcom,tpg103"
- cell-index
Usage: required
Value type: <u32>
Definition: Should specify the hardware index id.
- reg-names
Usage: required
Value type: <string>
@ -34,15 +34,10 @@ Required properties:
Value type: <u32>
Definition: Register values.
- interrupt-names
Usage: Required
Value type: <string>
Definition: Name of the interrupt.
- interrupts
Usage: Required
- reg-cam-base
Usage: required
Value type: <u32>
Definition: Interrupt associated with TFE HW.
Definition: List of bases.
- regulator-names
Usage: required
@ -55,6 +50,16 @@ Required properties:
Definition: Regulator reference corresponding to the names listed in
"regulator-names".
- interrupt-names
Usage: Required
Value type: <string>
Definition: Name of the interrupt.
- interrupts
Usage: Required
Value type: <u32>
Definition: Interrupt associated with TFE HW.
- clock-names
Usage: required
Value type: <string>
@ -70,6 +75,11 @@ Required properties:
Value type: <u32>
Definition: List of clocks rates.
- clock-cntl-level
Usage: required
Value type: <string>
Definition: All different clock level node can support.
- src-clock-name
Usage: required
Value type: <string>
@ -87,27 +97,30 @@ Required properties:
along with source clock.
Example:
cam_tfe_tpg0: qcom,tpg0@5c66000 {
cell-index = <0>;
compatible = "qcom,tpg101";
reg-names = "tpg0", "top";
reg = <0x5c66000 0x400>,
<0x5c11000 0x1000>;
reg-cam-base = <0x66000 0x11000>;
regulator-names = "camss";
camss-supply = <&gcc_camss_top_gdsc>;
clock-names =
"cphy_rx_clk_src",
"tfe_0_cphy_rx_clk";
clocks =
<&gcc GCC_CAMSS_TFE_CPHY_RX_CLK_SRC>,
<&gcc GCC_CAMSS_TFE_0_CPHY_RX_CLK>;
clock-rates =
<240000000 240000000>,
<341333333 341333333>,
<384000000 384000000>;
clock-cntl-level = "svs", "svs_l1", "turbo";
src-clock-name = "cphy_rx_clk_src";
clock-control-debugfs = "false";
status = "ok";
};
cam_csiphy_tpg0: qcom,tpg0@acf6000 {
cell-index = <0>;
compatible = "qcom,tpg103";
reg-names = "tpg0", "cam_cpas_top";
reg = <0xacf6000 0x400>,
<0xac13000 0x1000>;
reg-cam-base = <0xf6000 0x13000>;
regulator-names = "camss";
camss-supply = <&cam_cc_titan_top_gdsc>;
interrupt-names = "tpg0";
interrupts = <GIC_SPI 413 IRQ_TYPE_EDGE_RISING>;
clock-names =
"cphy_rx_clk_src",
"csiphy0_clk",
"csi0phytimer_clk_src",
"csi0phytimer_clk";
clocks =
<&clock_camcc CAM_CC_CPHY_RX_CLK_SRC>,
<&clock_camcc CAM_CC_CSIPHY0_CLK>,
<&clock_camcc CAM_CC_CSI0PHYTIMER_CLK_SRC>,
<&clock_camcc CAM_CC_CSI0PHYTIMER_CLK>;
clock-rates =
<480000000 0 400000000 0>;
clock-cntl-level = "nominal";
src-clock-name = "csi0phytimer_clk_src";
status = "ok";
};

View file

@ -13,19 +13,20 @@ The VFE device is described in one level of the device node.
First Level Node - CAM VFE device
======================================
Required properties:
- cell-index
Usage: required
Value type: <u32>
Definition: Should specify the hardware index id.
- compatible
Usage: required
Value type: <string>
Definition: Should specify the compatibility string for matching the
driver. e.g. "qcom,vfe580", "qcom,vfe480", "qcom,vfe175", "qcom,vfe170",
"qcom,vfe175_130", "qcom,vfe170_150", "qcom,vfe-lite580", "qcom,vfe-lite480",
"qcom,vfe-lite175", "qcom,vfe-lite175_130", "qcom,vfe-lite170".
- cell-index
Usage: required
Value type: <u32>
Definition: Should specify the hardware index id.
driver. e.g. "qcom,vfe680", "qcom,vfe580", "qcom,vfe480", "qcom,vfe175",
"qcom,vfe170", "qcom,vfe175_130", "qcom,vfe170_150", "qcom,vfe-lite680",
"qcom,vfe-lite580", "qcom,vfe-lite480", "qcom,vfe-lite175",
"qcom,vfe-lite175_130" or "qcom,vfe-lite170".
- reg-names
Usage: required
@ -37,6 +38,11 @@ Required properties:
Value type: <u32>
Definition: Register values.
- reg-cam-base
Usage: required
Value type: <u32>
Definition: List of bases.
- interrupt-names
Usage: Required
Value type: <string>
@ -121,42 +127,44 @@ Optional properties:
Definition: HW unique Pid values
Example:
qcom,vfe0@acaf000 {
cell-index = <0>;
compatible = "qcom,vfe580";
reg-names = "ife";
reg = <0xacaf000 0x4000>;
interrupts = <0 465 0>;
interrupt-names = "ife";
vdd-names = "camss-vdd", "ife0-vdd";
camss-vdd-supply = <&titan_top_gdsc>;
ife0-vdd-supply = <&ife_0_gdsc>;
clock-names = "soc_ahb_clk",
"cpas_ahb_clk",
"slow_ahb_clk_src",
"ife_clk",
"ife_clk_src",
"ife_csid_clk",
"ife_csid_clk_src",
"camnoc_axi_clk",
"ife_axi_clk",
clocks = <&clock_camcc CAM_CC_SOC_AHB_CLK>,
<&clock_camcc CAM_CC_CPAS_AHB_CLK>,
<&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
<&clock_camcc CAM_CC_IFE_0_CLK>,
<&clock_camcc CAM_CC_IFE_0_CLK_SRC>,
<&clock_camcc CAM_CC_IFE_0_CSID_CLK>,
<&clock_camcc CAM_CC_IFE_0_CSID_CLK_SRC>,
<&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
<&clock_camcc CAM_CC_IFE_0_AXI_CLK>,
clock-rates = <0 0 80000000 0 320000000 0 384000000 0 0 0>;
src-clock-name = "ife_clk_src";
clock-names-option = "ife_dsp_clk";
clocks-option = <&clock_camcc CAM_CC_IFE_0_DSP_CLK>;
clock-rates-option = <600000000>;
scl-clk-en;
scl-clk-names = "ife_axi_clk";
qcom,cam-cx-ipeak = <&cx_ipeak_lm 2>;
cam_hw_pid = < 28 4 16 8 >;
status = "ok";
};
cam_vfe0: qcom,ife0@ac62000 {
cell-index = <0>;
compatible = "qcom,vfe680";
reg-names = "ife", "cam_camnoc", "rt_wrapper";
reg = <0xac62000 0xF000>,
<0xac19000 0x9000>,
<0xac62000 0x64000>;
reg-cam-base = <0x62000 0x19000 0x62000>;
interrupt-names = "ife";
interrupts = <GIC_SPI 465 IRQ_TYPE_EDGE_RISING>;
regulator-names = "camss", "ife0";
camss-supply = <&cam_cc_titan_top_gdsc>;
ife0-supply = <&cam_cc_ife_0_gdsc>;
clock-names =
"ife_0_ahb_src",
"ife_0_ahb",
"ife_clk_src",
"ife_clk";
clocks =
<&clock_camcc CAM_CC_FAST_AHB_CLK_SRC>,
<&clock_camcc CAM_CC_IFE_0_FAST_AHB_CLK>,
<&clock_camcc CAM_CC_IFE_0_CLK_SRC>,
<&clock_camcc CAM_CC_IFE_0_CLK>;
clock-rates =
<100000000 0 432000000 0>,
<200000000 0 594000000 0>,
<300000000 0 675000000 0>,
<400000000 0 785000000 0>,
<400000000 0 785000000 0>;
clock-cntl-level = "lowsvs", "svs", "svs_l1", "nominal",
"turbo";
src-clock-name = "ife_clk_src";
scl-clk-names = "ife_0_ahb";
clock-control-debugfs = "true";
clock-names-option = "ife_dsp_clk";
clocks-option = <&clock_camcc CAM_CC_IFE_0_DSP_CLK>;
clock-rates-option = <594000000>;
ubwc-static-cfg = <0x1026 0x1036>;
cam_hw_pid = <16 28 20 8>;
status = "ok";
};