ISL79987 Integration with IMX8MP No Remote Pad Found

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

ISL79987 Integration with IMX8MP No Remote Pad Found

1,105 Views
Wobaffet
Senior Contributor I

Hello,

We are trying to initilize isl79987 with our custom board including i.MX8MP. For now we are just trying to get some image from only one ntsc camera. On the boot up we get No Remote Pad Found from imx8-mipi-csi2-sam. What could be the issue for our case. I've provided the DT and some logs. We are using the current BSP from NXP with 6.1 kernel version. Could you please give us some hints about what could be wrong? Thanks!

/camera_0: camera_0_ntsc@3e {
        compatible = "camera_0";
        reg = <0x3e>;
        status = "okay";
        port {
                camera_ntsc_0_ep: endpoint {
                        remote-endpoint = <&isl79987_in1>;
                };
        };
};
&mipi_csi_0 {
        #address-cells = <1>;
        #size-cells = <0>;
        status = "okay";
        port@0 {
                reg = <0>;
                mipi_csi0_ep: endpoint {
                        remote-endpoint = <&isl79987_out>;
                        data-lanes = <1>;
                        //csis-hs-settle = <13>;                //TODO
                        //csis-clk-settle = <2>;                // TODO
                        //csis-wclk;            //TODO 
                };
        };
};
&i2c3 {
        clock-frequency = <400000>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_i2c3>;
        status = "okay";
        isl7998x_mipi@44 { 
                compatible = "isil,isl79987";
                reg = <0x44>;
                pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>;
                powerdown-gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
                reset-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
                        port@0 {
                                reg = <0>;
                                isl79987_out: endpoint {
                                        remote-endpoint = <&mipi_csi0_ep>;
                                        data-lanes = <1>;
                                };
                        };
                        port@1 {
                                reg = <1>;
                                isl79987_in1: endpoint {
                                remote-endpoint = <&camera_ntsc_0_ep>;
                                };
                        };

      };
};
&i2c3 {
        clock-frequency = <400000>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_i2c3>;
        status = "okay";
        isl7998x_mipi@44 { 
                compatible = "isil,isl79987";
                reg = <0x44>;
                pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>;
                powerdown-gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
                reset-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
                        port@0 {
                                reg = <0>;
                                isl79987_out: endpoint {
                                        remote-endpoint = <&mipi_csi0_ep>;
                                        data-lanes = <1>;
                                };
                        };
                        port@1 {
                                reg = <1>;
                                isl79987_in1: endpoint {
                                remote-endpoint = <&camera_ntsc_0_ep>;
                                };
                        };

      };
};
&cameradev {
        status = "okay";
};

&isi_0 {
        status = "okay";

        cap_device {
                status = "okay";
        };

        m2m_device {
                status = "disabled";
        };
};
root@imx8mp-lpddr4-evk:~# dmesg | grep isl7998 
[    1.852060] i2c-core: driver [isl7998x] registered
[    3.054787] i2c i2c-2: of_i2c: register /soc@0/bus@30800000/i2c@30a40000/isl7998x_mipi@44
[    3.081284] isl7998x 2-0044: probe
[    3.116996] isl7998x_get_nr_inputs: 584
[    3.120850] ## isl7998x_get_nr_inputs called
[    3.129226] isl7998x_mc_init: 1396
[    3.132637] isl7998x_mc_init: 1404
[    3.136048] ## isl7998x_mc_init called
[    3.139800] isl7998x_init_controls: 1452
[    3.143749] isl7998x_set_ctrl: 1107
[    3.147239] isl7998x_set_test_pattern: 734
[    3.151343] isl7998x_set_ctrl: 1135
[    3.154836] isl7998x_set_ctrl: 1107
[    3.158329] isl7998x_set_test_pattern: 734
[    3.162432] isl7998x_set_ctrl: 1135
[    3.165926] isl7998x_set_ctrl: 1107
[    3.169422] isl7998x_set_test_pattern: 734
[    3.173524] isl7998x_set_ctrl: 1135
[    3.177018] isl7998x_set_ctrl: 1107
[    3.180511] isl7998x_set_test_pattern: 734
[    3.184613] isl7998x_set_ctrl: 1135
[    3.188108] isl7998x_init_controls: 1497
[    3.192035] ## isl7998x_init_controls called
[    3.201059] i2c i2c-2: client [isl79987] registered with bus id 2-0044
root@imx8mp-lpddr4-evk:~# dmesg | grep mipi   
[    1.455479] i2c-core: driver [it6161_mipirx_hdmitx] registered
[    1.866251] i2c-core: driver [ap1302_mipi] registered
[    1.872105] i2c-core: driver [ov5640_mipi] registered
[    2.006577] i2c-core: driver [max9286_mipi] registered
[    3.054787] i2c i2c-2: of_i2c: register /soc@0/bus@30800000/i2c@30a40000/isl7998x_mipi@44
[    3.430190] mxc-mipi-csi2-sam 32e40000.csi: supply mipi-phy not found, using dummy regulator
[    3.438956] drivers/staging/media/imx/imx8-mipi-csi2-sam.c:csis_get_remote_subdev:638
[    3.452364] : mipi_csis_imx8mp_phy_reset, No remote pad found!
[    3.458236] mxc-mipi-csi2-sam 32e40000.csi: lanes: 1, hs_settle: 0, clk_settle: 0, wclk: 0, freq: 500000000
root@imx8mp-lpddr4-evk:~# v4l2-ctl --list-devices
Failed to open /dev/video0: Device or resource busy
root@imx8mp-lpddr4-evk:~# ls /dev/video*
/dev/video0  /dev/video1
root@imx8mp-lpddr4-evk:~# i2cdetect -y 2 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --   
root@imx8mp-lpddr4-evk:~# i2cdump -f -y 2  0x44
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
f0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
root@imx8mp-lpddr4-evk:~# cat /sys/kernel/debug/clk/clk_summary | grep media
    media_mipi_test_byte              0        0        0    24000000          0     0  50000         N
    media_cam2_pix                    0        0        0    24000000          0     0  50000         N
       media_cam2_pix_root_clk        0        0        0    24000000          0     0  50000         Y
    media_disp1_pix                   0        0        0    24000000          0     0  50000         N
       media_disp1_pix_root_clk       0        0        0    24000000          0     0  50000         Y
    media_isp                         0        0        0    24000000          0     0  50000         N
       media_isp_root_clk             0        0        0    24000000          0     0  50000         Y
                   media_cam1_pix       0        0        0   500000000          0     0  50000         N
                      media_cam1_pix_root_clk       0        0        0   500000000          0     0  50000         Y
                   media_axi          1        1        0   500000000          0     0  50000         Y
                      media_axi_root_clk       2        2        0   500000000          0     0  50000         Y
                   media_apb          1        1        0   200000000          0     0  50000         Y
                      media_apb_root_clk       2        3        0   200000000          0     0  50000         Y
                media_disp2_pix       1        1        0    74250000          0     0  50000         Y
                   media_disp2_pix_root_clk       1        1        0    74250000          0     0  50000         Y
                media_ldb             1        1        0   519750000          0     0  50000         Y
                   media_ldb_root_clk       1        1        0   519750000          0     0  50000         Y
                media_mipi_phy1_ref       0        0        0    47250000          0     0  50000         N
                   media_mipi_phy1_ref_root       0        0        0    47250000          0     0  50000         Y

 

0 Kudos
Reply
5 Replies

1,050 Views
joanxie
NXP TechSupport
NXP TechSupport

did you use interlaced data from ISL79987? if yes, did you set imx8mp as de-interlaced?

0 Kudos
Reply

852 Views
Wobaffet
Senior Contributor I

Hello @joanxie 

Sorry for the late response,

We use isl79987 analog to MIPI CSI-2 with imx8mp, how can we set our MPU to de-interlaced mode?

We were able to register the isl79987 and we can monitor the register values, however, we are getting some link-related issues with the media subsystem we can't register the camera part for the device node correctly. Do you have any example of how we can register an analog camera correctly so the subsystem can be initialized?

root@imx8mp-lpddr4-evk:~# rmmod imx8_media_dev && modprobe imx8_media_dev
[ 1649.630720] imx8_media_dev: module is from the staging directory, the quality is unknown, you have been warned.
[ 1649.642230] mx8-img-md: Registered mxc_isi.0.capture as /dev/video3
[ 1649.648646] mx8-img-md: Registered sensor subdevice: isl7998x 2-0044 (1)
[ 1649.655403] mx8-img-md: created link [mxc_isi.0] => [mxc_isi.0.capture]
[ 1649.662048] mx8-img-md: created link [mxc-mipi-csi2.0] => [mxc_isi.0]
[ 1649.668509] ##mx8-img-md 
[ 1649.671154] mx8-img-md: subdev_notifier_complete error exit
[ 1649.676754] mxc-md 32c00000.bus:camera: Sensor register failed
[ 1649.682770] mx8-img-md: Unregistered all entities
[ 1649.687559] mxc-md: probe of 32c00000.bus:camera failed with error -515
        connector {
                compatible = "composite-video-connector";
                label = "tv";
                sdtv-standards = <(SDTV_STD_PAL | SDTV_STD_NTSC)>;
                port {
                        tv_connector_in: endpoint {
                        remote-endpoint = <&isl79987_in1>;
                        };
                };
        };

&i2c3 {
        clock-frequency = <400000>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_i2c3>;
        status = "okay";
       isl7998x_mipi@44 {
                compatible = "isil,isl79987";
                reg = <0x44>;
                pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>;
                powerdown-gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
                reset-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
               ports {
                      #address-cells = <1>;
                      #size-cells = <0>;
                        port@0 {
                                reg = <0>;
                                isl79987_out: endpoint {
                                        remote-endpoint = <&mipi_csi0_ep>;
                                        data-lanes = <1>;
                                };
                        };
                        port@1 {
                                reg = <1>;
                                isl79987_in1: endpoint {
                                remote-endpoint = <&tv_connector_in>;
                                };
                        };
               };
};
&mipi_csi_0 {
        #address-cells = <1>;
        #size-cells = <0>;
        status = "okay";

        port@0 {
                reg = <0>;
                mipi_csi0_ep: endpoint {
                        remote-endpoint = <&isl79987_out>;
                        data-lanes = <1 2>;
                };
        };
};
root@imx8mp-lpddr4-evk:~# i2cdump -f -y 2 0x44
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 87 01 00 0c 00 00 00 12 1f 43 4f 41 80 80 80 00    ??.?...??COA???.
10: 0f 0c 0c 0c 0c 00 00 00 00 00 00 0c 0c 0c 0c 00    ?????......????.
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................

 Thanks!

0 Kudos
Reply

826 Views
Wobaffet
Senior Contributor I

We were able to get some images from an NTSC camera but we are having some trouble getting images from PAL CAM, how can we set imx8mp into de-interlace as you've mentioned earlier?

Thanks!

Tags (1)
0 Kudos
Reply

1,075 Views
Wobaffet
Senior Contributor I
 

Reminder. Our scope for the i2cdump command is like below, we don't get a signal when the device is being registered. 

WhatsApp Image 2024-03-03 at 16.46.45.jpeg

0 Kudos
Reply

955 Views
joanxie
NXP TechSupport
NXP TechSupport

what output data format do you use? BT656?

0 Kudos
Reply