Trying to work through getting a parallel camera working with Linux 4.4.3
Most of the posts here are for much older kernels, or very specific camera modules.
Is there a generic CSI parallel camera driver ?
A Device Tree Template for a generic parallel camera ?
what camera do you use? if you use the camera as board's, you can find the driver source code in the bsp, if you need to use specific camera, pls let me know it.
I do not know much about the camera.
It is connected following: SolidRun's app note
SR-uSOM-MX6-AN1-Connecting-Parallel-Camera.pdf
The actual camera is connected via an FPGA that transforms the Camera IO's to Parallel data
The Pixel clock is 74.25Mhz
Resolution is 1080p30 2200 clocks per line 1120 lines per frame
1920 active pixels, 1080 active lines The data format is 16bit YCbCr 4:2:2 single data rate
I have the pinctrl - pinmuxing in the devicetree correct - I beleive.
But I need a device configuration that will properly select the "camera": and connect it through the IPU
Below is snippets from my device tree related tot he camera.
I am asking if this look about right ? Or if there is a recommendation or app note someone is aware of for this ?
ipu1: ipu@02400000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,imx6q-ipu";
reg = <0x02400000 0x400000>;
interrupts = <0 6 4>,
<0 5 4>;
clocks = <&clks 130>,
<&clks 131>,
<&clks 132>;
clock-names = "bus", "di0", "di1";
resets = <&src 2>;
ipu1_csi0: port@0 {
reg = <0>;
};
ipu1_csi1: port@1 {
reg = <1>;
};
};
pinctrl_ipu1_2: ipu1grp-2 { /* parallel camera */
fsl,pins = <
MX6QDL_PAD_EIM_D23__IPU2_CSI1_DATA_EN 0x0001b0b1 // M22
MX6QDL_PAD_EIM_D17__IPU2_CSI1_PIXCLK 0x0001b0b0 // H25
MX6QDL_PAD_EIM_DA11__IPU2_CSI1_HSYNC 0x0000b0b1 // M20
MX6QDL_PAD_EIM_DA12__IPU2_CSI1_VSYNC 0x0000b0b1 // M24
MX6QDL_PAD_EIM_DA9__IPU2_CSI1_DATA00 0x0001b0b0 // M21
MX6QDL_PAD_EIM_DA8__IPU2_CSI1_DATA01 0x0001b0b0 // L24
MX6QDL_PAD_EIM_DA7__IPU2_CSI1_DATA02 0x0001b0b0 // L25
MX6QDL_PAD_EIM_DA6__IPU2_CSI1_DATA03 0x0001b0b0 // K25
MX6QDL_PAD_EIM_DA5__IPU2_CSI1_DATA04 0x0001b0b0 // L23
MX6QDL_PAD_EIM_DA4__IPU2_CSI1_DATA05 0x0001b0b0 // L22
MX6QDL_PAD_EIM_DA3__IPU2_CSI1_DATA06 0x0001b0b0 // K24
MX6QDL_PAD_EIM_DA2__IPU2_CSI1_DATA07 0x0001b0b0 // L21
MX6QDL_PAD_EIM_DA1__IPU2_CSI1_DATA08 0x0001b0b0 // J25
MX6QDL_PAD_EIM_DA0__IPU2_CSI1_DATA09 0x0001b0b0 // L20
MX6QDL_PAD_EIM_D22__IPU2_CSI1_DATA10 0x0001b0b0 // K23
MX6QDL_PAD_EIM_EB0__IPU2_CSI1_DATA11 0x0001b0b0 // K21
MX6QDL_PAD_EIM_D28__IPU2_CSI1_DATA12 0x0001b0b0 // G24
MX6QDL_PAD_EIM_D27__IPU2_CSI1_DATA13 0x0001b0b0 // J22
MX6QDL_PAD_EIM_D26__IPU2_CSI1_DATA14 0x0001b0b0 // G25
MX6QDL_PAD_EIM_D20__IPU2_CSI1_DATA15 0x0001b0b0 // H22
MX6QDL_PAD_EIM_D19__IPU2_CSI1_DATA16 0x0001b0b0 // H23
MX6QDL_PAD_EIM_D18__IPU2_CSI1_DATA17 0x0001b0b0 // F24
MX6QDL_PAD_EIM_D16__IPU2_CSI1_DATA18 0x0001b0b0 // J21
MX6QDL_PAD_EIM_A24__IPU2_CSI1_DATA19 0x0001b0b0 // F25
>;
};
mipi_csi: mipi@021dc000 {
compatible = "fsl,imx6q-mipi-csi2";
reg = <0x021dc000 0x4000>;
interrupts = <0 100 0x04>, <0 101 0x04>;
clocks = <&clks 138>, <&clks 53>, <&clks 204>;
clock-names = "dphy_clk", "pixel_clk", "cfg_clk";
status = "okay";
ipu_id = <0>;
csi_id = <1>;
v_channel = <0>;
lanes = <2>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ipu1_2>;
};
v4l2_cap_0 {
compatible = "fsl,imx6q-v4l2-capture";
ipu_id = <0>;
//ipu_id = <1>;
csi_id = <1>;
mclk_source = <0>;
mipi_camera = <1>;
default_input = <0>;
status = "okay";
};