mipi muxing on imx8mp not working

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

mipi muxing on imx8mp not working

1,103 Views
kaushlendra
Contributor II

Hi All,

 

I am trying to mux mipi interface in imx8mp in such a way that each mipi interface is connected to 1:2 mipi switch(using TMUX646). For i2c interface in camera, I am using i2c muxing in i2c3 interface. I guess i2c muxing in dts works fine but whenever I am configuring dts for mipi muxing I am getting error like:

imx8mp-evk.dts:1412.26-1418.5: ERROR (phandle_references): /soc@0/bus@32c00000/camera/csi@32e40000/port@0/endpoint: Reference to non-existent node or label "imx219_mipi_0_ep"
|
| imx8mp-evk.dts:1423.26-1429.5: ERROR (phandle_references): /soc@0/bus@32c00000/camera/csi@32e40000/port@1/endpoint: Reference to non-existent node or label "imx219_mipi_1_ep"
|
| /imx8mp-evk.dts:1440.26-1446.5: ERROR (phandle_references): /soc@0/bus@32c00000/camera/csi@32e50000/port@2/endpoint: Reference to non-existent node or label "imx219_mipi_2_ep"
|
| imx8mp-evk.dts:1451.26-1457.5: ERROR (phandle_references): /soc@0/bus@32c00000/camera/csi@32e50000/port@3/endpoint: Reference to non-existent node or label "imx219_mipi_3_ep"

 

My dts file where I am muxing i2c and mipi interface is:

&i2c3 {
clock-frequency = <400000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3>;
status = "okay";

mux_0: mux_0@71 {
compatible = "nxp, pca9849";
reg = <0x71>;
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
powerdown-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
reset-gpios = <&gpio3 19 GPIO_ACTIVE_HIGH>;

/* IMX219 configuration which is connected to first channel of TMUX646 */
i2c@0 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0>;
status = "okay";

imx219@10 {
compatible = "sony,imx219";
reg = <0x10>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>;
clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
clock-names = "xclk";
assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
assigned-clock-parents = <&clk IMX8MP_CLK_24M>;
assigned-clock-rates = <24000000>;
csi_id = <0>;
mclk = <24000000>;
mclk_source = <0>;
mipi_csi;
status = "okay";

port {
imx219_mipi_0_ep: endpoint {
remote-endpoint = <&mipi_csi0_ep>;
data-lanes = <1 2>;
clock-lanes = <0>;
};
};
};
};
/* IMX219 configuration which is connected to second channel of TMUX646 */
i2c@1 {
#address-cells = <1>;
#size-cells = <0>;
reg = <1>;
status = "okay";

imx219@10 {
compatible = "sony,imx219";
reg = <0x10>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>;
clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
clock-names = "xclk";
assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
assigned-clock-parents = <&clk IMX8MP_CLK_24M>;
assigned-clock-rates = <24000000>;
csi_id = <0>;
mclk = <24000000>;
mclk_source = <0>;
mipi_csi;
status = "okay";

port {
imx219_mipi_1_ep: endpoint {
remote-endpoint = <&mipi_csi1_ep>;
data-lanes = <1 2>;
clock-lanes = <0>;
};
};
};
};

/* IMX219 configuration which is connected to second channel of TMUX646 */
i2c@2 {
#address-cells = <1>;
#size-cells = <0>;
reg = <2>;
status = "okay";

imx219@10 {
compatible = "sony,imx219";
reg = <0x10>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>;
clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
clock-names = "xclk";
assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
assigned-clock-parents = <&clk IMX8MP_CLK_24M>;
assigned-clock-rates = <24000000>;
csi_id = <0>;
mclk = <24000000>;
mclk_source = <0>;
mipi_csi;
status = "okay";

port {
imx219_mipi_2_ep: endpoint {
remote-endpoint = <&mipi_csi2_ep>;
data-lanes = <1 2>;
clock-lanes = <0>;
};
};
};
};
/* IMX219 configuration which is connected to second channel of TMUX646 */
i2c@3 {
#address-cells = <1>;
#size-cells = <0>;
reg = <3>;
status = "okay";

imx219@10 {
compatible = "sony,imx219";
reg = <0x10>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>;
clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
clock-names = "xclk";
assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
assigned-clock-parents = <&clk IMX8MP_CLK_24M>;
assigned-clock-rates = <24000000>;
csi_id = <0>;
mclk = <24000000>;
mclk_source = <0>;
mipi_csi;
status = "okay";

port {
imx219_mipi_3_ep: endpoint {
remote-endpoint = <&mipi_csi3_ep>;
data-lanes = <1 2>;
clock-lanes = <0>;
};
};
};
};
};

};


&mipi_csi_0 {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";

port@0 {
reg = <0>;
mipi_csi0_ep: endpoint {
remote-endpoint = <&imx219_mipi_0_ep>;
data-lanes = <2>;
csis-hs-settle = <13>;
csis-clk-settle = <2>;
csis-wclk;
};
};

port@1 {
reg = <1>;
mipi_csi1_ep: endpoint {
remote-endpoint = <&imx219_mipi_1_ep>;
data-lanes = <2>;
csis-hs-settle = <13>;
csis-clk-settle = <2>;
csis-wclk;
};
};
};

&mipi_csi_1 {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";

port@2 {
reg = <2>;
mipi_csi2_ep: endpoint {
remote-endpoint = <&imx219_mipi_2_ep>;
data-lanes = <2>;
csis-hs-settle = <13>;
csis-clk-settle = <2>;
csis-wclk;
};
};

port@3 {
reg = <3>;
mipi_csi3_ep: endpoint {
remote-endpoint = <&imx219_mipi_3_ep>;
data-lanes = <2>;
csis-hs-settle = <13>;
csis-clk-settle = <2>;
csis-wclk;
};
};
};

 

Please help on where I am doing wrong in mipi muxing and how I can rectify it.

0 Kudos
3 Replies

436 Views
araja
Contributor III

 Same issue for me, Did you solved ? 

0 Kudos

1,047 Views
kaushlendra
Contributor II

I saw this document and I am still not sure how to add endpoints in the camera port as after adding endpoints only, I am getting the build error.

0 Kudos