linux-surface / kernel

Linux kernel with modifications for Microsoft Surface devices.
Other
124 stars 34 forks source link

Fix camera issues in 6.7.x on SGo2 #146

Closed mojyack closed 8 months ago

mojyack commented 9 months ago

After linux-6.7(or 6.6?), ipu3-imgu and dw9719 are broken. See https://github.com/linux-surface/linux-surface/issues/1323. This patches fix those issues. Tested on Surface Go 2.

StollD commented 8 months ago

First of all sorry for not taking care of this earlier.

I haven't taken a closer look at this, because I am still kinda busy, and the cameras are not my area of expertise. But since upstream seems to ignore this problem as well, I am just going to merge this and trust you that it will fix the cameras.

Do you happen to know what change exactly broke the DW9719 driver? That might be useful to figure out, since reverting entire drivers usually results in a mega-patch that is terribly annoying to rebase.

kbingham commented 8 months ago

"upstream ignores this" have you reported this upstream? Anything I can follow up on or chase?

StollD commented 8 months ago

Admittedly, that came across more snarky than I intended it to be, so my apologies for that.

The patch that fixes IPU3 was sent to LKML in january: https://lore.kernel.org/lkml/20240109080910.2859780-1-hidenorik@chromium.org/

When this first came up I hoped it would trickle down to -stable pretty quickly, so I didn't want to go through the hassle of adding it now and removing it later. But so far it seems like it's not even in 6.8.

kbingham commented 8 months ago

Thanks for the reference. Did that patch fix the issue for you? What are the additional patches you've merged? Are they required for upstream?

Unfortunately if patches are ignored upstream it's because there are more patches than people. Nothing intentional ...

You're well positioned if you have a device or even just sight of the issue to reply and say "this fixes issue X" or " this still breaks" to help get it merged or fixed.

StollD commented 8 months ago

Did that patch fix the issue for you?

Yes, cameras are working again with the latest builds.

What are the additional patches you've merged?

To be completely honest, I have no idea.

The error message that was produced on earlier 6.7 builds is part of the description of the patch I linked. So I assume that media: ipu3-cio2: Further clean up async subdev link creation is not actually required. The DW9719 revert is apparently required because the newer version doesn't work on Surface Go 2.

Like I said, its not my area of expertise, but I wanted this fixed in our builds at least, since more and more people are reporting it.

kbingham commented 8 months ago

Breaking this series down:

mojyack commented 8 months ago

media: staging: ipu3-imgu: Fix multiple calls of s_stream on stream stop The camera works without this, but annoying backtraces occur when stopping a stream. This is written by me for this PR.

hydrandt commented 8 months ago

I can report that the cameras work out of the box on Surface Go with 6.7.9-surface-1. Tested in Cheese (front camera ok; back camera has focus problem and kinda flashing; also the image should be mirrored).