Hello,
I want to stream video from the camera using the ISL79987 Video Decoder IC on the i.MX8M Mini platform.
Yocto Version: Mickledore
Kernel Version: 6.1.36
I added the ISL79987 IC to my device tree as follows.
isl7998x_mipi@44 {
compatible = "isil,isl79987";
reg = <0x44>;
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
ov5640_mipi1_ep: endpoint {
remote-endpoint = <&mipi1_sensor_ep>;
data-lanes = <1>;
};
};
port@1 {
reg = <1>;
endpoint {
};
};
};
};
&mipi_csi_1 {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
port {
mipi1_sensor_ep: endpoint@1 {
remote-endpoint = <&ov5640_mipi1_ep>;
data-lanes = <1>;
csis-hs-settle = <13>;
csis-clk-settle = <0>;
csis-wclk;
};
csi1_mipi_ep: endpoint@2 {
remote-endpoint = <&csi1_ep>;
};
};
};
&csi1_bridge {
fsl,mipi-mode;
status = "okay";
port {
csi1_ep: endpoint {
remote-endpoint = <&csi1_mipi_ep>;
};
};
};
However, when I run this command "gst-launch-1.0 v4l2src device=/dev/video0 ! autovideosink" I get the following error. Could you please help me what is the reason for this?
root@imx8mm-var-dart:/dev# gst-launch-1.0 v4l2src device=/dev/video0 ! autovideosink
Setting pipeline to PAUSED ...
Pipeline is live and does not nee[ 273.484183] ISL79987 - DEBUG isl7998x_enum_mbus_code: Entering isl7998x_enum_mbus_code function.LINE: 1194
d PREROLL ...
Pipeline is PREROL[ 273.496227] ISL79987 - DEBUG isl7998x_enum_mbus_code: MBus code set to 8198 LINE: 1202
LED ...
Setting pipeline to PLAY[ 273.507006] mxc_mipi-csi 32e30000.mipi_csi: format not match
ING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.
Additional debug info:
/usr/src/debug/gstreamer1.0/1.22.0.imx-r0/libs/gst/base/gstbasesrc.c(3132): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming stopped, reason not-negotiated (-4)
Execution ended after 0:00:00.032001250
Setting pipeline to NULL ...
Freeing pipeline ...
root@imx8mm-var-dart:/dev#
Best regards.
Hi @cbl!
As mentioned @Wobaffet, I don't think that the video0 can be the device created for the ISL79987.
You can use the next command to see if the device was recognized by the kernel:
dmesg | grep isl799
The device tree looks good and you can refer to the documentation if you need to change it.
Best Regards!
Chavira
Hi @Chavira,
I got the log the way you said, you can find it below. I also included logs in the driver isl7998x.c. If you have a chance to review the log, can you tell me what the problem is?
[ 0.056316] platform 32e30000.mipi_csi: Fixed dependency cycle(s) with /soc@0/bus@30800000/i2c@30a40000/isl7998x_mipi@44
[ 2.314415] ISL79987 - DEBUG isl7998x_probe: Entering isl7998x_probe function.
[ 2.321685] ISL79987 - DEBUG isl7998x_probe: Probing isl7998x device.
[ 2.334976] ISL79987 - DEBUG isl7998x_probe: Initializing isl7998x struct.
[ 2.348901] ISL79987 - DEBUG isl7998x_probe: Adapter address: (____ptrval____)
[ 2.361355] ISL79987 - DEBUG isl7998x_probe: Checking I2C functionality.
[ 2.368060] ISL79987 - DEBUG isl7998x_probe: Allocating memory for isl7998x struct.
[ 2.375723] ISL79987 - DEBUG isl7998x_probe: isl7998x address: (____ptrval____)
[ 2.383036] ISL79987 - DEBUG isl7998x_probe: Retrieving/Requesting PD GPIO.
[ 2.390019] ISL79987 - DEBUG isl7998x_probe: pd_gpio address: 0000000000000000
[ 2.397246] ISL79987 - ERROR isl7998x_probe: Retrieving/Requesting RSTB GPIO.
[ 2.404398] ISL79987 - DEBUG isl7998x_probe: rstb_gpio address: 0000000000000000
[ 2.411800] ISL79987 - DEBUG isl7998x_probe: Initializing register map.
[ 2.418486] ISL79987 - DEBUG isl7998x_probe: Register map address: (____ptrval____)
[ 2.426151] ISL79987 - DEBUG isl7998x_probe: Getting Fwnode endpoint.
[ 2.432607] ISL79987 - DEBUG isl7998x_probe: Fwnode endpoint address: (____ptrval____)
[ 2.440528] ISL79987 - DEBUG isl7998x_probe: Parsing Fwnode endpoint.
[ 2.446979] ISL79987 - DEBUG isl7998x_probe: Parsing Fwnode endpoint: ret = 0
[ 2.454120] ISL79987 - DEBUG isl7998x_probe: Checking MIPI lanes.
[ 2.466230] ISL79987 - DEBUG isl7998x_probe: Setting number of MIPI lanes.
[ 2.473114] ISL79987 - DEBUG isl7998x_probe: Setting number of MIPI lanes: nr_mipi_lanes = 1
[ 2.481556] ISL79987 - DEBUG isl7998x_probe: Getting number of inputs.
[ 2.488088] ISL79987 - DEBUG isl7998x_get_nr_inputs: Entering isl7998x_get_nr_inputs function.
[ 2.496707] ISL79987 - DEBUG isl7998x_get_nr_inputs: Checking port with ID: 1
[ 2.503849] ISL79987 - DEBUG isl7998x_get_nr_inputs: Checking port with ID: 2
[ 2.510990] ISL79987 - ERROR isl7998x_get_nr_inputs: Port with ID 2 not found.
[ 2.518217] ISL79987 - DEBUG isl7998x_get_nr_inputs: Checking port with ID: 3
[ 2.525356] ISL79987 - ERROR isl7998x_get_nr_inputs: Port with ID 3 not found.
[ 2.532583] ISL79987 - DEBUG isl7998x_get_nr_inputs: Checking port with ID: 4
[ 2.539723] ISL79987 - ERROR isl7998x_get_nr_inputs: Port with ID 4 not found.
[ 2.546953] ISL79987 - DEBUG isl7998x_get_nr_inputs: Detected 1 input.
[ 2.553484] ISL79987 - DEBUG isl7998x_probe: Getting number of inputs: nr_inputs = 1
[ 2.561232] ISL79987 - DEBUG isl7998x_probe: Initializing V4L2 subdev.
[ 2.567767] ISL79987 - DEBUG isl7998x_probe: Initializing V4L2 subdev: subdev_flags = 0x5
[ 2.575948] ISL79987 - DEBUG isl7998x_probe: Initializing media controller pads.
[ 2.583349] ISL79987 - DEBUG isl7998x_mc_init: Entering isl7998x_mc_init function.
[ 2.590927] ISL79987 - DEBUG isl7998x_mc_init: Subdevice entity initialization:
[ 2.598242] ISL79987 - DEBUG isl7998x_mc_init: Operations pointer: (____ptrval____)
[ 2.605903] ISL79987 - DEBUG isl7998x_mc_init: Function: 20482
[ 2.611740] ISL79987 - DEBUG isl7998x_mc_init: Pad initialization:
[ 2.617923] ISL79987 - DEBUG isl7998x_mc_init: Pad 1 flags set to MEDIA_PAD_FL_SINK.
[ 2.625669] ISL79987 - DEBUG isl7998x_mc_init: Pad 2 flags set to MEDIA_PAD_FL_SINK.
[ 2.633416] ISL79987 - DEBUG isl7998x_mc_init: Pad 3 flags set to MEDIA_PAD_FL_SINK.
[ 2.641163] ISL79987 - DEBUG isl7998x_mc_init: Pad 4 flags set to MEDIA_PAD_FL_SINK.
[ 2.648910] ISL79987 - DEBUG isl7998x_probe: Setting default format and norm.
[ 2.656048] ISL79987 - DEBUG isl7998x_probe: Initializing mutex.
[ 2.662059] ISL79987 - DEBUG isl7998x_probe: Initializing controls.
[ 2.668328] ISL79987 - DEBUG isl7998x_init_controls: Entering isl7998x_init_controls function.
[ 2.676949] ISL79987 - DEBUG isl7998x_init_controls: Control handler initialized successfully.
[ 2.726119] ISL79987 - DEBUG isl7998x_init_controls: Calculating MIPI link frequency index.
[ 2.734473] ISL79987 - DEBUG isl7998x_init_controls: MIPI lanes: 1
[ 2.740657] ISL79987 - DEBUG isl7998x_init_controls: Inputs: 1
[ 2.746493] ISL79987 - DEBUG isl7998x_init_controls: Link frequency index: 0
[ 2.753545] ISL79987 - DEBUG isl7998x_init_controls: MIPI link frequency index calculated successfully.
[ 2.762951] ISL79987 - DEBUG isl7998x_init_controls: Link frequency control created.
[ 2.770698] ISL79987 - DEBUG isl7998x_init_controls: Link frequency control value: 1162082816
[ 2.779234] ISL79987 - DEBUG isl7998x_init_controls: Creating standard menu items control for test pattern.
[ 2.788977] ISL79987 - DEBUG isl7998x_init_controls: Control handler address: (____ptrval____)
[ 2.797592] ISL79987 - DEBUG isl7998x_init_controls: Control operations address: (____ptrval____)
[ 2.806471] ISL79987 - DEBUG isl7998x_init_controls: Control ID: 10422531
[ 2.813265] ISL79987 - DEBUG isl7998x_init_controls: Menu items count: 1
[ 2.819991] ISL79987 - DEBUG isl7998x_init_controls: Menu items address: (____ptrval____)
[ 2.828182] ISL79987 - DEBUG isl7998x_set_ctrl: Entering isl7998x_set_ctrl function.
[ 2.835930] ISL79987 - DEBUG isl7998x_set_ctrl: Received V4L2_CID_TEST_PATTERN_BARS control. Value: 0
[ 2.845153] ISL79987 - DEBUG isl7998x_set_test_pattern: Entering isl7998x_set_test_pattern function.
[ 2.854288] ISL79987 - DEBUG isl7998x_set_test_pattern: pm_runtime_get_if_in_use successful
[ 2.862642] ISL79987 - DEBUG isl7998x_set_test_pattern: dev: (____ptrval____), regmap: (____ptrval____)
[ 2.872040] ISL79987 - ERROR isl7998x_set_test_pattern: pm_runtime_get_if_in_use failed or device not in use
[ 2.881870] ISL79987 - DEBUG isl7998x_set_ctrl: Returning from isl7998x_set_ctrl. Control ID: 9968258, Return value: 0
[ 2.892569] ISL79987 - DEBUG isl7998x_set_ctrl: Entering isl7998x_set_ctrl function.
[ 2.900314] ISL79987 - DEBUG isl7998x_set_ctrl: Received V4L2_CID_TEST_PATTERN_CHANNELS control. Value: 15
[ 2.909972] ISL79987 - DEBUG isl7998x_set_test_pattern: Entering isl7998x_set_test_pattern function.
[ 2.919106] ISL79987 - DEBUG isl7998x_set_test_pattern: pm_runtime_get_if_in_use successful
[ 2.927458] ISL79987 - DEBUG isl7998x_set_test_pattern: dev: (____ptrval____), regmap: (____ptrval____)
[ 2.936859] ISL79987 - ERROR isl7998x_set_test_pattern: pm_runtime_get_if_in_use failed or device not in use
[ 2.946690] ISL79987 - DEBUG isl7998x_set_ctrl: Returning from isl7998x_set_ctrl. Control ID: 9968256, Return value: 0
[ 2.957389] ISL79987 - DEBUG isl7998x_set_ctrl: Entering isl7998x_set_ctrl function.
[ 2.965135] ISL79987 - DEBUG isl7998x_set_ctrl: Received V4L2_CID_TEST_PATTERN_COLOR control. Value: 0
[ 2.974444] ISL79987 - DEBUG isl7998x_set_test_pattern: Entering isl7998x_set_test_pattern function.
[ 2.983580] ISL79987 - DEBUG isl7998x_set_test_pattern: pm_runtime_get_if_in_use successful
[ 2.991932] ISL79987 - DEBUG isl7998x_set_test_pattern: dev: (____ptrval____), regmap: (____ptrval____)
[ 3.001329] ISL79987 - ERROR isl7998x_set_test_pattern: pm_runtime_get_if_in_use failed or device not in use
[ 3.011160] ISL79987 - DEBUG isl7998x_set_ctrl: Returning from isl7998x_set_ctrl. Control ID: 9968257, Return value: 0
[ 3.021858] ISL79987 - DEBUG isl7998x_set_ctrl: Entering isl7998x_set_ctrl function.
[ 3.029603] ISL79987 - DEBUG isl7998x_set_ctrl: Received V4L2_CID_TEST_PATTERN control. Value: 0
[ 3.038392] ISL79987 - DEBUG isl7998x_set_test_pattern: Entering isl7998x_set_test_pattern function.
[ 3.047526] ISL79987 - DEBUG isl7998x_set_test_pattern: pm_runtime_get_if_in_use successful
[ 3.055880] ISL79987 - DEBUG isl7998x_set_test_pattern: dev: (____ptrval____), regmap: (____ptrval____)
[ 3.065281] ISL79987 - ERROR isl7998x_set_test_pattern: pm_runtime_get_if_in_use failed or device not in use
[ 3.075111] ISL79987 - DEBUG isl7998x_set_ctrl: Returning from isl7998x_set_ctrl. Control ID: 10422531, Return value: 0
[ 3.085897] ISL79987 - DEBUG isl7998x_probe: Controls initialized successfully (0).
[ 3.093561] mxc_mipi-csi 32e30000.mipi_csi: Registered sensor subdevice: isl7998x 2-0044
[ 3.101658] ISL79987 - DEBUG isl7998x_probe: V4L2 subdev registered successfully (0).
[ 3.109491] ISL79987 - DEBUG isl7998x_probe: PM runtime enabled successfully.
Best regards.
Hello @cbl ,
Do you these lines on your boot log?
[ 5.794896] mx8-img-md: Registered sensor subdevice: isl7998x 2-0044 (1)
[ 5.815249] mx8-img-md: created link [isl7998x 2-0044] => [mxc-mipi-csi2.0]
Also can you please share what do you see when you run the:
ls /dev/video*
Hi @Wobaffet,
I have this log in my boot log.
[ 2.326789] mxc_mipi-csi 32e30000.mipi_csi: Registered sensor subdevice: isl7998x 2-003d
When I run "ls /dev/video*" I get the following output.
video0
video1
video2
Could you please help me with this?
Best regards.