blob: a2bb11ba49ae10a1c957d06bb4f8bd11cfbb256e [file] [log] [blame]
* Freescale V4L2 Capture for i.MX6DQ/i.MX6SDL
Required board properties for IPUv3 capture:
- clocks: should include the clock provided by i.MX6 to sensor
- clock-names: sensor clock's name should be "ipux_csiy"
x should be 1 or 2 for i.MX6DQ; should be 1 for i.MX6SDL
y is 0 or 1 for i.MX6DQ/i.MX6SDL
Note: other detailed information for IPUv3, please refer to
Documentation/devicetree/bindings/fb/fsl_ipuv3_fb.txt
Required properties for v4l2_capture
- compatible: should be "fsl,imx6q-v4l2-capture"
- ipu_id: ipu id for v4l2 capture device
should be 0 or 1 for i.MX6DQ; should be 0 for i.MX6SDL
- csi_id: csi id for v4l2 capture device
should be 0 or 1 for i.MX6DQ/i.MX6SDL
- mclk_source: should be 0 or 1. two mclk sources at most now
- status: should be set to "okay" to enable this device
Required properties for sensor
- compatible: "<vendor>,<sensor>"
please check the supported sensor in the Supported Sensor fields.
- reg: sensor I2C slave address
- pinctrl-names: should be "default" for parallel sensor
- pinctrl-0: should depend on the connection between sensor and i.MX
connection between sensor and i.MX could be MIPI-CSI2 or legacy parallel
- clocks: should be the clock source provided to sensor.
- clock-names: should be "csi_mclk"
- DOVDD-supply: set according to the board.
- AVDD-supply: set according to the board.
- DVDD-supply: set according to the board.
- pwn-gpios: set according to the board.
- rst-gpios: set according to the board.
- csi_id: csi id for v4l2 capture device
should be 0 or 1 for i.MX6DQ/i.MX6SDL.
- mclk: should the value of mclk clock send out the sensor. unit is Hz.
- mclk_source: should be 0 or 1 and should be the same as the setting in
v4l2_capture.
- cvbs: 1 for CVBS input, 0 YPbPr input. This property is only needed for
adv7180 tv decoder.
Supported Sensor
- ov5640
- ov5642
- ov5640_mipi
- adv7180
Example for IPUv3 including capture settings on imx6q-sabresd.dts:
ipu1: ipu@02400000 { /* IPU1 */
compatible = "fsl,imx6q-ipuv3";
reg = <0x02400000 0x400000>;
interrupts = <0 5 0x04>, < 0 6 0x04>;
clocks = <&clks 130>, <&clks 131>, <&clks 132>, <&clks 39>, <&clks 40>, <&clks 169>;
clock-names = "ipu1", "ipu1_di0", "ipu1_di1", "ipu1_di0_sel", "ipu1_di1_sel", "ipu1_csi0";
status = "disabled";
};
Examples for v4l2_capture:
v4l2_cap {
compatible = "fsl,imx6q-v4l2-capture";
ipu_id = <0>;
csi_id = <0>;
mclk_source = <0>;
status = "okay";
};
Examples for sensors:
ov5642: ov5642@3c {
compatible = "ovti,ov5642";
reg = <0x3c>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ipu1_2>;
clocks = <&clks 201>;
clock-names = "csi_mclk";
DOVDD-supply = <&vgen4_reg>; /* 1.8v */
AVDD-supply = <&vgen3_reg>; /* 2.8v, on rev C board is VGEN3 */
DVDD-supply = <&vgen2_reg>; /* 1.5v*/
pwn-gpios = <&gpio1 16 1>; /* active low: SD1_DAT0 */
rst-gpios = <&gpio1 17 0>; /* active high: SD1_DAT1 */
csi_id = <0>;
mclk = <24000000>;
mclk_source = <0>;
};
adv7180: adv7180@21 {
compatible = "adv,adv7180";
reg = <0x21>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ipu1_3>;
clocks = <&clks 201>;
clock-names = "csi_mclk";
DOVDD-supply = <&reg_3p3v>; /* 3.3v, enabled via 2.8 VGEN6 */
AVDD-supply = <&reg_3p3v>; /* 1.8v */
DVDD-supply = <&reg_3p3v>; /* 1.8v */
PVDD-supply = <&reg_3p3v>; /* 1.8v */
pwn-gpios = <&max7310_b 2 0>;
csi_id = <0>;
mclk = <24000000>;
mclk_source = <0>;
cvbs = <1>;
};