Re: IPU6 Camera with ov08x40 (OVTI08F4 sensor) HP Spectre 16" Meteor Lake doesn't work

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 18-Dec-24 5:25 PM, duanek@xxxxxxxxxx wrote:
> Dear Jacopo,
> 
> Thanks for forwarding to libcamera - I'm a newbie and am not sure who all should be involved.
> 
> When I specify the camera, I get:
> duane@DuanesSpectre16:~/cameratest$ LIBCAMERA_LOG_LEVELS=0 qcam -c"\_SB_.PC00.LNK0"

<snip>

> [2:42:26.110235367] [29488] DEBUG Buffer framebuffer.cpp:351 Buffer is contiguous
> [2:42:26.113343648] [29488] DEBUG Buffer framebuffer.cpp:351 Buffer is contiguous
> [2:42:26.116390199] [29488] DEBUG Buffer framebuffer.cpp:351 Buffer is contiguous
> [2:42:26.119374839] [29488] DEBUG Buffer framebuffer.cpp:351 Buffer is contiguous
> [2:42:26.125329380] [29471] DEBUG Request request.cpp:369 Created request - cookie: 0
> [2:42:26.125505377] [29471] DEBUG Request request.cpp:369 Created request - cookie: 0
> [2:42:26.125523467] [29471] DEBUG Request request.cpp:369 Created request - cookie: 0
> [2:42:26.125531018] [29471] DEBUG Request request.cpp:369 Created request - cookie: 0
> [2:42:26.125546767] [29471] DEBUG Camera camera.cpp:1360 Starting capture
> [2:42:26.135295574] [29488] DEBUG V4L2 v4l2_videodevice.cpp:1311 /dev/video0[28:cap]: 3 buffers requested.
> [2:42:26.135380273] [29488] DEBUG Buffer framebuffer.cpp:351 Buffer is contiguous
> [2:42:26.135397476] [29488] DEBUG Buffer framebuffer.cpp:351 Buffer is contiguous
> [2:42:26.135407136] [29488] DEBUG Buffer framebuffer.cpp:351 Buffer is contiguous
> [2:42:26.135749405] [29488] DEBUG V4L2 v4l2_videodevice.cpp:1750 /dev/video0[28:cap]: Queueing buffer 0
> [2:42:26.294678108] [29488] DEBUG V4L2 v4l2_videodevice.cpp:1750 /dev/video0[28:cap]: Queueing buffer 1
> [2:42:26.294710299] [29488] DEBUG V4L2 v4l2_videodevice.cpp:1750 /dev/video0[28:cap]: Queueing buffer 2

Ok so we have set the mode on the camera, queued buffers, etc. and
everything is looking great. Except that unfortunately the camera/sensor never
starts streaming or at least no frames are received over CSI.

Which matches with the dmesg from a later email in this thread which has:

[  197.992581] intel_ipu6_isys.isys intel_ipu6.isys.40: stream on Intel IPU6 CSI2 0 failed with -5

As Bingbu mentioned this means that the s_stream pad operation from the ov08x40
sensor driver has failed with -5, which means -EIO.

I strongly suspect that this is the same issue as the one which I have been
debugging with another reporter with a "HP Spectre x360 14-eu0xxx" laptop
with a OVTI08F4 sensor.

What is happening here is that we fail to properly power-on the sensor and
probe() defers identifying the sensor till stream_on time, combined with
a bug where stream_on actually is missing the call to identifty the sensor.

So instead of getting an error about not being able to identify the sensor
instead we get the return value from the first failed ov08x40_write_reg()
call, which returns -EIO instead of propagating the actual error which is
-EREMOTEIO which indicates that the sensor is not responding to its i2c
address which typically means that we have failed to power the sensor on.

I have posted a patch series which attempts to fix this here:
https://lore.kernel.org/linux-media/20241219134940.15472-1-hdegoede@xxxxxxxxxx/

But at least for the reporter with the HP Spectre x360 this does not
fix things, but it does make it much clearer that the i2c communications
with the sensor are failing with -EREMOTEIO.

One interesting aspect here is that the INT3472 sensor-power-supply-device
on the HP Spectre x360 causes the following log messages:

[   11.594911] int3472-discrete INT3472:01: GPIO type 0x12 unknown; the sensor may not work

which you are seeing too. Another interesting data point is that
this warning seen on your laptop:

[   11.595033] int3472-discrete INT3472:01: privacy-led \_SB.GPI0 pin number mismatch _DSM 11 resource 107

Points to \_SB.GPI0 which suggests that the sensor is directly connected
to GPIOs on the main SoC/CPU, and I expect "ls -l /sys/bus/i2c/devices" to
also show that it is using an I2C bus from the main Intel CPU/SoC rather
then using some IO-expander as we typically see on Dell and Lenovo designs.

Duane, I have been getting a lot of emails about IPU6 not working and
I'm sort of loosing track of all of the issues which I'm handling.

So now I'm working on tracking all the issues in Fedora's bugzilla,
I have filed a new issue to track this issue:
https://bugzilla.redhat.com/show_bug.cgi?id=2333331

One thing which I'm wondering is if there maybe is a powerdown GPIO
which is not handled even after my patches. Can you add:
"intel_skl_int3472_discrete.dyndbg" to your kernel commandline,
reboot and then collect a new dmesg output ?

If you are on Fedora then you can add this to your kernel
commandline by running:

sudo grubby --update-kernel=ALL --args="intel_skl_int3472_discrete.dyndbg"

If possible please attach the new dmesg output to:
https://bugzilla.redhat.com/show_bug.cgi?id=2333331

If you don't have a bugzilla account yet, all that is required
to register is an email address, no other personal info is needed.

If you don't want to use bugzilla directly, would it be ok if
I attach your dmesg output there?

Regards,

Hans







[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux