ERROR CameraSensor camera_sensor.cpp:127 No image format found
Dave Stevenson
dave.stevenson at raspberrypi.com
Mon Mar 11 15:03:46 CET 2024
Hi Deva
On Sat, 9 Mar 2024 at 11:00, deva seetharam <tagsense at yahoo.com> wrote:
>
> Greetings!!
>
> For a new image sensor (due to a restrictive NDA, cannot reveal the manufacturer or the part number), I have to create the device tree source file and the kernel driver. I have compiled and installed the device tree and kernel module. I see the kernel module is getting loaded and the overlay is getting accepted into device tree. However, when I run libcamera, I get the following error:
>
> [0:00:41.253567807] [1920] ERROR CameraSensor camera_sensor.cpp:127 'xyz123 10-0036': No image format found
> [0:00:41.253599677] [1920] ERROR RPI vc4.cpp:216 Failed to register camera xyz123 10-0036: -22
Address 0x36 - that'll likely be Omnivision then.
> Please suggest how this error can be fixed. Thank you!
>
> I am also including the dts file, (relevant portions of) lsmod and dmesg outputs.
>
>
> the device tree overlay file is as follows:
> <pre>
> /dts-v1/;
> /plugin/;
>
>
> #include <dt-bindings/gpio/gpio.h>
>
>
> / {
> compatible = "brcm,bcm2835";
>
>
> fragment at 0 {
> target = <&i2c0if>;
> __overlay__ {
> status = "okay";
> };
> };
>
>
> clk_frag: fragment at 1 {
> target = <&cam1_clk>;
> __overlay__ {
> status = "okay";
> clock-frequency = <24000000>;
> };
> };
>
>
> i2c_frag: fragment at 100 {
> target = <&i2c_csi_dsi>;
> __overlay__ {
> #address-cells = <1>;
> #size-cells = <0>;
> status = "okay";
>
>
> xyz123: xyz123 at 36 {
> compatible = "abc,xyz123";
> reg = <0x36>;
>
>
> clocks = <&cam1_clk>;
> clock-names = "xclk";
>
>
> port {
> cam_endpoint: endpoint {
> clock-lanes = <0>;
> data-lanes = <1 2>;
> clock-noncontinuous;
> link-frequencies = /bits/ 64 <192000000>;
> };
> };
> };
> };
> };
>
>
> csi_frag: fragment at 101 {
> target = <&csi1>;
> csi: __overlay__ {
> status = "okay";
> brcm,media-controller;
>
>
> port {
> csi_ep: endpoint {
> remote-endpoint = <&cam_endpoint>;
> clock-lanes = <0>;
> data-lanes = <1 2>;
> clock-noncontinuous;
> };
> };
> };
> };
>
>
> };
>
>
> &xyz123 {
> status = "okay";
> default-width = <720>;
> default-height = <720>;
> };
>
>
> &cam_endpoint {
> remote-endpoint = <&csi_ep>;
> };
>
>
>
> the output of lsmod is as follows:
> <pre>
> xyz123 24576 1
> v4l2_fwnode 24576 2 xyz123,bcm2835_unicam
> v4l2_async 24576 3 v4l2_fwnode,xyz123,bcm2835_unicam
> videodev 278528 10 v4l2_async,bcm2835_codec,xyz123,videobuf2_v4l2,bcm2835_unicam,bcm2835_v4l2,videobuf2_common,rpivid_hevc,v4l2_mem2mem,bcm2835_isp
> mc 61440 10 v4l2_async,videodev,bcm2835_codec,xyz123,videobuf2_v4l2,bcm2835_unicam,videobuf2_common,rpivid_hevc,v4l2_mem2mem,bcm2835_isp
>
> </pre>
>
> the output of dmesg is as follows:
> [Sat Mar 9 15:58:15 2024] xyz123: loading out-of-tree module taints kernel.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_probe has been invoked to probe xyz123.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: allocated memory for xyz123.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_check_hwcfg has been invoked to check xyz123 hardware config.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: number of csi lanes: 2.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_power_on has been invoked to power xyz123 up.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_write_registers has been invoked with number of registers set to: 03
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_write_register has been invoked with address: 0103
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_write_register has been invoked with address: 3205
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_write_register has been invoked with address: 0100
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_write_register has been invoked with address: 3205
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_identify_module has been invoked to identify xyz123.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_read_register has been invoked with address: 0x302A
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_read_register prepared a I2C write message with: addr: 0x36, flags: 0x00, len: 0x02
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_read_register prepared a I2C read message with: addr: 0x36, flags: 0x01, len: 0x01
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: chip id first byte matches: 4 == 4
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_read_register has been invoked with address: 0x302B
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_read_register prepared a I2C write message with: addr: 0x36, flags: 0x00, len: 0x02
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_read_register prepared a I2C read message with: addr: 0x36, flags: 0x01, len: 0x01
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: chip id second byte matches: 28 == 28
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_init_ctrls has been invoked to initialize controls of xyz123.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_init_ctrls succesfully initialized controls
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: default pixel rate of xyz123: 10804320.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: current link frequency of xyz123: 192000000.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: default vblank of xyz123: 8.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: default hblank of xyz123: 8.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: Default width specified in device tree: 720
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: Default height specified in device tree: 720
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_set_default_format has been invoked to set default format of xyz123.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_set_default_format has set code to 12295.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_set_default_format has set colorspace to 8.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_set_default_format has set ycbcr_enc to 1.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_set_default_format has set quantization to 1.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_set_default_format has set xfer_func to 2.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_set_default_format has set width to 720.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_set_default_format has set height to 720.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_set_default_format has set field to 1.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_set_default_format has completed.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_probe has initialized media entity pads for xyz123 to 0 and 2.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_probe has registered the subdevice of xyz123.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_probe has completed probing xyz123.
> [Sat Mar 9 15:58:15 2024] xyz123 10-0036: xyz123_power_off has been invoked to power xyz123 down.
> [Sat Mar 9 15:58:17 2024] xyz123 10-0036: Consider updating driver xyz123 to match on endpoints
> [Sat Mar 9 15:58:19 2024] xyz123 10-0036: xyz123_open has been invoked to open xyz123.
> [Sat Mar 9 15:58:19 2024] xyz123 10-0036: xyz123_get_format_code has been invoked to get format code of xyz123.
> [Sat Mar 9 15:58:19 2024] xyz123 10-0036: h_flip: 0, v_flip: 0, code_index: 0 and 12295 of xyz123.
> [Sat Mar 9 15:58:22 2024] xyz123 10-0036: xyz123_open has been invoked to open xyz123.
> [Sat Mar 9 15:58:22 2024] xyz123 10-0036: xyz123_get_format_code has been invoked to get format code of xyz123.
> [Sat Mar 9 15:58:22 2024] xyz123 10-0036: h_flip: 0, v_flip: 0, code_index: 0 and 12295 of xyz123.
> [Sat Mar 9 15:58:22 2024] xyz123 10-0036: xyz123_enum_mbus_code has been invoked.
> [Sat Mar 9 15:58:22 2024] xyz123 10-0036: In xyz123_enum_mbus_code, code-> index has reached limit: 0.
That looks like the likely issue if your limit is 0, so you're not
returning the supported formats via enum_mbus_code.
Confirm what "v4l2-ctl -d /dev/v4l-subdev0 --list-subdev-mbus-codes
0" returns. It should be along the lines of:
pi at raspberrypi:~ $ v4l2-ctl -d /dev/v4l-subdev0 --list-subdev-mbus-codes 0
ioctl: VIDIOC_SUBDEV_ENUM_MBUS_CODE (pad=0)
0x3007: MEDIA_BUS_FMT_SBGGR10_1X10
Based on your code of 12295 (0x3007 aka MEDIA_BUS_FMT_SBGGR10_1X10)
from set_default_format, that should be returned for index 0, and
-EINVAL otherwise.
As Laurent says, anything more will need reviewing of the driver source.
Dave
> [Sat Mar 9 15:58:24 2024] xyz123 10-0036: xyz123_enum_mbus_code has been invoked.
> [Sat Mar 9 15:58:24 2024] xyz123 10-0036: In xyz123_enum_mbus_code, code-> index has reached limit: 0.
> [Sat Mar 9 15:58:24 2024] xyz123 10-0036: xyz123_enum_mbus_code has been invoked.
> [Sat Mar 9 15:58:24 2024] xyz123 10-0036: In xyz123_enum_mbus_code, code-> index has reached limit: 0.
> [Sat Mar 9 15:58:32 2024] xyz123 10-0036: xyz123_open has been invoked to open xyz123.
> [Sat Mar 9 15:58:32 2024] xyz123 10-0036: xyz123_get_format_code has been invoked to get format code of xyz123.
> [Sat Mar 9 15:58:32 2024] xyz123 10-0036: h_flip: 0, v_flip: 0, code_index: 0 and 12295 of xyz123.
> [Sat Mar 9 15:58:32 2024] xyz123 10-0036: xyz123_enum_mbus_code has been invoked.
> [Sat Mar 9 15:58:32 2024] xyz123 10-0036: In xyz123_enum_mbus_code, code-> index has reached limit: 0.
> [Sat Mar 9 15:58:33 2024] xyz123 10-0036: xyz123_enum_mbus_code has been invoked.
> [Sat Mar 9 15:58:33 2024] xyz123 10-0036: In xyz123_enum_mbus_code, code-> index has reached limit: 0.
> [Sat Mar 9 15:58:33 2024] xyz123 10-0036: xyz123_enum_mbus_code has been invoked.
> [Sat Mar 9 15:58:33 2024] xyz123 10-0036: In xyz123_enum_mbus_code, code-> index has reached limit: 0.
> [Sat Mar 9 15:58:51 2024] xyz123 10-0036: xyz123_open has been invoked to open xyz123.
> [Sat Mar 9 15:58:51 2024] xyz123 10-0036: xyz123_get_format_code has been invoked to get format code of xyz123.
> [Sat Mar 9 15:58:51 2024] xyz123 10-0036: h_flip: 0, v_flip: 0, code_index: 0 and 12295 of xyz123.
> [Sat Mar 9 15:58:51 2024] xyz123 10-0036: xyz123_enum_mbus_code has been invoked.
> [Sat Mar 9 15:58:51 2024] xyz123 10-0036: In xyz123_enum_mbus_code, code-> index has reached limit: 0.
>
>
>
More information about the libcamera-devel
mailing list