Texas Instruments DRA72x CAMERA ADAPTATION LAYER (CAL)
------------------------------------------------------

The Camera Adaptation Layer (CAL) is a key component for image capture
applications. The capture module provides the system interface and the
processing capability to connect CSI2 image-sensor modules to the
DRA72x device.

Required properties:
- compatible: must be "ti,dra72-cal"
- reg:	CAL Top level, Receiver Core #0, Receiver Core #1 and Camera RX
	control address space
- reg-names: cal_top, cal_rx_core0, cal_rx_core1, and camerrx_control
	     registers
- interrupts: should contain IRQ line for the CAL;

CAL supports 2 camera port nodes on MIPI bus. Each CSI2 camera port nodes
should contain a 'port' child node with child 'endpoint' node. Please
refer to the bindings defined in
Documentation/devicetree/bindings/media/video-interfaces.txt.

Example:
	cal: cal@4845b000 {
		compatible = "ti,dra72-cal";
		ti,hwmods = "cal";
		reg = <0x4845B000 0x400>,
		      <0x4845B800 0x40>,
		      <0x4845B900 0x40>,
		      <0x4A002e94 0x4>;
		reg-names = "cal_top",
			    "cal_rx_core0",
			    "cal_rx_core1",
			    "camerrx_control";
		interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
		#address-cells = <1>;
		#size-cells = <0>;

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			csi2_0: port@0 {
				reg = <0>;
				endpoint {
					slave-mode;
					remote-endpoint = <&ar0330_1>;
				};
			};
			csi2_1: port@1 {
				reg = <1>;
			};
		};
	};

	i2c5: i2c@4807c000 {
		ar0330@10 {
			compatible = "ti,ar0330";
			reg = <0x10>;

			port {
				#address-cells = <1>;
				#size-cells = <0>;

				ar0330_1: endpoint {
					reg = <0>;
					clock-lanes = <1>;
					data-lanes = <0 2 3 4>;
					remote-endpoint = <&csi2_0>;
				};
			};
		};
	};
