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.
Same issue for me, Did you solved ?
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.