git-subtree-dir: qcom/camera
git-subtree-mainline: 8263fe365e
git-subtree-split: a1378b76f0
This commit is contained in:
kmiit
2025-06-12 15:55:55 +08:00
148 changed files with 77511 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,203 @@
* Qualcomm Technologies, Inc. MSM Camera CDM
CDM (Camera Data Mover) is module intended to provide means for fast programming
camera registers and lookup tables.
=======================
Required Node Structure
=======================
CDM Interface node takes care of the handling has HW nodes and provide interface
for camera clients.
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,cam-cdm-intf".
- label
Usage: required
Value type: <string>
Definition: Should be "cam-cdm-intf".
- num-hw-cdm
Usage: required
Value type: <u32>
Definition: Number of supported HW blocks.
- cdm-client-names
Usage: required
Value type: <string>
Definition: List of Clients supported by CDM interface.
Example:
qcom,cam-cdm-intf {
compatible = "qcom,cam-cdm-intf";
label = "cam-cdm-intf";
num-hw-cdm = <1>;
cdm-client-names = "vfe",
"jpeg-dma",
"jpeg",
"fd";
};
=======================
Required Node Structure
=======================
CDM HW node provides interface for camera clients through
to CDM interface node.
- cell-index
Usage: required
Value type: <u32>
Definition: Node instance number.
- compatible
Usage: required
Value type: <string>
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", "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", "ife-cdm", or "rt-cdm".
- reg-names
Usage: required
Value type: <string>
Definition: Name of the register resources.
- reg
Usage: required
Value type: <u32>
Definition: Register values.
- reg-cam-base
Usage: required
Value type: <u32>
Definition: Offset of the register space compared to
to Camera base register space.
- interrupt-names
Usage: optional
Value type: <string>
Definition: Name of the interrupt.
- interrupts
Usage: optional
Value type: <u32>
Definition: Interrupt associated with CDM HW.
- regulator-names
Usage: required
Value type: <string>
Definition: Name of the regulator resources for CDM HW.
- camss-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 CDM HW.
- clocks
Usage: required
Value type: <phandle>
Definition: List of clocks used for CDM HW.
- clock-rates
Usage: required
Value type: <u32>
Definition: List of clocks rates.
- 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.
- nrt-device
Usage: optional
Value type: <empty>
Definition: Flag to indicate whether this is non real time device.
- vmrm-resource-ids
Usage: optional
Value type: <u32>
Definition: should specify vmrm resource id list order is mem label,
mem tag, irq1 label, irq2 label.
- override-cdm-family
Usage: optional
Value type: <u32>
Definition: should specify cdm family.
- override-cdm-version
Usage: optional
Value type: <u32>
Definition: should specify cdm version.
Example:
qcom,cpas-cdm0@ac48000 {
cell-index = <0>;
compatible = "qcom,cam170-cpas-cdm0";
label = "cpas-cdm0";
reg = <0xac48000 0x1000>;
reg-names = "cpas-cdm";
interrupts = <0 461 0>;
interrupt-names = "cpas-cdm";
regulator-names = "camss";
camss-supply = <&titan_top_gdsc>;
clock-names = "soc_ahb_clk",
"titan_top_ahb_clk",
"cam_axi_clk",
"camcc_slow_ahb_clk_src",
"cpas_top_ahb_clk",
"camnoc_axi_clk";
clocks = <&clock_camcc CAM_CC_SOC_AHB_CLK>,
<&clock_gcc GCC_CAMERA_AHB_CLK>,
<&clock_gcc GCC_CAMERA_AXI_CLK>,
<&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
<&clock_camcc CAM_CC_CPAS_AHB_CLK>,
<&clock_camcc CAM_CC_CAMNOC_AXI_CLK>;
qcom,clock-rates = <0 80000000 80000000 80000000 80000000 80000000>;
clock-cntl-level = "turbo";
nrt-device;
cdm-client-names = "ife0";
config-fifo;
fifo-depths = <64 0 0 0>;
single-context-cdm;
vmrm-resource-ids = <12 12 12>;
override-cdm-family = <0>;
override-cdm-version = <0x20020000>;
status = "ok";
};

View File

@@ -0,0 +1,638 @@
* Qualcomm Technologies, Inc. MSM Camera CPAS
The MSM camera CPAS device provides dependency definitions for
enabling Camera CPAS HW and provides the Client definitions
for all HW blocks that use CPAS driver for BW voting. These
definitions consist of various properties that define the list
of clients supported, AHB, AXI master-slave IDs used for BW
voting.
=======================
Required Node Structure
=======================
The camera CPAS device must be described in five levels. The first level has
general description of cpas including compatibility, interrupts, power info
etc.
The second level deals with information related to CPAS clients and how
the BW should be calculated. For simplicity in BW vote consolidation, the
grouping of granular votes pertaining to CPAS clients is represented as nodes
at four CAMNOC levels. The nodes at a particular level have some common
properties such as traffic merge type which indicates whether the votes at a
node have to be summed up, sum divided by two or taken max of all. CAMNOC Level
zero node usually represents granular vote info for clients. CAMNOC Level one
represents nodes which are clubbed together by arbiter in CAMNOC diagram. CAMNOC
Level two represents consolidated read and write nodes for RT and NRT paths.
CAMNOC Level three provides axi port information and these have nodes where all
paths from clients eventually converge according to their properties. This
includes master-slave IDs, ab, ib values for mnoc, camnoc bus interface
==================================
First Level Node - CAM CPAS device
==================================
- cell-index
Usage: required
Value type: <u32>
Definition: Node instance number.
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,cam-cpas".
- label
Usage: required
Value type: <string>
Definition: Should be "cpas".
- arch-compat
Usage: required
Value type: <string>
Definition: Should be "cpas_top" or "camss_top".
- reg-names
Usage: required
Value type: <string>
Definition: Name of the register resources.
- reg
Usage: required
Value type: <u32>
Definition: Register values.
- reg-cam-base
Usage: required
Value type: <u32>
Definition: Offset of the register space compared to
to Camera base register space.
- cam_hw_fuse
Usage: optional
Value type: <u32:fuse_id> <u32:fuse_address> <u32:fuse_mask> <u32:fuse_type> <u32:hw_map>
Definition: List of fuse based features and respective fuse info.
fuse_id: fuse id for each features
fuse_address: fuse register io address
fuse_mask: fuse mask for the fuse registers
fuse_type: fuse feature is enable, disable or value type
hw_map: Hw map of the feature, set bit positions which HWs are
supported for that feature. Use 0xFF if all HWs supported
- interrupt-names
Usage: optional
Value type: <string>
Definition: Name of the interrupt.
- interrupts
Usage: optional
Value type: <u32>
Definition: Interrupt associated with CAMNOC HW.
- qcom,cpas-hw-ver
Usage: required
Value type: <u32>
Definition: CAM HW Version information.
- camnoc-axi-min-ib-bw
Usage: optional
Value type: <u64>
Definition: Min camnoc axi bw for the given target.
- cam-max-rt-axi-bw
Usage: optional
Value type: <u64>
Definition: Max RT axi bw allowed to be voted for the given target.
- regulator-names
Usage: required
Value type: <string>
Definition: Name of the regulator resources for CPAS HW.
- camss-vdd-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 CPAS HW.
- clocks
Usage: required
Value type: <phandle>
Definition: List of clocks used for CPAS HW.
- src-clock-name
Usage: required
Value type: <string>
Definition: Source clock name.
- clock-rates
Usage: required
Value type: <u32>
Definition: List of clocks rates.
- 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.
- qcom,cam-cx-ipeak
Usage: required
Value type: <u32>
Definition: Camera Cx Ipeak ID.
- control-camnoc-axi-clk
Usage: optional
Value type: <empty>
Definition: Bool property specifying whether to control camnoc axi
clock from cpas driver.
- cam-crmb-clk
Usage: required
Value type: <empty>
Definition: Flag indicating whether the src clk in this node is
a crmb clk or not
- camnoc-bus-width
Usage: required if control-camnoc-axi-clk is enabled
Value type: <u32>
Definition: camnoc bus width.
- camnoc-axi-clk-bw-margin-perc
Usage: optional
Value type: <u32>
Definition: Percentage value to be added to camnoc bw while calculating
camnoc axi clock frequency.
- rpmh-bcm-info
Usage: optional
Value type: <u32:idx> <u32:bcm_fe> <u32:bcm_be> <u32:ddr_idx> <u32:mmnoc_idx>
Definition: Rpmh bcm register map
idx: Total number of BCMs
bcm_fe: First BCM FE (front-end) register offset.
bcm_be: First BCM BE (back-end) register offset.
ddr_idx: DDR BCM index
mmnoc_idx: MMNOC BCM index
- qcom,msm-bus,name
- qcom,msm-bus,num-cases
- qcom,msm-bus,num-paths
- qcom,msm-bus,vectors-KBps
Please refer Documentation/devicetree/bindings/arm/msm/msm_bus.txt
for the properties above.
- vdd-corners
Usage: required
Value type: <u32>
Definition: List of vdd corners to map for ahb level.
- vdd-corner-ahb-mapping
Usage: required
Value type: <string>
Definition: List of ahb level strings corresponds to vdd-corners.
Supported strings: suspend, svs, nominal, turbo
- client-id-based
Usage: required
Value type: <empty>
Definition: Bool property specifying whether CPAS clients are ID based.
- client-names
Usage: required
Value type: <string>
Definition: List of Clients supported by CPAS.
- client-bus-camnoc-based
Usage: optional
Value type: <empty>
Definition: Bool property specifying whether Clients are connected
through CAMNOC for AXI access.
- sys-cache-names
Usage: optional
Value type: <string>
Definition: last level cache info for camera. Specifies the type
of cache; small or large. Small cache is around 256K and its
read property is self-evict. Large cache is around 3.2M which
is pre-determined for a target based on the calulations done
for concerned use cases. Large cache is Non-self evict.
UIDs value and their usage can vary from target to target.
for example; same UID 38 is used as small and large in different
targets.
- sys-cache-uids
Usage: optional
Value type: <u32>
Definition: Client ID for camera caches. ID is used to differentiate
the property of the cache like being Forget, Dealloc.
- enable-secure-qos-update
Usage: optional
Value type: <empty>
Definition: Bool property specifying whether secure camera Qos update feature is enabled.
- enable-smart-qos
Usage: optional
Value type: <empty>
Definition: Bool property specifying whether Smart Qos feature is enabled.
- enable-cam-drv
Usage: optional
Value type: <u32>
Definition: Bit mask value specifying the DRV features enabled.
Supported: CAM_DDR_DRV
Please refer dt-bindings/msm-camera.h for all supported
definitions.
- rt-wr-priority-min
Usage: optional
Value type: <u32>
Definition: Minimum priority value for rt write NIUs.
- rt-wr-priority-max
Usage: optional
Value type: <u32>
Definition: Maximum priority value for rt write NIUs.
- rt-wr-priority-clamp
Usage: optional
Value type: <u32>
Definition: Clamp priority value for rt write NIUs.
- rt-wr-slope-factor
Usage: optional
Value type: <u32>
Definition: Slope factor value for rt write NIUs. Take in percentages
to avoid confusion, such as take value 100 for 1, take value 70 for 0.7.
- rt-wr-leaststressed-clamp-threshold
Usage: optional
Value type: <u32>
Definition: Least stressed clamp threshold value for rt write NIUs.
- rt-wr-moststressed-clamp-threshold
Usage: optional
Value type: <u32>
Definition: Most stressed clamp threshold value for rt write NIUs.
- rt-wr-highstress-indicator-threshold
Usage: optional
Value type: <u32>
Definition: High stress indicator threshold value for rt write NIUs.
Take in percentages to avoid confusion, such as take value 100 for 1,
take value 50 for 0.5. If the buf bw ratio for a NIU is larger than
high stress indicator threshold, this NIU is more stressed.
- rt-wr-lowstress-indicator-threshold
Usage: optional
Value type: <u32>
Definition: Low stress indicator threshold value for rt write NIUs.
Take in percentages to avoid confusion.
- rt-wr-bw-ratio-scale-factor
Usage: optional
Value type: <u32>
Definition: BW ratio scale factor value for rt write NIUs.
- domain-id
Usage: optional
Value type: <u32>
Definition: List of mapping between domain types and their IDs.
See dt-bindings/msm-camera.h for definitions of
supported domain types.
- domain-id-support-clks
Usage: optional
Value type: <string>
Definition: Clocks needed to be turned on for domain-id support.
Note that this property builds on top of clock-names-option,
clocks-option, clock-rates-option and shared-clks-option
(if any of these clocks are shared), so the associated
properties for those need to be included for this
property to work.
- vmrm-resource-ids
Usage: optional
Value type: <u32>
Definition: should specify vmrm resource id list order is mem label,
mem tag, irq1 label, irq2 label.
- cam-version
Usage: optional
Value type: <u32>
Definition: should specify camera version.
- cpas-version
Usage: optional
Value type: <u32>
Definition: should specify cpas version.
- camera-capability
Usage: optional
Value type: <u32>
Definition: should specify camera capability.
===================================================================
Third Level Node - CAMNOC Level nodes
===================================================================
- level-index
Usage: required
Value type: <u32>
Definition: Number representing level index for ndoes at current CAMNOC level
- camnoc-max-needed
Usage: optional
Value type: <empty>
Definition: Bool property for all votes at current level to be taken maximum
for CAMNOC BW calculation.
===================================================================
Fourth Level Node - Generic CAMNOC node properties
===================================================================
- cell-index
Usage: required
Value type: <u32>
Definition: Unique index of node to be used by CPAS driver.
- node-name
Usage: required
Value type: <string>
Definition: Unique name representing this node.
- path-data-type
Usage: required if a CAMNOC Level 0 Node
Value type: <u32>
Definition: Type of path data for a specific client.
Supported : CAM_CPAS_PATH_DATA_IFE_LINEAR, CAM_CPAS_PATH_DATA_ALL, etc.
Please refer dt-bindings/msm-camera.h for all supported
definitions.
- path-transaction-type
Usage: required if a CAMNOC Level 0 Node
Value type: <u32>
Definition: Type of path transaction for a specific client.
Supported : CAM_CPAS_TRANSACTION_READ, CAM_CPAS_TRANSACTION_WRITE
- client-name
Usage: required if a CAMNOC Level 0 Node
Value type: <string>
Definition: Name of the client with above properties.
Supported : From "client-names" property in CPAS node
- constituent-paths
Usage: optional, applicable only to CAMNOC Level 0 Nodes
Value type: <u32>
Definition: List of constituents of path data type of current node.
Supported : CAM_CPAS_PATH_DATA_IFE_VID, CAM_CPAS_PATH_DATA_IFE_DISP, etc.
Please refer dt-bindings/msm-camera.h for all supported
definitions.
- drv-voting-index
Usage: optional, applicable only to CAMNOC Level 0 Nodes
Value type: <u32>
Definition: Voting index pointing to Bus Ids for Camera DRV (HLOS DRV by default).
Supported : CAM_CPAS_PORT_DRV_0, CAM_CPAS_PORT_DRV_1, etc.
Please refer dt-bindings/msm-camera.h for all supported
definitions.
- traffic-merge-type
Usage: required if NOT a CAMNOC Level 0 Node
Value type: <u32>
Definition: Type of traffic merge for that node.
Supported : CAM_CPAS_TRAFFIC_MERGE_SUM, CAM_CPAS_TRAFFIC_MERGE_SUM_INTERLEAVE.
- parent-node
Usage: required for all except CAMNOC Level 3 Nodes
Value type: <phandle>
Definition: Parent node of this node. Parent node must be at least
one level above the current level.
- rt-wr-niu
Usage: optional
Value type: <empty>
Definition: Bool property representing whether this node represents a
Real Time Write NIU node.
- niu-size
Usage: optional
Value type: <u32>
Definition: Size of NIU represented by this node.
- priority-lut-low-offset
Usage: optional
Value type: <u32>
Definition: Priority lut low register offset of NIU represented by this node.
- priority-lut-high-offset
Usage: optional
Value type: <u32>
Definition: Priority lut high register offset of NIU represented by this node.
- bus-width-factor
Usage: optional
Value type: <u32>
Definition: For bus width factor consideration in CAMNOC BW calculation
- qcom,axi-port-name
Usage: required at CAMNOC Level 3
Value type: <string>
Definition: Name of the AXI Port.
- ib-bw-voting-needed
Usage: optional
Value type: <empty>
Definition: Bool property indicating axi port requires instantaneous bandwidth
- rt-axi-port
Usage: optional
Value type: <empty>
Definition: Bool property indicating whether this axi port represents
a real time port.
===================================================================
Fifth Level Node - CAM AXI Bus Properties
===================================================================
- qcom,msm-bus,name
- qcom,msm-bus,num-cases
- qcom,msm-bus,num-paths
- qcom,msm-bus,vectors-KBps
Please refer Documentation/devicetree/bindings/arm/msm/msm_bus.txt
for the properties above.
- qcom,msm-bus-vector-dyn-vote
Usage: optional
Value type: <empty>
Definition: Bool property specifying whether this bus client
is dynamic vote based.
Example:
qcom,cam-cpas@ac40000 {
cell-index = <0>;
compatible = "qcom,cam-cpas";
label = "cpas";
arch-compat = "cpas_top";
status = "ok";
reg-names = "cam_cpas_top", "cam_camnoc";
reg = <0xac40000 0x1000>,
<0xac42000 0x5000>;
reg-cam-base = <0x40000 0x42000>;
cam_hw_fuse = <CAM_CPAS_QCFA_BINNING_ENABLE 0x00780210 29>,
<CAM_CPAS_SECURE_CAMERA_ENABLE 0x00780210 18>;
interrupt-names = "cpas_camnoc";
interrupts = <0 459 0>;
qcom,cpas-hw-ver = <0x170100>; /* Titan v170 v1.0.0 */
regulator-names = "camss-vdd";
camss-vdd-supply = <&titan_top_gdsc>;
clock-names = "gcc_ahb_clk",
"gcc_axi_clk",
"soc_ahb_clk",
"cpas_ahb_clk",
"slow_ahb_clk_src",
"camnoc_axi_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_SLOW_AHB_CLK_SRC>,
<&clock_camcc CAM_CC_CAMNOC_AXI_CLK>;
src-clock-name = "slow_ahb_clk_src";
domain-id-support-clks = "ife_lite_csid_clk",
"ife_lite_ahb", "csid_clk_src", "csid_clk";
/* domain-id-support-clks property dependent on below clock option properties */
clock-names-option = "cam_icp_clk",
"ife_lite_csid_clk",
"ife_lite_ahb", "csid_clk_src", "csid_clk";
clocks-option = <&camcc CAM_CC_ICP_CLK>,
<&camcc CAM_CC_IFE_LITE_CSID_CLK>,
<&camcc CAM_CC_IFE_LITE_AHB_CLK>,
<&camcc CAM_CC_CSID_CLK_SRC>,
<&camcc CAM_CC_CSID_CLK>;
clock-rates-option = <400000000>,
<0>, <0>, <0>, <0>;
shared-clks-option = <0 0 0 1 0>;
domain-id = <CAM_CPAS_SECURE_DOMAIN 16>,
<CAM_CPAS_NON_SECURE_DOMAIN 0>;
clock-rates = <0 0 0 0 80000000 0>;
clock-cntl-level = "turbo";
qcom,cam-cx-ipeak = <&cx_ipeak_lm 8>;
control-camnoc-axi-clk;
cam-crmb-clk;
camnoc-bus-width = <32>;
camnoc-axi-clk-bw-margin-perc = <10>;
qcom,msm-bus,name = "cam_ahb";
qcom,msm-bus,num-cases = <4>;
qcom,msm-bus,num-paths = <1>;
qcom,msm-bus,vectors-KBps =
<MSM_BUS_MASTER_AMPSS_M0
MSM_BUS_SLAVE_CAMERA_CFG 0 0>,
<MSM_BUS_MASTER_AMPSS_M0
MSM_BUS_SLAVE_CAMERA_CFG 0 300000>,
<MSM_BUS_MASTER_AMPSS_M0
MSM_BUS_SLAVE_CAMERA_CFG 0 640000>,
<MSM_BUS_MASTER_AMPSS_M0
MSM_BUS_SLAVE_CAMERA_CFG 0 640000>;
client-id-based;
client-names =
"csiphy0", "csiphy1", "csiphy2", "csiphy3",
"csiphy4", "csiphy5", "cci0", "cci1",
"csid0", "csid1", "csid2", "csid3",
"csid4", "csid5", "csid6",
"ife0", "ife1", "ife2", "ife3", "custom0",
"ipe0", "cam-cdm-intf0", "cpas-cdm0", "cpas-cdm1",
"cpas-cdm2",
"bps0", "icp0", "jpeg-dma0", "jpeg-enc0",
"fd0";
sys-cache-names = "small-1", "large-1", "large-2", "large-3", "large-4";
sys-cache-uids = <34 38 50 51 52>;
enable-smart-qos;
rt-wr-priority-min = <3>;
rt-wr-priority-max = <6>;
rt-wr-priority-clamp = <6>;
rt-wr-slope-factor = <100>;
rt-wr-leaststressed-clamp-threshold = <7>;
rt-wr-moststressed-clamp-threshold = <7>;
rt-wr-highstress-indicator-threshold = <100>;
rt-wr-lowstress-indicator-threshold = <0>;
rt-wr-bw-ratio-scale-factor = <1>;
enable-cam-drv;
vmrm-resource-ids = <10 10 10>;
cam-version = <0x80800>;
cpas-version = <0x10000000>;
camera-capability = <0x9fffedeb 0x8>;
camera-bus-nodes {
level3-nodes {
level-index = <3>;
level3_rt0_rd_wr_sum: level3-rt0-rd-wr-sum {
cell-index = <0>;
node-name = "level3-rt0-rd-wr-sum";
traffic-merge-type =
<CAM_CPAS_TRAFFIC_MERGE_SUM>;
qcom,axi-port-name = "cam_hf_0";
ib-bw-voting-needed;
rt-axi-port;
qcom,axi-port-mnoc {
qcom,msm-bus,name =
"cam_hf_0_mnoc";
qcom,msm-bus-vector-dyn-vote;
qcom,msm-bus,num-cases = <2>;
qcom,msm-bus,num-paths = <1>;
qcom,msm-bus,vectors-KBps =
<MSM_BUS_MASTER_CAMNOC_HF
MSM_BUS_SLAVE_EBI_CH0 0 0>,
<MSM_BUS_MASTER_CAMNOC_HF
MSM_BUS_SLAVE_EBI_CH0 0 0>;
};
};
};
level2-nodes {
level-index = <2>;
camnoc-max-needed;
level2_rt0_wr: level2-rt0-wr {
cell-index = <3>;
node-name = "level2-rt0-wr";
parent-node = <&level3_rt0_rd_wr_sum>;
traffic-merge-type =
<CAM_CPAS_TRAFFIC_MERGE_SUM_INTERLEAVE>;
};
};
level1-nodes {
level-index = <1>;
camnoc-max-needed;
level1_rt0_wr0: level1-rt0-wr0 {
cell-index = <8>;
node-name = "level1-rt0-wr0";
parent-node = <&level2_rt0_wr>;
traffic-merge-type =
<CAM_CPAS_TRAFFIC_MERGE_SUM>;
rt-wr-niu;
niu-size = <175>;
priority-lut-low-offset = <0x5830>;
priority-lut-high-offset = <0x5834>;
};
};
level0-nodes {
level-index = <0>;
ife0_ubwc_stats_wr: ife0-ubwc-stats-wr {
cell-index = <16>;
node-name = "ife0-ubwc-stats-wr";
client-name = "ife0";
traffic-data =
<CAM_CPAS_PATH_DATA_IFE_UBWC_STATS>;
traffic-transaction-type =
<CAM_CPAS_TRANSACTION_WRITE>;
constituent-paths =
<CAM_CPAS_PATH_DATA_IFE_VID
CAM_CPAS_PATH_DATA_IFE_DISP
CAM_CPAS_PATH_DATA_IFE_STATS>;
drv-voting-index =
<CAM_CPAS_PORT_DRV_0>;
parent-node = <&level1_rt0_wr0>;
};
};
};
};

View File

@@ -0,0 +1,163 @@
* Qualcomm Technologies, Inc. MSM Camera CRE
The cre device node has properties defined to hint the driver
about the number of CRE nodes available during the
probe sequence. Each node has multiple properties defined
for interrupts, clocks and regulators.
=======================
Required Node Structure
=======================
CRE root interface node takes care of the handling account for number
of CRE devices present on the hardware.
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,cam-cre".
- compat-hw-name
Usage: required
Value type: <string>
Definition: Should be "qcom,cre".
- num-cre
Usage: required
Value type: <u32>
Definition: Number of supported CRE HW blocks.
Example:
qcom,cam-cre {
compatible = "qcom,cam-cre";
compat-hw-name = "qcom,cre";
num-cre = <2>;
status = "ok";
};
=======================
Required Node Structure
=======================
CRE Node provides interface for Image Control Processor driver
about the CRE register map, interrupt map, clocks, regulators.
- cell-index
Usage: required
Value type: <u32>
Definition: Node instance number.
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,cre".
- reg-names
Usage: optional
Value type: <string>
Definition: Name of the register resources.
- reg
Usage: optional
Value type: <u32>
Definition: Register values.
- reg-cam-base
Usage: optional
Value type: <u32>
Definition: Register values.
- interrupt-names
Usage: optional
Value type: <string>
Definition: Name of the interrupt.
- interrupts
Usage: optional
Value type: <u32>
Definition: Interrupt associated with CRE HW.
- regulator-names
Usage: required
Value type: <string>
Definition: Name of the regulator resources for CRE HW.
- camss-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 CDM HW.
- src-clock-name
Usage: required
Value type: <string>
Definition: Source clock name.
- clock-control-debugfs
Usage: optional
Value type: <string>
Definition: Enable/Disable clk rate control.
- clocks
Usage: required
Value type: <phandle>
Definition: List of clocks used for CDM HW.
- clock-cntl-level
Usage: required
Value type: <string>
Definition: List of strings corresponds clock-rates levels.
Supported strings: lowsvs, svs, svs_l1, nominal, turbo.
- clock-rates
Usage: required
Value type: <u32>
Definition: List of clocks rates.
Examples:
qcom,cam-cre {
compatible = "qcom,cam-cre";
compat-hw-name = "qcom,cre";
num-cre = <1>;
status = "ok";
};
cre: qcom,cre@ac00000 {
cell-index = <0>;
compatible = "qcom,cre";
reg =
<0xFA000 0x400>,
<0xFA400 0xB0>,
<0xFAB00 0x300>;
reg-names =
"cre_top",
"cre_bus_rd",
"cre_bus_wr";
reg-cam-base = <0xFA000 0xFA400 0xFAB00>;
interrupts = <GIC_SPI 463 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "cre";
regulator-names = "camss-vdd";
camss-vdd-supply = <&gcc_camss_top_gdsc>;
clock-names =
"cre_ahb_clk",
"cre_clk_src",
"cre_clk";
clocks =
<&gcc GCC_CAMSS_CRE_AHB_CLK>,
<&gcc GCC_CAMSS_CRE_CLK_SRC>,
<&gcc GCC_CAMSS_CRE_CLK>;
clock-rates =
<80000000 30000000 30000000>,
<80000000 41000000 41000000>,
<80000000 46000000 46000000>,
<80000000 60000000 60000000>,
<80000000 70000000 70000000>;
clock-cntl-level = "lowsvs", "maxsvs", "svs", "nom", "turbo";
src-clock-name = "cre_clk_src";
status = "ok";
};

View File

@@ -0,0 +1,182 @@
* Qualcomm Technologies, Inc. MSM CSI Phy
=======================
Required Node Structure
=======================
The camera CSIPHY node must be described in First level of device nodes. The
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
Value type: <string>
Definition: Should be "qcom,csiphy-v1.0",
"qcom,csiphy-v1.1", "qcom,csiphy-v1.2", "qcom,csiphy-v1.2.1",
"qcom,csiphy-v1.2.2", "qcom,csiphy-v2.0", "qcom,csiphy-v1.2.2.2",
"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".
- reg
Usage: required
Value type: <u32>
Definition: offset and length of the register set
for the device for the csiphy operating in
compatible mode.
- reg-names
Usage: required
Value type: <string>
Definition: Should specify relevant names to each
reg property defined.
- reg-cam-base
Usage: required
Value type: <string>
Definition: offset of CSIPHY in camera hw block
- interrupts
Usage: required
Value type: <u32>
Definition: Interrupt associated with CCI HW.
- interrupt-names
Usage: required
Value type: <string>
Definition: Name of the interrupt.
- regulator-names
Usage: required
Value type: <string>
Definition: name of the voltage regulators required for the device.
- gdscr-supply
Usage: required
Value type: <phandle>
Definition: should contain gdsr regulator used for CSIPHY clocks.
- mipi-csi-vdd-supply
Usage: required
Value type: <phandle>
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.
- 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.
- rgltr-enable-sync
Usage: required
Value type: <u8>
Definition: Decides whether regulator enable should be done in sync
for all the csiphys together or not.
- 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.
- shared-clks
Usage: optional
Value type: <u32>
Definition: List of 0 or 1 values indicating whether shared clk or not.
- vmrm-resource-ids
Usage: optional
Value type: <u32>
Definition: should specify vmrm resource id list order is mem label,
mem tag, irq1 label, irq2 label.
Example:
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;
rgltr-enable-sync = <1>;
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>;
shared-clks = <1 0 0 0>;
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>;
vmrm-resource-ids = <1 1 1>;
status = "ok";
};

View File

@@ -0,0 +1,28 @@
* Qualcomm Technologies, Inc. MSM Camera Custom HW
Camera Custom device provides the definitions for enabling
the custom hardware. It also provides the functions for the client
to control the Custom hardware.
=======================
Required Node Structure
=======================
The Custom device is described in one level of the device node.
======================================
First Level Node - CAM Custom device
======================================
Required properties:
- compatible
Usage: required
Value type: <string>
Definition: Should specify the compatibility string for matching the
driver. e.g. "qcom,cam_custom_hw_sub_mod".
Example:
qcom,cam-custom-hw {
compatible = "qcom,cam_custom_hw_sub_mod";
arch-compat = "custom";
status = "ok";
};

View File

@@ -0,0 +1,31 @@
* Qualcomm Technologies, Inc. MSM Camera Custom
The MSM camera Custom driver provides the definitions for enabling
the Camera custom hadware. It provides the functions for the Client to
control the custom hardware.
=======================
Required Node Structure
=======================
The camera Custom device is described in one level of device node.
==================================
First Level Node - CAM CUSTOM device
==================================
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,cam-custom".
- arch-compat
Usage: required
Value type: <string>
Definition: Should be "custom".
Example:
qcom,cam-custom {
compatible = "qcom,cam-custom";
arch-compat = "custom";
status = "ok";
};

View File

@@ -0,0 +1,510 @@
* Qualcomm Technologies, Inc. MSM EEPROM
EEPROM is a one time programmed(OTP) device that stores the calibration data
use for camera sensor. It may either be integrated in the sensor module or in
the sensor itself. As a result, the power, clock and GPIOs may be the same as
the camera sensor. The following describes the page block map, power supply,
clock, GPIO and power on sequence properties of the EEPROM device.
=======================================================
Required Node Structure if probe happens from userspace
=======================================================
The EEPROM device is described in one level of the device node.
======================================
First Level Node - CAM EEPROM device
======================================
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,eeprom".
- cell-index
Usage: required
Value type: <u32>
Definition: Should specify the hardware index id.
- reg
Usage: required
Value type: <u32>
Definition: Register values.
- regulator-names
Usage: required
Value type: <string>
Definition: Name of the regulator resources for EEPROM HW.
- xxxx-supply
Usage: required
Value type: <phandle>
Definition: Regulator reference corresponding to the names listed in
"regulator-names".
- rgltr-cntrl-support
Usage: required
Value type: <bool>
Definition: This property specifies if the regulator control is supported
e.g. rgltr-min-voltage.
- rgltr-min-voltage
Usage: required
Value type: <u32>
Definition: should contain minimum voltage level for regulators
mentioned in regulator-names property.
- rgltr-max-voltage
Usage: required
Value type: <u32>
Definition: should contain maximum voltage level for regulators
mentioned in regulator-names property.
- rgltr-load-current
Usage: required
Value type: <u32>
Definition: should contain the maximum current in microamps required for
the regulators mentioned in regulator-names property.
- gpio-no-mux
Usage: required
Value type: <u32>
Definition: should specify the gpio mux type.
- gpios
Usage: required
Value type: <phandle>
Definition: should specify the gpios to be used for the eeprom.
- gpio-reset
Usage: required
Value type: <u32>
Definition: should specify the reset gpio index.
- gpio-standby
Usage: required
Value type: <u32>
Definition: should specify the standby gpio index.
- gpio-req-tbl-num
Usage: required
Value type: <u32>
Definition: should specify the gpio table index.
- gpio-req-tbl-flags
Usage: required
Value type: <u32>
Definition: should specify the gpio functions.
- gpio-req-tbl-label
Usage: required
Value type: <string>
Definition: should specify the gpio labels.
- sensor-position
Usage: required
Value type: <u32>
Definition: should contain the mount angle of the camera sensor.
- cci-device
Usage: required
Value type: <u32>
Definition: should contain i2c device id to be used for this camera
sensor
- cci-master
Usage: required
Value type: <u32>
Definition: should contain i2c master id to be used for this camera
sensor.
- sensor-mode
Usage: required
Value type: <u32>
Definition: should contain sensor mode supported.
- clock-names
Usage: required
Value type: <string>
Definition: List of clock names required for EEPROM HW.
- clocks
Usage: required
Value type: <phandle>
Definition: List of clocks used for EEPROM HW.
- clock-cntl-level
Usage: required
Value type: <string>
Definition: says what all different clock levels eeprom node has.
- clock-rates
Usage: required
Value type: <u32>
Definition: List of clocks rates.
- vmrm-resource-ids
Usage: optional
Value type: <u32>
Definition: should specify vmrm resource id list order is mem label,
mem tag, irq1 label, irq2 label.
Example:
eeprom0: qcom,eeprom@0 {
cell-index = <0>;
reg = <0x0>;
compatible = "qcom,eeprom";
cam_vdig-supply = <&pm8998_l5>;
cam_vio-supply = <&pm8998_lvs1>;
regulator-names = "cam_vdig", "cam_vio";
rgltr-cntrl-support;
rgltr-min-voltage = <1200000 0>;
rgltr-max-voltage = <1200000 0>;
rgltr-load-current = <0 80000 105000 0>;
gpio-no-mux = <0>;
gpios = <&msmgpio 26 0>,
<&msmgpio 37 0>,
<&msmgpio 36 0>;
gpio-reset = <1>;
gpio-standby = <2>;
gpio-req-tbl-num = <0 1 2>;
gpio-req-tbl-flags = <1 0 0>;
gpio-req-tbl-label = "CAMIF_MCLK",
"CAM_RESET1",
"CAM_STANDBY";
sensor-position = <0>;
sensor-mode = <0>;
cci-device = <0>;
cci-master = <0>;
status = "ok";
clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
clock-names = "cam_clk";
clock-cntl-level = "turbo";
clock-rates = <24000000>;
vmrm-resource-ids = <32 32>;
};
=======================================================
Required Node Structure if probe happens from kernel
=======================================================
The EEPROM device is described in one level of the device node.
======================================
First Level Node - CAM EEPROM device
======================================
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,eeprom".
- cell-index
Usage: required
Value type: <u32>
Definition: Should specify the hardware index id.
- reg
Usage: required
Value type: <u32>
Definition: Register values.
- qcom,eeprom-name
Usage: required
Value type: <string>
Definition: Name of the EEPROM HW.
- qcom,slave-addr
Usage: required
Value type: <u32>
Definition: Slave address of the EEPROM HW.
- qcom,num-blocks
Usage: required
Value type: <u32>
Definition: Total block number that eeprom contains.
- qcom,pageX
Usage: required
Value type: <u32>
Definition: List of values specifying page size, start address,
address type, data, data type, delay in ms.
size 0 stand for non-paged.
- qcom,pollX
Usage: required
Value type: <u32>
Definition: List of values specifying poll size, poll reg address,
address type, data, data type, delay in ms.
size 0 stand for not used.
- qcom,memX
Usage: required
Value type: <u32>
Definition: List of values specifying memory size, start address,
address type, data, data type, delay in ms.
size 0 stand for not used.
- qcom,saddrX
Usage: required
Value type: <u32>
Definition: property should specify the slave address for block (%d).
- regulator-names
Usage: required
Value type: <string>
Definition: Name of the regulator resources for EEPROM HW.
- qcom,cmm-data-support
Usage: required
Value type: <u32>
Definition: Camera MultiModule data capability flag..
- qcom,cmm-data-compressed
Usage: required
Value type: <u32>
Definition: Camera MultiModule data compression flag.
- qcom,cmm-data-offset
Usage: required
Value type: <u32>
Definition: Camera MultiModule data start offset.
- qcom,cmm-data-size
Usage: required
Value type: <u32>
Definition: Camera MultiModule data size.
- qcom,cam-power-seq-type
Usage: required
Value type: <string>
Definition: should specify the power on sequence types.
- qcom,cam-power-seq-val
Usage: required
Value type: <string>
Definition: should specify the power on sequence values.
- qcom,cam-power-seq-cfg-val
Usage: required
Value type: <u32>
Definition: should specify the power on sequence config values.
- qcom,cam-power-seq-delay
Usage: required
Value type: <u32>
Definition: should specify the power on sequence delay time in ms.
- spiop-read
Usage: required
Value type: <u32>
Definition: this array provides SPI read operation related data.
- spiop-readseq
Usage: required
Value type: <u32>
Definition: this array provides SPI read sequence operation realted data.
- spiop-queryid
Usage: required
Value type: <u32>
Definition: this array provides SPI query eeprom id operation related data.
- spiop-pprog:
Usage: required
Value type: <u32>
Definition: this array provides SPI page program operation related data.
- spiop-wenable
Usage: required
Value type: <u32>
Definition: this array provides SPI write enable operation related data.
- spiop-readst
Usage: required
Value type: <u32>
Definition: this array provides SPI read destination operation related data.
- spiop-erase
Usage: required
Value type: <u32>
Definition: this array provides SPI erase operation related data.
- eeprom-idx
Usage: required
Value type: <u32>
Definition: this array provides eeprom id realted data.
- xxxx-supply
Usage: required
Value type: <phandle>
Definition: Regulator reference corresponding to the names listed in
"regulator-names".
- rgltr-cntrl-support
Usage: required
Value type: <bool>
Definition: This property specifies if the regulator control is supported
e.g. rgltr-min-voltage.
- rgltr-min-voltage
Usage: required
Value type: <u32>
Definition: should contain minimum voltage level for regulators
mentioned in regulator-names property.
- rgltr-max-voltage
Usage: required
Value type: <u32>
Definition: should contain maximum voltage level for regulators
mentioned in regulator-names property.
- rgltr-load-current
Usage: required
Value type: <u32>
Definition: should contain the maximum current in microamps required for
the regulators mentioned in regulator-names property.
- gpio-no-mux
Usage: required
Value type: <u32>
Definition: should specify the gpio mux type.
- gpios
Usage: required
Value type: <phandle>
Definition: should specify the gpios to be used for the eeprom.
- gpio-reset
Usage: required
Value type: <u32>
Definition: should specify the reset gpio index.
- gpio-standby
Usage: required
Value type: <u32>
Definition: should specify the standby gpio index.
- gpio-req-tbl-num
Usage: required
Value type: <u32>
Definition: should specify the gpio table index.
- gpio-req-tbl-flags
Usage: required
Value type: <u32>
Definition: should specify the gpio functions.
- gpio-req-tbl-label
Usage: required
Value type: <string>
Definition: should specify the gpio labels.
- sensor-position
Usage: required
Value type: <u32>
Definition: should contain the mount angle of the camera sensor.
- cci-device
Usage: required
Value type: <u32>
Definition: should contain i2c device id to be used for this camera
sensor
- cci-master
Usage: required
Value type: <u32>
Definition: should contain i2c master id to be used for this camera
sensor.
- sensor-mode
Usage: required
Value type: <u32>
Definition: should contain sensor mode supported.
- clock-cntl-level
Usage: required
Value type: <string>
Definition: says what all different clock levels eeprom node has.
- clock-names
Usage: required
Value type: <string>
Definition: List of clock names required for EEPROM HW.
- clocks
Usage: required
Value type: <phandle>
Definition: List of clocks used for EEPROM HW.
- clock-rates
Usage: required
Value type: <u32>
Definition: List of clocks rates.
Example:
eeprom0: qcom,eeprom0 {
cell-index = <0>;
reg = <0x0>;
qcom,eeprom-name = "msm_eeprom";
eeprom-id0 = <0xF8 0x15>;
eeprom-id1 = <0xEF 0x15>;
eeprom-id2 = <0xC2 0x36>;
eeprom-id3 = <0xC8 0x15>;
compatible = "qcom,eeprom";
qcom,slave-addr = <0x60>;
qcom,num-blocks = <2>;
qcom,page0 = <1 0x100 2 0x01 1 1>;
qcom,poll0 = <0 0x0 2 0 1 1>;
qcom,mem0 = <0 0x0 2 0 1 0>;
qcom,page1 = <1 0x0200 2 0x8 1 1>;
qcom,pageen1 = <1 0x0202 2 0x01 1 10>;
qcom,poll1 = <0 0x0 2 0 1 1>;
qcom,mem1 = <32 0x3000 2 0 1 0>;
qcom,saddr1 = <0x62>;
qcom,cmm-data-support;
qcom,cmm-data-compressed;
qcom,cmm-data-offset = <0>;
qcom,cmm-data-size = <0>;
spiop-read = <0x03 3 0 0 0>;
spiop-readseq = <0x03 3 0 0 0>;
spiop-queryid = <0x90 3 0 0 0>;
spiop-pprog = <0x02 3 0 3 100>;
spiop-wenable = <0x06 0 0 0 0>;
spiop-readst = <0x05 0 0 0 0>;
spiop-erase = <0x20 3 0 10 100>;
qcom,cam-power-seq-type = "sensor_vreg",
"sensor_vreg", "sensor_clk",
"sensor_gpio", "sensor_gpio";
qcom,cam-power-seq-val = "cam_vdig",
"cam_vio", "sensor_cam_mclk",
"sensor_gpio_reset",
"sensor_gpio_standby";
qcom,cam-power-seq-cfg-val = <1 1 24000000 1 1>;
qcom,cam-power-seq-delay = <1 1 5 5 10>;
cam_vdig-supply = <&pm8998_l5>;
cam_vio-supply = <&pm8998_lvs1>;
regulator-names = "cam_vdig", "cam_vio";
rgltr-cntrl-support;
rgltr-min-voltage = <1200000 0>;
rgltr-max-voltage = <1200000 0>;
rgltr-load-current = <0 80000 105000 0>;
qcom,gpio-no-mux = <0>;
gpios = <&msmgpio 26 0>,
<&msmgpio 37 0>,
<&msmgpio 36 0>;
gpio-reset = <1>;
gpio-standby = <2>;
gpio-req-tbl-num = <0 1 2>;
gpio-req-tbl-flags = <1 0 0>;
gpio-req-tbl-label = "CAMIF_MCLK",
"CAM_RESET1",
"CAM_STANDBY";
sensor-position = <0>;
sensor-mode = <0>;
cci-device = <0>;
cci-master = <0>;
status = "ok";
clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
clock-cntl-level = "turbo";
clock-names = "cam_clk";
clock-rates = <24000000>;
};

View File

@@ -0,0 +1,154 @@
* Qualcomm Technologies, Inc. MSM Camera FD
The MSM camera Face Detection device provides dependency definitions
for enabling Camera FD HW. MSM camera FD is implemented in multiple
device nodes. The root FD device node has properties defined to hint
the driver about the FD HW nodes available during the probe sequence.
Each node has multiple properties defined for interrupts, clocks and
regulators.
=======================
Required Node Structure
=======================
FD root interface node takes care of the handling Face Detection high level
driver handling and controls underlying FD hardware present.
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,cam-fd".
- compat-hw-name
Usage: required
Value type: <string>
Definition: Should be "qcom,fd".
- num-fd
Usage: required
Value type: <u32>
Definition: Number of supported FD HW blocks.
Example:
qcom,cam-fd {
compatible = "qcom,cam-fd";
compat-hw-name = "qcom,fd";
num-fd = <1>;
};
=======================
Required Node Structure
=======================
FD Node provides interface for Face Detection hardware driver
about the device register map, interrupt map, clocks, regulators.
- cell-index
Usage: required
Value type: <u32>
Definition: Node instance number.
- compatible
Usage: required
Value type: <string>
Definition: Should be one of "qcom,fd41", "qcom,fd501",
"qcom,fd600".
- reg-names
Usage: optional
Value type: <string>
Definition: Name of the register resources.
- reg
Usage: optional
Value type: <u32>
Definition: Register values.
- reg-cam-base
Usage: optional
Value type: <u32>
Definition: Offset of the register space compared to
to Camera base register space.
- interrupt-names
Usage: optional
Value type: <string>
Definition: Name of the interrupt.
- interrupts
Usage: optional
Value type: <u32>
Definition: Interrupt line associated with FD HW.
- regulator-names
Usage: required
Value type: <string>
Definition: Name of the regulator resources for FD HW.
- camss-vdd-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 FD HW.
- clocks
Usage: required
Value type: <phandle>
Definition: List of clocks required for FD HW.
- clock-rates
Usage: required
Value type: <u32>
Definition: List of clocks rates.
- src-clock-name
Usage: required
Value type: <string>
Definition: Source clock name.
- clock-control-debugfs
Usage: optional
Value type: <string>
Definition: Enable/Disable clk rate control.
- 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.
Examples:
cam_fd: qcom,fd@ac5a000 {
cell-index = <0>;
compatible = "qcom,fd600";
reg-names = "fd_core", "fd_wrapper";
reg = <0xac5a000 0x1000>,
<0xac5b000 0x400>;
reg-cam-base = <0x5a000 0x5b000>;
interrupt-names = "fd";
interrupts = <0 462 0>;
regulator-names = "camss-vdd";
camss-vdd-supply = <&titan_top_gdsc>;
clock-names = "gcc_ahb_clk",
"gcc_axi_clk",
"soc_ahb_clk",
"cpas_ahb_clk",
"camnoc_axi_clk",
"fd_core_clk_src",
"fd_core_clk",
"fd_core_uar_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_FD_CORE_CLK_SRC>,
<&clock_camcc CAM_CC_FD_CORE_CLK>,
<&clock_camcc CAM_CC_FD_CORE_UAR_CLK>;
src-clock-name = "fd_core_clk_src";
clock-cntl-level = "svs";
clock-rates = <0 0 0 0 0 400000000 0 0>;
};

View File

@@ -0,0 +1,377 @@
* Qualcomm Technologies, Inc. MSM Camera ICP
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 ICP, IPE and BPS nodes available during the
probe sequence. Each node has multiple properties defined
for interrupts, clocks and regulators. icp_v1 and icp_v2 are names
corresponding to a5 and lx7 processors respectively.
=======================
Required Node Structure
=======================
ICP root interface node takes care of the handling account for number
of A5, LX7, IPE and BPS devices present on the hardware.
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,cam-icp".
- compat-hw-name
Usage: required
Value type: <string>
Definition: Should be "qcom,icp", "qcom,ipe0",
"qcom,ipe1" or "qcom,bps".
- num-icp
Usage: required
Value type: <u32>
Definition: Number of supported icp processors. ICP can either be a5 or lx7.
- num-ipe
Usage: required
Value type: <u32>
Definition: Number of supported IPE HW blocks.
- num-bps
Usage: required
Value type: <u32>
Definition: Number of supported BPS HW blocks.
Example:
qcom,cam-icp {
compatible = "qcom,cam-icp";
compat-hw-name = "qcom,icp", "qcom,ipe0",
"qcom,ipe0", "qcom,bps";
num-icp = <1>;
num-ipe = <2>;
num-bps = <1>;
status = "ok";
};
=======================
Required Node Structure
=======================
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
Usage: required
Value type: <u32>
Definition: Node instance number.
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,cam-a5", "qcom,cam-lx7",
"qcom,cam-ipe", "qcom,cam-ipe680", "qcom,cam-bps" or
"qcom,cam-bps680".
- icp-version
Usage: required
Value type: <u32>
Definition: <0x0100> or <0x0200>. 0x0100 is a version tag for icp_v1 (a5).
0x0200 is a version tag for icp_v2 (lx7). [15:8] indicates major version.
[7:0] indicates minor version.
- reg-names
Usage: optional
Value type: <string>
Definition: Name of the register resources.
- reg
Usage: optional
Value type: <u32>
Definition: Register values.
- reg-cam-base
Usage: optional
Value type: <u32>
Definition: Register values.
- interrupt-names
Usage: optional
Value type: <string>
Definition: Name of the interrupt.
- interrupts
Usage: optional
Value type: <u32>
Definition: Interrupt associated with ICP HW.
- regulator-names
Usage: required
Value type: <string>
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".
- clock-names
Usage: required
Value type: <string>
Definition: List of clock names required for ICP HW.
- src-clock-name
Usage: required
Value type: <string>
Definition: Source clock name.
- clock-control-debugfs
Usage: optional
Value type: <string>
Definition: Enable/Disable clk rate control.
- clocks
Usage: required
Value type: <phandle>
Definition: List of clocks used for ICP HW.
- clock-cntl-level
Usage: required
Value type: <string>
Definition: List of strings corresponds clock-rates levels.
Supported strings: lowsvs, svs, svs_l1, nominal, turbo.
- clock-rates
Usage: required
Value type: <u32>
Definition: List of clocks rates.
- fw_name
Usage: optional
Value type: <string>
Definition: Name of firmware image.
- ubwc-ipe-fetch-cfg
Usage: required
Value type: <u32>
Definition: UBWC IPE fetch configuration based on DDR device type.
- ubwc-ipe-write-cfg
Usage: required
Value type: <u32>
Definition: UBWC IPE write configuration based on DDR device type.
- ubwc-bps-fetch-cfg
Usage: required
Value type: <u32>
Definition: UBWC BPS fetch configuration based on DDR device type.
- ubwc-bps-write-cfg
Usage: required
Value type: <u32>
Definition: UBWC BPS write configuration based on DDR device type.
- ubwc-cfg
Usage: optional
Value type: <u32>
Definition: UBWC configuration, this is mandatory if above
ipe/bps ubwc properties are not used.
- nrt-device
Usage: optional
Value type: <empty>
Definition: Flag to indicate whether this is non real time device.
- vmrm-resource-ids
Usage: optional
Value type: <u32>
Definition: should specify vmrm resource id list order is mem label,
mem tag, irq1 label, irq2 label.
Examples:
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";
reg-cam-base = <0x00000 0x10000 0x18000>;
interrupts = <GIC_SPI 463 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "a5";
regulator-names = "camss-vdd";
camss-vdd-supply = <&cam_cc_titan_top_gdsc>;
clock-names =
"soc_fast_ahb",
"icp_ahb_clk",
"icp_clk_src",
"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 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";
nrt-device;
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_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";
nrt-device;
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>;
vmrm-resource-ids = <29 29 29>;
status = "ok";
};
cam_ipe0: qcom,ipe0@ac42000 {
cell-index = <0>;
compatible = "qcom,cam-ipe", "qcom,cam-ipe680";
reg = <0xac42000 0x18000>;
reg-names = "ipe0_top";
reg-cam-base = <0x42000>;
regulator-names = "ipe0-vdd";
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 =
<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";
nrt-device;
vmrm-resource-ids = <30 30 30>;
status = "ok";
};
qcom,ipe1 {
cell-index = <1>;
compatible = "qcom,cam-ipe";
regulator-names = "ipe1-vdd";
ipe1-vdd-supply = <&ipe_1_gdsc>;
clock-names = "ipe_1_ahb_clk",
"ipe_1_areg_clk",
"ipe_1_axi_clk",
"ipe_1_clk",
"ipe_1_clk_src";
src-clock-name = "ipe_1_clk_src";
clocks = <&clock_camcc CAM_CC_IPE_1_AHB_CLK>,
<&clock_camcc CAM_CC_IPE_1_AREG_CLK>,
<&clock_camcc CAM_CC_IPE_1_AXI_CLK>,
<&clock_camcc CAM_CC_IPE_1_CLK>,
<&clock_camcc CAM_CC_IPE_1_CLK_SRC>;
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";
vmrm-resource-ids = <31 31 31>;
nrt-device;
};
cam_bps: qcom,bps@ac2c000 {
cell-index = <0>;
compatible = "qcom,cam-bps", "qcom,cam-bps680";
reg = <0xac2c000 0xB000>;
reg-names = "bps_top";
reg-cam-base = <0x2c000>;
regulator-names = "bps-vdd";
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";
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 =
<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";
nrt-device;
vmrm-resource-ids = <32 32 32>;
status = "ok";
};

View File

@@ -0,0 +1,147 @@
* Qualcomm Technologies, Inc. MSM Camera IFE CSID
Camera IFE CSID device provides the definitions for enabling
the IFE CSID hardware. It also provides the functions for the client
to control the IFE CSID hardware.
=======================
Required Node Structure
=======================
The IFE CSID device is described in one level of the device node.
======================================
First Level Node - CAM IFE CSID device
======================================
- 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,csid570", "qcom,csid580",
"qcom,csid680", "qcom,csid680_110", "qcom,csid165_204", "qcom,csid-lite170",
"qcom,csid-lite175", "qcom,csid-lite480", "qcom,csid-custom480",
"qcom,csid-lite580", "qcom,csid-lite580", "qcom,csid-custom580",
"qcom,csid-lite680", "qcom,csid-lite680_110" or "qcom,csid-custom680",
"qcom,csid-lite165".
- reg-names
Usage: required
Value type: <string>
Definition: Should be "csid".
- reg
Usage: required
Value type: <u32>
Definition: Register values.
- reg-cam-base
Usage: required
Value type: <u32>
Definition: List of bases.
- rt-wrapper-base
Usage: required
Value type: u32
Definition: Titan offset of start of the RT Wrapper.
- interrupt-names
Usage: Required
Value type: <string>
Definition: Name of the interrupt.
- interrupts
Usage: Required
Value type: <u32>
Definition: Interrupt associated with IFE CSID HW.
- regulator-names
Usage: required
Value type: <string>
Definition: Name of the regulator resources for IFE CSID 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 IFE CSID HW.
- clocks
Usage: required
Value type: <phandle>
Definition: List of clocks used for IFE CSID 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.
- clock-control-debugfs
Usage: optional
Value type: <string>
Definition: Enable/Disable clk rate control.
- shared-clks
Usage: optional
Value type: <u32>
Definition: List of 0 or 1 values indicating whether shared clk or not.
Example:
cam_csid0: qcom,csid0@acb7000 {
cell-index = <0>;
compatible = "qcom,csid680";
reg-names = "csid", "csid_top";
reg = <0xacb7000 0xd00>,
<0xacb6000 0x1000>;
reg-cam-base = <0xb7000 0xb6000>;
rt-wrapper-base = <0x62000>;
interrupt-names = "csid";
interrupts = <GIC_SPI 464 IRQ_TYPE_EDGE_RISING>;
regulator-names = "camss";
camss-supply = <&cam_cc_titan_top_gdsc>;
shared-clks = <1 0 0 0 0 0>;
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";
};

View File

@@ -0,0 +1,36 @@
* Qualcomm Technologies, Inc. MSM Camera ISP
The MSM camera ISP driver provides the definitions for enabling
the Camera ISP hadware. It provides the functions for the Client to
control the ISP hardware.
=======================
Required Node Structure
=======================
The camera ISP device is described in one level of device node.
==================================
First Level Node - CAM ISP device
==================================
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,cam-isp".
- arch-compat
Usage: required
Value type: <string>
Definition: Should be "vfe", "ife" or "tfe".
- ubwc-static-cfg
Usage: optional
Value type: <u32>
Definition: IFE UBWC static configuration based on DDR device type.
Example:
qcom,cam-isp {
compatible = "qcom,cam-isp";
arch-compat = "ife";
status = "ok";
};

View File

@@ -0,0 +1,202 @@
* Qualcomm Technologies, Inc. MSM Camera JPEG
The MSM camera JPEG devices are implemented multiple device nodes.
The root JPEG device node has properties defined to hint the driver
about the number of Encoder and DMA nodes available during the
probe sequence. Each node has multiple properties defined
for interrupts, clocks and regulators.
=======================
Required Node Structure
=======================
JPEG root interface node takes care of the handling account for number
of Encoder and DMA devices present on the hardware.
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,cam-jpeg".
- compat-hw-name
Usage: required
Value type: <string>
Definition: Should be "qcom,jpegenc" or "qcom,jpegdma".
- num-jpeg-enc
Usage: required
Value type: <u32>
Definition: Number of supported Encoder HW blocks.
- num-jpeg-dma
Usage: required
Value type: <u32>
Definition: Number of supported DMA HW blocks.
Example:
qcom,cam-jpeg {
compatible = "qcom,cam-jpeg";
compat-hw-name = "qcom,jpegenc",
"qcom,jpegdma";
num-jpeg-enc = <1>;
num-jpeg-dma = <1>;
status = "ok";
};
=======================
Required Node Structure
=======================
Encoder/DMA Nodes provide interface for JPEG driver about
the device register map, interrupt map, clocks and regulators.
Compatible string definition should be based on target.
- cell-index
Usage: required
Value type: <u32>
Definition: Node instance number.
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,cam_jpeg_enc".
Definition: Should be "qcom,cam_jpeg_enc_165".
Definition: Should be "qcom,cam_jpeg_enc_580".
Definition: Should be "qcom,cam_jpeg_enc_680".
Definition: Should be "qcom,cam_jpeg_dma".
Definition: Should be "qcom,cam_jpeg_dma_165".
Definition: Should be "qcom,cam_jpeg_dma_580".
Definition: Should be "qcom,cam_jpeg_dma_680".
- reg-names
Usage: optional
Value type: <string>
Definition: Name of the register resources.
- reg
Usage: optional
Value type: <u32>
Definition: Register values.
- reg-cam-base
Usage: optional
Value type: <u32>
Definition: Offset of the register space compared to
to Camera base register space.
- interrupt-names
Usage: optional
Value type: <string>
Definition: Name of the interrupt.
- interrupts
Usage: optional
Value type: <u32>
Definition: Interrupt associated with JPEG HW.
- regulator-names
Usage: required
Value type: <string>
Definition: Name of the regulator resources for JPEG HW.
- camss-vdd-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 JPEG HW.
- clocks
Usage: required
Value type: <phandle>
Definition: List of clocks used for JPEG HW.
- clock-rates
Usage: required
Value type: <u32>
Definition: List of clocks rates.
- src-clock-name
Usage: required
Value type: <string>
Definition: Source clock name.
- 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.
- shared-clks
Usage: optional
Value type: <u32>
Definition: List of 0 or 1 values indicating whether shared clk or not.
- nrt-device
Usage: optional
Value type: <empty>
Definition: Flag to indicate whether this is non real time device.
- cam_hw_pid:
Usage: optional
Value type: <u32>
Definition: HW unique Pid values
- cam_hw_rd_mid:
Usage: optional
Value type: <u32>
Definition: HW port read mid value
- cam_hw_wr_mid:
Usage: optional
Value type: <u32>
Definition: HW port write mid value
Examples:
cam_jpeg_enc: qcom,jpegenc@ac4e000 {
cell-index = <0>;
compatible = "qcom,cam_jpeg_enc";
reg-names = "jpege_hw";
reg = <0xac4e000 0x4000>;
reg-cam-base = <0x4e000>;
interrupt-names = "jpeg";
interrupts = <0 474 0>;
regulator-names = "camss-vdd";
camss-vdd-supply = <&titan_top_gdsc>;
shared-clks = <1 0>;
clock-names = "jpegenc_clk_src",
"jpegenc_clk";
clocks = <&clock_camcc CAM_CC_JPEG_CLK_SRC>,
<&clock_camcc CAM_CC_JPEG_CLK>;
clock-rates = <600000000 0>;
src-clock-name = "jpegenc_clk_src";
clock-cntl-level = "nominal";
nrt-device;
status = "ok";
};
cam_jpeg_dma: qcom,jpegdma@0xac52000{
cell-index = <0>;
compatible = "qcom,cam_jpeg_dma";
reg-names = "jpegdma_hw";
reg = <0xac52000 0x4000>;
reg-cam-base = <0x52000>;
interrupt-names = "jpegdma";
interrupts = <0 475 0>;
regulator-names = "camss-vdd";
camss-vdd-supply = <&titan_top_gdsc>;
shared-clks = <1 0>;
clock-names = "jpegdma_clk_src",
"jpegdma_clk";
clocks = <&clock_camcc CAM_CC_JPEG_CLK_SRC>,
<&clock_camcc CAM_CC_JPEG_CLK>;
clock-rates = <600000000 0>;
src-clock-name = "jpegdma_clk_src";
clock-cntl-level = "nominal";
nrt-device;
status = "ok";
};

View File

@@ -0,0 +1,148 @@
* Qualcomm Technologies, Inc. MSM Camera LRME
The MSM camera Low Resolution Motion Estimation device provides dependency
definitions for enabling Camera LRME HW. MSM camera LRME is implemented in
multiple device nodes. The root LRME device node has properties defined to
hint the driver about the LRME HW nodes available during the probe sequence.
Each node has multiple properties defined for interrupts, clocks and
regulators.
=======================
Required Node Structure
=======================
LRME root interface node takes care of the handling LRME high level
driver handling and controls underlying LRME hardware present.
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,cam-lrme"
- compat-hw-name
Usage: required
Value type: <string>
Definition: Should be "qcom,lrme"
- num-lrme
Usage: required
Value type: <u32>
Definition: Number of supported LRME HW blocks
Example:
qcom,cam-lrme {
compatible = "qcom,cam-lrme";
compat-hw-name = "qcom,lrme";
num-lrme = <1>;
};
=======================
Required Node Structure
=======================
LRME Node provides interface for Low Resolution Motion Estimation hardware
driver about the device register map, interrupt map, clocks, regulators.
- cell-index
Usage: required
Value type: <u32>
Definition: Node instance number
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,lrme"
- reg-names
Usage: optional
Value type: <string>
Definition: Name of the register resources
- reg
Usage: optional
Value type: <u32>
Definition: Register values
- reg-cam-base
Usage: optional
Value type: <u32>
Definition: Offset of the register space compared to
to Camera base register space
- interrupt-names
Usage: optional
Value type: <string>
Definition: Name of the interrupt
- interrupts
Usage: optional
Value type: <u32>
Definition: Interrupt line associated with LRME HW
- regulator-names
Usage: required
Value type: <string>
Definition: Name of the regulator resources for LRME HW
- camss-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 LRME HW
- clocks
Usage: required
Value type: <phandle>
Definition: List of clocks required for LRME HW
- clock-rates
Usage: required
Value type: <u32>
Definition: List of clocks rates
- 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
- src-clock-name
Usage: required
Value type: <string>
Definition: Source clock name
Examples:
cam_lrme: qcom,lrme@ac6b000 {
cell-index = <0>;
compatible = "qcom,lrme";
reg-names = "lrme";
reg = <0xac6b000 0xa00>;
reg-cam-base = <0x6b000>;
interrupt-names = "lrme";
interrupts = <0 476 0>;
regulator-names = "camss";
camss-supply = <&titan_top_gdsc>;
clock-names = "camera_ahb",
"camera_axi",
"soc_ahb_clk",
"cpas_ahb_clk",
"camnoc_axi_clk",
"lrme_clk_src",
"lrme_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_LRME_CLK_SRC>,
<&clock_camcc CAM_CC_LRME_CLK>;
clock-rates = <0 0 0 0 0 0 0>,
<0 0 0 0 0 19200000 19200000>,
<0 0 0 0 0 19200000 19200000>,
<0 0 0 0 0 19200000 19200000>;
clock-cntl-level = "lowsvs", "svs", "svs_l1", "turbo";
src-clock-name = "lrme_core_clk_src";
};

View File

@@ -0,0 +1,168 @@
* Qualcomm Technologies, Inc. MSM Camera OPE
The ope device node has properties defined to hint the driver
about the number of OPE nodes available during the
probe sequence. Each node has multiple properties defined
for interrupts, clocks and regulators.
=======================
Required Node Structure
=======================
OPE root interface node takes care of the handling account for number
of OPE devices present on the hardware.
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,cam-ope".
- compat-hw-name
Usage: required
Value type: <string>
Definition: Should be "qcom,ope".
- num-ope
Usage: required
Value type: <u32>
Definition: Number of supported OPE HW blocks.
Example:
qcom,cam-ope {
compatible = "qcom,cam-ope";
compat-hw-name = "qcom,ope";
num-ope = <2>;
status = "ok";
};
=======================
Required Node Structure
=======================
OPE Node provides interface for Image Control Processor driver
about the OPE register map, interrupt map, clocks, regulators.
- cell-index
Usage: required
Value type: <u32>
Definition: Node instance number.
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,ope".
- reg-names
Usage: optional
Value type: <string>
Definition: Name of the register resources.
- reg
Usage: optional
Value type: <u32>
Definition: Register values.
- reg-cam-base
Usage: optional
Value type: <u32>
Definition: Register values.
- interrupt-names
Usage: optional
Value type: <string>
Definition: Name of the interrupt.
- interrupts
Usage: optional
Value type: <u32>
Definition: Interrupt associated with OPE HW.
- regulator-names
Usage: required
Value type: <string>
Definition: Name of the regulator resources for OPE HW.
- camss-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 CDM HW.
- src-clock-name
Usage: required
Value type: <string>
Definition: Source clock name.
- clock-control-debugfs
Usage: optional
Value type: <string>
Definition: Enable/Disable clk rate control.
- clocks
Usage: required
Value type: <phandle>
Definition: List of clocks used for CDM HW.
- clock-cntl-level
Usage: required
Value type: <string>
Definition: List of strings corresponds clock-rates levels.
Supported strings: lowsvs, svs, svs_l1, nominal, turbo.
- clock-rates
Usage: required
Value type: <u32>
Definition: List of clocks rates.
Examples:
qcom,cam-ope {
compatible = "qcom,cam-ope";
compat-hw-name = "qcom,ope";
num-ope = <1>;
status = "ok";
};
ope: qcom,ope@ac00000 {
cell-index = <0>;
compatible = "qcom,ope";
reg =
<0x42000 0x400>,
<0x42400 0x200>,
<0x42600 0x200>,
<0x42800 0x4400>,
<0x46c00 0x190>,
<0x46d90 0x1270>;
reg-names =
"ope_cdm",
"ope_top",
"ope_qos",
"ope_pp",
"ope_bus_rd",
"ope_bus_wr";
reg-cam-base = <0x42000 0x42400 0x42600 0x42800 0x46c00 0x46d90>;
interrupts = <GIC_SPI 463 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "ope";
regulator-names = "camss-vdd";
camss-vdd-supply = <&gcc_camss_top_gdsc>;
clock-names =
"ope_ahb_clk_src",
"ope_ahb_clk",
"ope_clk_src",
"ope_clk";
clocks =
<&gcc GCC_CAMSS_OPE_AHB_CLK_SRC>,
<&gcc GCC_CAMSS_OPE_AHB_CLK>,
<&gcc GCC_CAMSS_OPE_CLK_SRC>,
<&gcc GCC_CAMSS_OPE_CLK>;
clock-rates =
<200000000 0 480000000 0>,
<400000000 0 600000000 0>;
clock-cntl-level = "svs", "turbo";
src-clock-name = "ope_clk_src";
status = "ok";
};

View File

@@ -0,0 +1,95 @@
* Qualcomm Technologies, Inc. MSM camera PPI
=======================
Required Node Structure
=======================
The camera PPI node must be described in First level of device nodes. The
first level describe the overall PPI node structure.
======================================
First Level Node - PPI device
======================================
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,ppi100".
- cell-index: ppi hardware core index
Usage: required
Value type: <u32>
Definition: Should specify the Hardware index id.
- reg
Usage: required
Value type: <u32>
Definition: offset and length of the register set
for the device for the ppi operating in
compatible mode.
- reg-names
Usage: required
Value type: <string>
Definition: Should specify relevant names to each
reg property defined.
- reg-cam-base
Usage: required
Value type: <string>
Definition: offset of PPI in camera hw block
- interrupts
Usage: required
Value type: <u32>
Definition: Interrupt associated with PPI HW.
- interrupt-names
Usage: required
Value type: <string>
Definition: Name of the interrupt.
- clock-names
Usage: required
Value type: <string>
Definition: List of clock names required for PPI HW.
- clock-rates
Usage: required
Value type: <u32>
Definition: List of clock rates in Hz for PPI 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>
Definition: name of the voltage regulators required for the device.
- gdscr-supply
Usage: required
Value type: <phandle>
Definition: should contain gdsr regulator used for PPI clocks.
Example:
qcom,ppi0@5cb3000 {
cell-index = <0>;
compatible = "qcom,ppi100";
reg-names = "ppi0";
reg = <0x5cb3000 0x200>;
reg-cam-base = <0xb3000>;
interrupt-names = "ppi0";
interrupts = <GIC_SPI 215 IRQ_TYPE_EDGE_RISING>;
clocks = <&gcc GCC_CAMSS_CPHY_0_CLK>;
clock-names = "gcc_camss_cphy_0_clk";
clock-cntl-level = "svs";
clock-rates = <0>;
status = "ok";
};

View File

@@ -0,0 +1,144 @@
* 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.
- rt-wrapper-base
Usage: required
Value type: u32
Definition: Titan offset of start of the RT Wrapper.
- 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.
- vmrm-resource-ids
Usage: optional
Value type: <u32>
Definition: should specify vmrm resource id list order is mem label,
mem tag, irq1 label, irq2 label.
Example:
cam_sfe0: qcom,sfe0@ac9e000 {
cell-index = <0>;
compatible = "qcom,sfe680";
reg-names = "sfe0";
reg = <0xac9e000 0x8000>;
reg-cam-base = <0x9e000>;
rt-wrapper-base = <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";
vmrm-resource-ids = <16 16 16>;
status = "ok";
};

View File

@@ -0,0 +1,147 @@
* Qualcomm Technologies, Inc. MSM Camera SMMU
The MSM camera SMMU device provides SMMU context bank definitions
for all HW blocks that need to map IOVA to physical memory. These
definitions consist of various properties that define how the
IOVA address space is laid out for each HW block in the camera
subsystem.
=======================
Required Node Structure
=======================
The camera SMMU device must be described in three levels of device nodes. The
first level describes the overall SMMU device. Within it, second level nodes
describe individual context banks that map different stream ids. There can
also be second level nodes describing firmware device nodes. Each HW block
such as IFE, ICP maps into these second level device nodes. All context bank
specific properties that define how the IOVA is laid out is contained within
third level device nodes within the second level device nodes.
During the kernel initialization all the devices are probed recursively and
a device pointer is created for each context bank keeping track of the IOVA
mapping information.
Duplicate regions of the same type are not allowed within the same
context bank. All context banks must contain an IO region at the very least.
==================================
First Level Node - CAM SMMU device
==================================
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,msm-cam-smmu".
===================================================================
Second Level Node - CAM SMMU context bank device or firmware device
===================================================================
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,msm-cam-smmu-cb" or "qcom,msm-cam-smmu-fw-dev".
- memory-region
Usage: optional
Value type: <phandle>
Definition: Should specify the phandle of the memory region for firmware.
allocation
- iommus
Usage: required
Value type: <phandle u32 u32>
Definition: first cell is phandle of the iommu, second cell is stream id
and third cell is SMR mask.
- label
Usage: required
Value type: <string>
Definition: Should specify a string label to identify the context bank.
- qcom,secure-cb
Usage: optional
Value type: boolean
Definition: Specifies if the context bank is a secure context bank.
- qti,smmu-proxy-cb-id
Usage: optional for secure camera 2.0, required for 2.5
Value type: <u32>
Definition: Specifies that the SMMU proxy client is camera.
=============================================
Third Level Node - CAM SMMU memory map device
=============================================
- iova-region-name
Usage: required
Value type: <string>
Definition: Should specify a string label to identify the IOVA region.
- iova-region-start
Usage: required
Value type: <u32>
Definition: Should specify start IOVA for region.
- iova-region-len
Usage: required
Value type: <u32>
Definition: Should specify length for IOVA region.
- iova-region-id
Usage: required
Value type: <u32>
Definition: Should specify the numerical identifier for IOVA region.
Allowed values are: 0x00 to 0x03
- Firmware region: 0x00
- Shared region: 0x01
- Scratch region: 0x02
- IO region: 0x03
- iova-granularity
Usage: optional
Value type: <u32>
Definition: Should specify IOVA granularity for shared memory region.
Example:
qcom,cam_smmu {
compatible = "qcom,msm-cam-smmu";
msm_cam_smmu_icp {
compatible = "qcom,msm-cam-smmu-cb";
iommus = <&apps_smmu 0x1078>,
<&apps_smmu 0x1020>,
<&apps_smmu 0x1028>,
<&apps_smmu 0x1040>,
<&apps_smmu 0x1048>,
<&apps_smmu 0x1030>,
<&apps_smmu 0x1050>;
label = "icp";
icp_iova_mem_map: iova-mem-map {
iova-mem-region-firmware {
/* Firmware region is 5MB */
iova-region-name = "firmware";
iova-region-start = <0x0>;
iova-region-len = <0x500000>;
iova-region-id = <0x0>;
status = "ok";
};
iova-mem-region-shared {
/* Shared region is 100MB long */
iova-region-name = "shared";
iova-region-start = <0x7400000>;
iova-region-len = <0x6400000>;
iova-region-id = <0x1>;
iova-granularity = <0x15>;
status = "ok";
};
iova-mem-region-io {
/* IO region is approximately 3.5 GB */
iova-region-name = "io";
iova-region-start = <0xd800000>;
iova-region-len = <0xd2800000>;
iova-region-id = <0x3>;
status = "ok";
};
};
};
};

View File

@@ -0,0 +1,123 @@
* Qualcomm Technologies, Inc. MSM Camera TFE CSID
Camera TFE CSID device provides the definitions for enabling
the TFE CSID hardware. It also provides the functions for the client
to control the TFE CSID hardware.
=======================
Required Node Structure
=======================
The TFE CSID device is described in one level of the device node.
======================================
First Level Node - CAM TFE CSID device
======================================
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,csid640", "qcom,csid530".
- cell-index
Usage: required
Value type: <u32>
Definition: Should specify the hardware index id.
- reg-names
Usage: required
Value type: <string>
Definition: Should be "csid".
- reg
Usage: required
Value type: <u32>
Definition: Register values.
- interrupt-names
Usage: Required
Value type: <string>
Definition: Name of the interrupt.
- interrupts
Usage: Required
Value type: <u32>
Definition: Interrupt associated with TFE CSID HW.
- regulator-names
Usage: required
Value type: <string>
Definition: Name of the regulator resources for TFE CSID 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 TFE CSID HW.
- clocks
Usage: required
Value type: <phandle>
Definition: List of clocks used for TFE CSID 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.
- clock-control-debugfs
Usage: optional
Value type: <string>
Definition: Enable/Disable clk rate control.
Example:
qcom,tfe_csid0@5c6e000 {
cell-index = <0>;
compatible = "qcom,csid530";
reg-names = reg-names = "csid", "top", "camnoc";
reg = <0x5c6e000 0x5000>,
<0x5c11000 0x1000>,
<0x5c13000 0x4000>;
interrupt-names = "csid0";
interrupts = <GIC_SPI 210 IRQ_TYPE_EDGE_RISING>;
regulator-names = "camss";
camss-supply = <&gcc_camss_top_gdsc>;
clock-names =
"tfe_csid_clk_src",
"tfe_csid_clk",
"cphy_rx_clk_src",
"tfe_cphy_rx_clk",
"tfe_clk_src",
"tfe_clk",
"tfe_axi_clk";
clocks =
<&gcc GCC_CAMSS_TFE_0_CSID_CLK_SRC>,
<&gcc GCC_CAMSS_TFE_0_CSID_CLK>,
<&gcc GCC_CAMSS_TFE_CPHY_RX_CLK_SRC>,
<&gcc GCC_CAMSS_TFE_0_CPHY_RX_CLK>,
<&gcc GCC_CAMSS_TFE_0_CLK_SRC>,
<&gcc GCC_CAMSS_TFE_0_CLK>,
<&gcc GCC_CAMSS_AXI_CLK>;
clock-rates =
<240000000 0 0 0 256000000 0 0>,
<384000000 0 0 0 460800000 0 0>,
<426400000 0 0 0 576000000 0 0>,
clock-cntl-level = "svs", "svs_l1", "turbo";
src-clock-name = "tfe_csid_clk_src";
clock-control-debugfs = "true";
status = "ok";
};

View File

@@ -0,0 +1,147 @@
* Qualcomm Technologies, Inc. MSM Camera TFE
Camera TFE device provides the definitions for enabling
the TFE hardware. It also provides the functions for the client
to control the TFE hardware.
=======================
Required Node Structure
=======================
The TFE device is described in one level of the device node.
======================================
First Level Node - CAM TFE device
======================================
Required properties:
- compatible
Usage: required
Value type: <string>
Definition: Should specify the compatibility string for matching the
driver. e.g. "qcom,tfe640", "qcom,tfe530".
- cell-index
Usage: required
Value type: <u32>
Definition: Should specify the hardware index id.
- 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.
- interrupt-names
Usage: Required
Value type: <string>
Definition: Name of the interrupt.
- interrupts
Usage: Required
Value type: <u32>
Definition: Interrupt associated with TFE HW.
- regulator-names
Usage: required
Value type: <string>
Definition: Name of the regulator resources for TFE 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 TFE HW.
- clocks
Usage: required
Value type: <phandle>
Definition: List of clocks used for TFE HW.
- clock-rates
Usage: required
Value type: <u32>
Definition: List of clocks rates.
- src-clock-name
Usage: required
Value type: <string>
Definition: Source clock name.
Optional properties:
- clock-names-option
Usage: optional
Value type: <string>
Definition: Optional clock names.
- clocks-option
Usage: required if clock-names-option defined
Value type: <phandle>
Definition: List of optinal clocks used for TFE HW.
- clock-rates-option
Usage: required if clock-names-option defined
Value type: <u32>
Definition: List of clocks rates for optional clocks.
- clock-control-debugfs
Usage: optional
Value type: <string>
Definition: Enable/Disable clk rate control.
- qcom,cam-cx-ipeak:
Usage: optional
Value type: <phandle bit>
phandle - phandle of CX Ipeak device node
bit - Every bit corresponds to a client of CX Ipeak
Definition: CX Ipeak is a mitigation scheme which throttles camera frequency
if all the clients are running at their respective threshold
frequencies to limit CX peak current.
driver in the relevant register.
- scl-clk-names:
Usage: optional
Value type: <string>
Definition: Scalable clock names to identify which clocks needs to update
along with source clock.
- cam_hw_pid:
Usage: optional
Value type: <u32>
Definition: HW unique Pid values
Example:
cam_tfe0: qcom,tfe0@5c6e000{
cell-index = <0>;
compatible = "qcom,tfe530";
reg-names = "tfe0";
reg = <0x5c6e000 0x5000>;
reg-cam-base = <0x6e000>;
interrupt-names = "tfe0";
interrupts = <GIC_SPI 211 IRQ_TYPE_EDGE_RISING>;
regulator-names = "camss";
camss-supply = <&gcc_camss_top_gdsc>;
clock-names =
"tfe_clk_src",
"tfe_clk",
"tfe_axi_clk";
clocks =
<&gcc GCC_CAMSS_TFE_0_CLK_SRC>,
<&gcc GCC_CAMSS_TFE_0_CLK>,
<&gcc GCC_CAMSS_AXI_CLK>;
clock-rates =
<256000000 0 150000000>,
<460800000 0 200000000>,
<576000000 0 300000000>;
clock-cntl-level = "svs", "svs_l1", "turbo";
src-clock-name = "tfe_clk_src";
clock-control-debugfs = "true";
status = "ok";
};

View File

@@ -0,0 +1,137 @@
* Qualcomm Technologies, Inc. MSM Camera TPG
Camera TPG device provides the definitions for enabling
the TPG hardware. It also provides the functions for the client
to control the TPG hardware.
=======================
Required Node Structure
=======================
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,cam-tpg101", "qcom,cam-tpg102", "qcom,cam-tpgv1", "qcom,cam-tpg103"
- phy-id
Usage: required
Value type: <u32>
Definition: Should specify the phy index number for csid input configuration
- 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.
- regulator-names
Usage: required
Value type: <string>
Definition: Name of the regulator resources for TFE HW.
- xxxx-supply
Usage: required
Value type: <phandle>
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>
Definition: List of clock names required for TFE HW.
- clocks
Usage: required
Value type: <phandle>
Definition: List of clocks used for TFE 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.
- clock-control-debugfs
Usage: optional
Value type: <string>
Definition: Enable/Disable clk rate control.
- scl-clk-names:
Usage: optional
Value type: <string>
Definition: Scalable clock names to identify which clocks needs to update
along with source clock.
- shared-clks
Usage: optional
Value type: <u32>
Definition: List of 0 or 1 values indicating whether shared clk or not.
Example:
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>;
shared-clks = <1 0 0 0>;
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

@@ -0,0 +1,183 @@
* Qualcomm Technologies, Inc. MSM Camera VFE
Camera VFE device provides the definitions for enabling
the VFE hardware. It also provides the functions for the client
to control the VFE hardware.
=======================
Required Node Structure
=======================
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,vfe680", "qcom,vfe680_110", "qcom,vfe580", "qcom,vfe580",
"qcom,vfe480", "qcom,vfe175", "qcom,vfe170", "qcom,vfe175_130", "qcom,vfe170_150",
"qcom,vfe165_160", "qcom,vfe-lite680", "qcom,vfe-lite680_110", "qcom,vfe-lite580",,
"qcom,vfe-lite580", "qcom,vfe-lite480", "qcom,vfe-lite175",
"qcom,vfe-lite175_130" or "qcom,vfe-lite170", "qcom,vfe-lite165".
- 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.
- rt-wrapper-base
Usage: required
Value type: u32
Definition: Titan offset of start of the RT Wrapper.
- interrupt-names
Usage: Required
Value type: <string>
Definition: Name of the interrupt.
- interrupts
Usage: Required
Value type: <u32>
Definition: Interrupt associated with VFE HW.
- regulator-names
Usage: required
Value type: <string>
Definition: Name of the regulator resources for VFE 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 VFE HW.
- clocks
Usage: required
Value type: <phandle>
Definition: List of clocks used for VFE HW.
- clock-rates
Usage: required
Value type: <u32>
Definition: List of clocks rates.
- src-clock-name
Usage: required
Value type: <string>
Definition: Source clock name.
Optional properties:
- clock-names-option
Usage: optional
Value type: <string>
Definition: Optional clock names.
- clocks-option
Usage: required if clock-names-option defined
Value type: <phandle>
Definition: List of optinal clocks used for VFE HW.
- clock-rates-option
Usage: required if clock-names-option defined
Value type: <u32>
Definition: List of clocks rates for optional clocks.
- clock-control-debugfs
Usage: optional
Value type: <string>
Definition: Enable/Disable clk rate control.
- qcom,cam-cx-ipeak:
Usage: optional
Value type: <phandle bit>
phandle - phandle of CX Ipeak device node
bit - Every bit corresponds to a client of CX Ipeak
Definition: CX Ipeak is a mitigation scheme which throttles camera frequency
if all the clients are running at their respective threshold
frequencies to limit CX peak current.
driver in the relevant register.
- scl-clk-names:
Usage: optional
Value type: <string>
Definition: Scalable clock names to identify which clocks needs to update
along with source clock.
- cam_hw_pid:
Usage: optional
Value type: <u32>
Definition: HW unique Pid values
- vmrm-resource-ids
Usage: optional
Value type: <u32>
Definition: should specify vmrm resource id list order is mem label,
mem tag, irq1 label, irq2 label.
Example:
cam_vfe0: qcom,ife0@ac62000 {
cell-index = <0>;
compatible = "qcom,vfe680";
reg-names = "ife", "cam_camnoc";
reg = <0xac62000 0xF000>,
<0xac19000 0x9000>;
reg-cam-base = <0x62000 0x19000>;
rt-wrapper-base = <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";
vmrm-resource-ids = <20 20 20>;
};

View File

@@ -0,0 +1,132 @@
* Qualcomm Technologies, Inc. MSM FLASH
The MSM camera Flash driver provides the definitions for
enabling and disabling LED Torch/Flash by requesting it to
PMIC/I2C/GPIO based hardware. It provides the functions for
the Client to control the Flash hardware.
=======================================================
Required Node Structure
=======================================================
The Flash device is described in one level of the device node.
======================================
First Level Node - CAM FLASH device
======================================
- compatible
Usage: required
Value type: <string>
Definition: Should be "qcom,camera-flash".
- cell-index
Usage: required
Value type: <u32>
Definition: Should specify the hardware index id.
- reg
Usage: required
Value type: <u32>
Definition: Register values.
- flash-source
Usage: required
Value type: <phandle>
Definition: Should contain array of phandles to Flash source nodes.
- torch-source
Usage: required
Value type: <phandle>
Definition: Should contain array of phandles to torch source nodes.
- switch-source
Usage: Optional
Value type: <phandle>
Definition: Should contain phandle to switch source nodes.
- slave-id
Usage: optional
Value type: <u32>
Definition: should contain i2c slave address, device id address
and expected id read value.
- cci-master
Usage: optional
Value type: <u32>
Definition: should contain i2c master id to be used for this camera
flash.
- max-current
Usage: optional
Value type: <u32>
Definition: Max current in mA supported by flash
- max-duration
Usage: optional
Value type: <u32>
Definition: Max duration in ms flash can glow.
- wled-flash-support
Usage: optional
Value type: <boolean>
Definition: To identity wled flash hardware support.
- gpios
Usage: optional
Value type: <u32>
Definition: should specify the gpios to be used for the flash.
- gpio-req-tbl-num
Usage: optional
Value type: <u32>
Definition: should specify the gpio table index.
- gpio-req-tbl-flags
Usage: optional
Value type: <u32>
Definition: should specify the gpio functions.
- gpio-req-tbl-label
Usage: optional
Value type: <u32>
Definition: should specify the gpio labels.
- gpio-flash-reset
Usage: optional
Value type: <u32>
Definition: should contain index to gpio used by flash's "flash reset" pin.
- gpio-flash-en
Usage: optional
Value type: <u32>
Definition: should contain index to gpio used by flash's "flash enable" pin.
- gpio-flash-now
Usage: optional
Value type: <u32>
Definition: should contain index to gpio used by flash's "flash now" pin.
Example:
led_flash_rear: qcom,camera-flash0 {
reg = <0x00 0x00>;
cell-index = <0>;
compatible = "qcom,camera-flash";
flash-source = <&pmi8998_flash0 &pmi8998_flash1>;
torch-source = <&pmi8998_torch0 &pmi8998_torch1>;
switch-source = <&pmi8998_switch0>;
wled-flash-support;
qcom,slave-id = <0x00 0x00 0x0011>;
qcom,cci-master = <0>;
gpios = <&msmgpio 23 0>,
<&msmgpio 24 0>;
<&msmgpio 25 0>;
qcom,gpio-flash-reset = <0>;
qcom,gpio-flash-en = <0>;
qcom,gpio-flash-now = <1>;
qcom,gpio-req-tbl-num = <0 1>;
qcom,gpio-req-tbl-flags = <0 0>;
qcom,gpio-req-tbl-label = "FLASH_EN",
"FLASH_NOW";
qcom,max-current = <1500>;
qcom,max-duration = <1200>;
};

View File

@@ -0,0 +1,41 @@
* Qualcomm Technologies, Inc. MSM Camera
Required properties:
- compatible :
- "qcom,cam-req-mgr", "qcom,cam-sync"
- cam-bypass-driver :
Usage: optional
Value type: <u32>
Definition: should contain drivers that required to bypass on camera,
including rgltr, rgltr_mode, clks, cesta, icc.
- device-heap-size :
Usage: optional
Value type: <u32>
Definition: heap size used for camera internal allocations (exa - hfi memory) which stay forever.
- session-heap-size :
Usage: optional
Value type: <u32>
Definition: heap size used for session based allocations. These allocations must be freed at the
end of session and the session-heap memory will be released to PVM at the end of usecase.
Example:
qcom,cam-req-mgr {
compatible = "qcom,cam-req-mgr";
cam-bypass-driver = <(CAM_BYPASS_RGLTR |
CAM_BYPASS_RGLTR_MODE |
CAM_BYPASS_CLKS |
CAM_BYPASS_CESTA |
CAM_BYPASS_ICC)>;
device-heap-size = <0x400000>;
session-heap-size = <0xC800000>;
status = "ok";
};
qcom,cam-sync {
compatible = "qcom,cam-sync";
status = "ok";
};