Skip to content

Add camera support for Surface Pro 9#1867

Merged
qzed merged 1 commit into
linux-surface:masterfrom
toorajtaraz:surface-pro9-camera-support
Dec 31, 2025
Merged

Add camera support for Surface Pro 9#1867
qzed merged 1 commit into
linux-surface:masterfrom
toorajtaraz:surface-pro9-camera-support

Conversation

@toorajtaraz

Copy link
Copy Markdown
Contributor

I don't feel like the changes I've made are robust enough to be added to the kernel repo or even be merged in this repo for that matter. So this is just to start a thread with my patch so that the community can test and complete what I've done.

There are a ton of quirks that I cannot fully explain so here goes what I did:

  1. ov5693.c: I just needed to add OVTI5693 ACPI ID to make it bind properly!

  2. ov13858.c: I have no idea why, but this code basically did none of the important things. I'm not experienced enough to know if this was intentional or just incomplete code. So I added regulators "avdd" and pwr1, which is my best guess for the type 0x08, as the only thing that worked was when that pin was treated as a regulator pin. The name, of course, is made up by me. By looking at other driver codes, I added callbacks for suspend and resume to hopefully not waste energy. I'm not sure if that goal was achieved, but it seems to work. I also added code for GPIO reset control and external clock (xvclk) management.

  3. discrete.c (INT3472): Oh this one was a weird one. For some reason, unrecognized GPIO types would make the entire thing fail. I have no idea what 0x10 is supposed to be, but I just ended up skipping it instead of failing. As for 0x08, as mentioned before, I named it "pwr1" and treated it just like a regulator.

  4. ipu-bridge.c: I added OVTI5693 (front camera): 1 lane, 419.2 MHz link frequency and OVTID858 (rear camera): 4 lanes, 540 MHz link frequency. Honestly, the 4 x 540 MHz was a combination of guessing and looking at ov13858. Worked on my first try, so I didn't think twice about it. (I also skimmed through a weird 140-page document I found on the internet about the sensor)

And now it's time for the weird stuff!

At first, I added udev rules that would do the equivalent of these commands:

echo on | sudo tee /sys/bus/i2c/devices/i2c-OVTI5693:00/power/control
echo on | sudo tee /sys/bus/i2c/devices/i2c-OVTID858:00/power/control

When I did that, things would "work" but everything would look greenish! So I removed that rule and figured I'd run these commands manually, but surprise surprise, the privacy LED would turn on but nothing, just a black screen!! I had no idea what to do at that point, so I just echoed "auto" and a couple of "on"s back to back, and it started working. Once it started to work, it would just reliably work every time. I know, it's weird!

I would love to keep working on this until it's ready to use, but I'm a PhD candidate with very limited time. If someone's interested in picking up the rest of the work, I would happily provide all the information I have! I did mention this in an issue, but dumping ACPI tables and decompiling them proved to be invaluable.

Cheers everyone!

P.S.
These are a couple of notes about my machine and the commands I ran:

uname -r
6.16.9-1.surface.fc42.x86_64
gst-launch-1.0 libcamerasrc  ! videoflip method=rotate-180 ! videoconvert ! autovideosink
# Oh yeah, the feed is upside down, hence the flip!

- Add support for OV5693 and OV13858 camera sensors
- Patch Intel INT3472 driver for camera power management
- Update IPU bridge for Surface Pro 9 compatibility
@toorajtaraz

Copy link
Copy Markdown
Contributor Author

@qzed Here are my changes!

I would like to thank you and all the other contributors that make this project possible! I really appreciate the hard work!

@djrscally

Copy link
Copy Markdown

@toorajtaraz OK so

ov5693.c: I just needed to add OVTI5693 ACPI ID to make it bind properly!

Bit annoying that it's necessary but not a problem

ov13858.c: I have no idea why, but this code basically did none of the important things. I'm not experienced enough to know if this was intentional or just incomplete code.

Probably it was designed for platforms where the ACPI itself manages power on / off rather than the driver, so all that's needed is for pm_runtime_resume/suspend() to be called and the ACPI framework manages the rest.

So I added regulators "avdd" and pwr1, which is my best guess for the type 0x08, as the only thing that worked was when that pin was treated as a regulator pin. The name, of course, is made up by me. By looking at other driver codes, I added callbacks for suspend and resume to hopefully not waste energy. I'm not sure if that goal was achieved, but it seems to work. I also added code for GPIO reset control and external clock (xvclk) management.

The code you've added looks broadly fine; might not all be necessary. Do you know which other GPIO types discrete.c handles?

discrete.c (INT3472): Oh this one was a weird one. For some reason, unrecognized GPIO types would make the entire thing fail. I have no idea what 0x10 is supposed to be, but I just ended up skipping it instead of failing. As for 0x08, as mentioned before, I named it "pwr1" and treated it just like a regulator.

Is that definitely necessary for the camera to work? They could be just for a peripheral to the camera like a lens motor or flash.

ipu-bridge.c: I added OVTI5693 (front camera): 1 lane, 419.2 MHz link frequency and OVTID858 (rear camera): 4 lanes, 540 MHz link frequency. Honestly, the 4 x 540 MHz was a combination of guessing and looking at ov13858. Worked on my first try, so I didn't think twice about it. (I also skimmed through a weird 140-page document I found on the internet about the sensor)

If it works roll with it. In theory the link frequency needs to be high enough to support the data-rate that you need to support the resolutions you want to support with the number of lanes that you have, and then is supposed to be fine-tuned to avoid EM interference with the rest of the board. I've never noticed any adverse affect from just sticking with whatever the driver already supports, and changing it to a new value involves calculation settings for the sensor's PLL which can be tiresome.

Tl;dr - ideally we'd figure out what value Windows uses and make sure the driver supports that, but sticking to 540MHz will be fine.

I would love to keep working on this until it's ready to use, but I'm a PhD candidate with very limited time. If someone's interested in picking up the rest of the work, I would happily provide all the information I have! I did mention this in an issue, but dumping ACPI tables and decompiling them proved to be invaluable.

I can help get the changes tidied and into a format that's acceptable upstream, but you've done the work so they should go into linux with your name on them :)

Next steps I think:

  1. Can you list the GPIO type codes that are in use?
  2. Can you confirm that the two that the discrete.c code didn't know how to handle are definitely needed?

@Enivex

Enivex commented Oct 18, 2025

Copy link
Copy Markdown

Would this also apply to the Surface Pro 8?

@mityax

mityax commented Oct 28, 2025

Copy link
Copy Markdown

Would this also apply to the Surface Pro 8?

It appears to be using the same cameras/drivers, though I'm not at all experienced enough to say what this means with regard this patch.

@lukirudaka

Copy link
Copy Markdown

What about the SP7? That's what I've got on hand.

@pythonpoet

Copy link
Copy Markdown

Would this also apply to the Surface Pro 8?

I got it working on a Surface Pro 8 for short, now it doesnt work anymore. Sensor ov5693 has no power anymore

@derkrasseleo

Copy link
Copy Markdown

I am willing to test this on Fedora 43 with SP9 if someone tells me how to apply the patch..

qzed pushed a commit to linux-surface/kernel that referenced this pull request Dec 31, 2025
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras
qzed pushed a commit to linux-surface/kernel that referenced this pull request Dec 31, 2025
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras
@qzed

qzed commented Dec 31, 2025

Copy link
Copy Markdown
Member

Added to our kernel repos in linux-surface/kernel@d205c7e.

@qzed qzed left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@qzed qzed merged commit 1953e53 into linux-surface:master Dec 31, 2025
@anthonysomerset

Copy link
Copy Markdown

i just updated kernel to the latest release and didn't get any joy, only meaningful message in dmesg was

ov13858 i2c-OVTID858:00: probe with driver ov13858 failed with error -22

@qzed qzed mentioned this pull request Dec 31, 2025
@anthonysomerset

Copy link
Copy Markdown

i think i might need to wait for debian-6.17.13-2 to hit the repo as i appear to have 6.17.13-surface-1 still?

@qzed

qzed commented Dec 31, 2025

Copy link
Copy Markdown
Member

@anthonysomerset Yeah, requires 6.17.13-2. Should be available in the repos soon (~15 minutes).

@mityax

mityax commented Dec 31, 2025

Copy link
Copy Markdown

This works for the SP8 back camera too!

@anthonysomerset

anthonysomerset commented Dec 31, 2025

Copy link
Copy Markdown

thanks i must have done something wierd... maybe when trying to install the "additional" ipu6 driver available via ubuntu or something - my system seems to think i have 32 cameras and none of them work via ffplay or cheese

my dmesg is not giving any errors and it also states that it dectected 2 cameras during boot otherwise

$ sudo dmesg | grep -e ipu -e video -e ov13858 -e ov5693
[    6.731927] intel-ipu6 0000:00:05.0: enabling device (0000 -> 0002)
[    6.739506] videodev: Linux video capture interface: v2.00
[    6.755693] intel-ipu6 0000:00:05.0: Found supported sensor OVTI5693:00
[    6.756431] intel-ipu6 0000:00:05.0: Found supported sensor OVTID858:00
[    6.756796] intel-ipu6 0000:00:05.0: Connected 2 cameras
[    6.759007] intel-ipu6 0000:00:05.0: Sending BOOT_LOAD to CSE
[    6.776267] intel-ipu6 0000:00:05.0: Sending AUTHENTICATE_RUN to CSE
[    6.845006] intel-ipu6 0000:00:05.0: CSE authenticate_run done
[    6.845015] intel-ipu6 0000:00:05.0: IPU6-v3[465d] hardware version 5
[    6.851627] ov13858 i2c-OVTID858:00: Clock frequency read: 19200000 (expected 19200000)
[    6.852126] ov13858 i2c-OVTID858:00: Powering up sensor
[    6.852575] ov13858 i2c-OVTID858:00: Clock enabled
[    6.854717] ov13858 i2c-OVTID858:00: Regulators enabled
[    6.876152] ov5693 i2c-OVTI5693:00: supply dovdd not found, using dummy regulator
[    6.876179] ov5693 i2c-OVTI5693:00: supply dvdd not found, using dummy regulator
[    6.885762] ov13858 i2c-OVTID858:00: Reset de-asserted, sensor should be ready
[    6.885793] ov13858 i2c-OVTID858:00: Attempting to read chip ID from register 0x300a
[    6.886114] ov13858 i2c-OVTID858:00: Chip ID read result: ret=0, val=0x00d855 (expected 0x00d855)
[    6.886118] ov13858 i2c-OVTID858:00: Chip ID verified successfully!
[    6.886140] ov13858 i2c-OVTID858:00: Powering down sensor
[    6.886216] ov13858 i2c-OVTID858:00: Regulators disabled
[    6.886607] ov13858 i2c-OVTID858:00: Clock disabled
[    7.217803] ACPI: video: Video Device [GFX0] (multi-head: yes  rom: no  post: no)
asomerset@asomerset-Surface-Pro-9:~ 
$ gst-launch-1.0 libcamerasrc  ! videoflip method=rotate-180 ! videoconvert ! autovideosink
Setting pipeline to PAUSED ...
[0:00:22.523594108] [4338]  INFO Camera camera_manager.cpp:284 libcamera v0.2.0
ERROR: from element /GstPipeline:pipeline0/GstLibcameraSrc:libcamerasrc0: Could not find any supported camera on this system.
Additional debug info:
../src/gstreamer/gstlibcamerasrc.cpp(389): gst_libcamera_src_open (): /GstPipeline:pipeline0/GstLibcameraSrc:libcamerasrc0:
libcamera::CameraMananger::cameras() is empty
ERROR: pipeline doesn't want to preroll.
Failed to set pipeline to PAUSED.
Setting pipeline to NULL ...
Freeing pipeline ...
$ v4l2-ctl --list-devices
ipu6 (PCI:0000:00:05.0):
	/dev/video0
	/dev/video1
	/dev/video2
	/dev/video3
	/dev/video4
	/dev/video5
	/dev/video6
	/dev/video7
	/dev/video8
	/dev/video9
	/dev/video10
	/dev/video11
	/dev/video12
	/dev/video13
	/dev/video14
	/dev/video15
	/dev/video16
	/dev/video17
	/dev/video18
	/dev/video19
	/dev/video20
	/dev/video21
	/dev/video22
	/dev/video23
	/dev/video24
	/dev/video25
	/dev/video26
	/dev/video27
	/dev/video28
	/dev/video29
	/dev/video30
	/dev/video31
	/dev/media0

@Perseus333

Perseus333 commented Dec 31, 2025

Copy link
Copy Markdown

I had a lot of trouble getting it to work on my browser but the steps below made it so that it worked. This method made my camera work on Teams.

Hopefully it helps. :)

Ensure that you have installed the appropriate camera modules. See relevant wiki section for your distro-specific command.

# Create the keys to sign v4l2loopback
cd ~/mok
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -days 36500 -subj "/CN=My Module Signing Key/" -nodes
sudo mokutil --import MOK.der
sudo reboot

# Sign the key with the password when prompted in the blue screen

# Build v4l2loopback from source if you hit issues with the one provided by the package manager
cd ~/dev/
git clone https://github.com/umlaeute/v4l2loopback.git
cd v4l2loopback
make clean
make
# This path may vary, this works for Fedora. You should search where that binary is in your distribution.
sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ~/mok/MOK.priv ~/mok/MOK.der v4l2loopback.ko
sudo make install
sudo depmod -a

# Check which was the device that was created the latest, in my case it was video 32
ls -la /dev/video*

# Toggle the power of the front camera, otherwise you'll probably see black.
echo auto | sudo tee /sys/bus/i2c/devices/i2c-OVTI5693:00/power/control
echo on | sudo tee /sys/bus/i2c/devices/i2c-OVTI5693:00/power/control

# Create the camera
sudo modprobe v4l2loopback exclusive_caps=1 card_label="Virtual Camera" video_nr=32
# Should see "Video Capture" otherwise it won't work in the browser
v4l2-ctl -d /dev/video32 --all | grep -A 10 "Capabilities"

# just command below in another terminal, leave running (in tmux for instance)
gst-launch-1.0 libcamerasrc ! videoflip method=rotate-180 ! videoconvert ! video/x-raw,format=I420 ! v4l2sink device=/dev/video32

# test that it runs
ffplay /dev/video32

# Check on the browser if it works

@velocity08

velocity08 commented Dec 31, 2025

Copy link
Copy Markdown

I had a lot of trouble getting it to work on my browser but the steps below made it so that it worked. This method made my camera work on Teams.

Hopefully it helps. :)

# Create the keys to sign v4l2loopback
cd ~/mok
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -days 36500 -subj "/CN=My Module Signing Key/" -nodes
sudo mokutil --import MOK.der
sudo reboot

# Sign the key with the password when prompted in the blue screen

# Build v4l2loopback from source if you hit issues with the one provided by the package manager
cd ~/dev/
git clone https://github.com/umlaeute/v4l2loopback.git
cd v4l2loopback
make clean
make
sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ~/mok/MOK.priv ~/mok/MOK.der v4l2loopback.ko
sudo make install
sudo depmod -a

# Check which was the device that was created the latest, in my case it was video 32
ls -la /dev/video*

# Create the camera
sudo modprobe v4l2loopback exclusive_caps=1 card_label="Virtual Camera" video_nr=32
# Should see "Video Capture" otherwise it won't work in the browser
v4l2-ctl -d /dev/video32 --all | grep -A 10 "Capabilities"

# just command below in another terminal, leave running (in tmux for instance)
gst-launch-1.0 libcamerasrc ! videoflip method=rotate-180 ! videoconvert ! video/x-raw,format=I420 ! v4l2sink device=/dev/video32

# test that it runs
ffplay /dev/video32

# Check on the browser if it works

thanks for posting this work around :)

Im trying to follow the steps but not 100% sure im getting the correct outputs.

ive posted the outputs below for review.

`
sp8:~/dev/v4l2loopback$ make clean
grep: /etc/dkms/framework.conf: No such file or directory
grep: /etc/dkms/framework.conf.d/*.conf: No such file or directory

++++++ To sign the module, you must set KBUILD_SIGN_KEY/KBUILD_SIGN_CERT to point to the signing key/certificate!
++++++ For your convenience, we try to read these variables as 'mok_signing_key' resp. 'mok_certificate' from /etc/dkms/framework.conf /etc/dkms/framework.conf.d/*.conf

++++++ If your certificate requires a password, pass it via the KBUILD_SIGN_PIN env-var!
grep: /etc/dkms/framework.conf: No such file or directory
grep: /etc/dkms/framework.conf.d/*.conf: No such file or directory
++++++ E.g. using 'export KBUILD_SIGN_PIN; read -s -p "Passphrase for signing key : " KBUILD_SIGN_PIN; sudo --preserve-env=KBUILD_SIGN_PIN make sign'

rm -f *~
rm -f Module.symvers Module.markers modules.order
make -C /lib/modules/uname -r/build M=/home/gspot/dev/v4l2loopback clean
make[1]: Entering directory '/usr/src/linux-headers-6.18.2-surface-1'
make[2]: Entering directory '/home/gspot/dev/v4l2loopback'
make[2]: Leaving directory '/home/gspot/dev/v4l2loopback'
make[1]: Leaving directory '/usr/src/linux-headers-6.18.2-surface-1'
make -C utils clean
make[1]: Entering directory '/home/gspot/dev/v4l2loopback/utils'
rm v4l2loopback-ctl
rm v4l2loopback-ctl.o
rm: cannot remove 'v4l2loopback-ctl.o': No such file or directory
make[1]: [Makefile:21: clean] Error 1 (ignored)
make[1]: Leaving directory '/home/gspot/dev/v4l2loopback/utils'
sp8:~/dev/v4l2loopback$ ls -lha

sp8:~/dev/v4l2loopback$ make
grep: /etc/dkms/framework.conf: No such file or directory
grep: /etc/dkms/framework.conf.d/*.conf: No such file or directory

++++++ To sign the module, you must set KBUILD_SIGN_KEY/KBUILD_SIGN_CERT to point to the signing key/certificate!
++++++ For your convenience, we try to read these variables as 'mok_signing_key' resp. 'mok_certificate' from /etc/dkms/framework.conf /etc/dkms/framework.conf.d/*.conf

++++++ If your certificate requires a password, pass it via the KBUILD_SIGN_PIN env-var!
grep: /etc/dkms/framework.conf: No such file or directory
grep: /etc/dkms/framework.conf.d/*.conf: No such file or directory
++++++ E.g. using 'export KBUILD_SIGN_PIN; read -s -p "Passphrase for signing key : " KBUILD_SIGN_PIN; sudo --preserve-env=KBUILD_SIGN_PIN make sign'

Building v4l2-loopback driver...
make -C /lib/modules/uname -r/build M=/home/gspot/dev/v4l2loopback KCPPFLAGS="-DSNAPSHOT_VERSION='"0.15.3"'" modules
make[1]: Entering directory '/usr/src/linux-headers-6.18.2-surface-1'
make[2]: Entering directory '/home/gspot/dev/v4l2loopback'
warning: the compiler differs from the one used to build the kernel
The kernel was built by: gcc (Ubuntu 11.4.0-1ubuntu122.04.2) 11.4.0
You are using: gcc (Ubuntu 13.3.0-6ubuntu2
24.04) 13.3.0
CC [M] v4l2loopback.o
MODPOST Module.symvers
CC [M] v4l2loopback.mod.o
CC [M] .module-common.o
LD [M] v4l2loopback.ko
make[2]: Leaving directory '/home/gspot/dev/v4l2loopback'
make[1]: Leaving directory '/usr/src/linux-headers-6.18.2-surface-1'
make -C utils V4L2LOOPBACK_SNAPSHOT_VERSION=0.15.3
make[1]: Entering directory '/home/gspot/dev/v4l2loopback/utils'
cc -I.. -DSNAPSHOT_VERSION='"0.15.3"' -c -o v4l2loopback-ctl.o v4l2loopback-ctl.c
cc v4l2loopback-ctl.o -o v4l2loopback-ctl
make[1]: Leaving directory '/home/gspot/dev/v4l2loopback/utils'

p8:~/dev/v4l2loopback$ sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ~/mok/MOK.priv ~/mok/MOK.der v4l2loopback.ko
[sudo] password for gspot:
sudo: /usr/src/kernels/6.18.2-surface-1/scripts/sign-file: command not found

resolved the above issue below with different file path

sp8:~/dev/v4l2loopback$ sudo /usr/src/linux-headers-6.18.2-surface-1/scripts/sign-file sha256 ~/mok/MOK.priv ~/mok/MOK.der v4l2loopback.ko

sp8:~/dev/v4l2loopback$ sudo make install
grep: /etc/dkms/framework.conf: No such file or directory
grep: /etc/dkms/framework.conf.d/*.conf: No such file or directory

++++++ To sign the module, you must set KBUILD_SIGN_KEY/KBUILD_SIGN_CERT to point to the signing key/certificate!
++++++ For your convenience, we try to read these variables as 'mok_signing_key' resp. 'mok_certificate' from /etc/dkms/framework.conf /etc/dkms/framework.conf.d/*.conf

++++++ If your certificate requires a password, pass it via the KBUILD_SIGN_PIN env-var!
grep: /etc/dkms/framework.conf: No such file or directory
grep: /etc/dkms/framework.conf.d/*.conf: No such file or directory
++++++ E.g. using 'export KBUILD_SIGN_PIN; read -s -p "Passphrase for signing key : " KBUILD_SIGN_PIN; sudo --preserve-env=KBUILD_SIGN_PIN make sign'

make -C /lib/modules/uname -r/build M=/home/gspot/dev/v4l2loopback modules_install
make[1]: Entering directory '/usr/src/linux-headers-6.18.2-surface-1'
make[2]: Entering directory '/home/gspot/dev/v4l2loopback'
INSTALL /lib/modules/6.18.2-surface-1/updates/v4l2loopback.ko
SIGN /lib/modules/6.18.2-surface-1/updates/v4l2loopback.ko
At main.c:171:

  • SSL error:FFFFFFFF80000002:system library::No such file or directory: ../crypto/bio/bss_file.c:67
  • SSL error:10000080:BIO routines::no such file: ../crypto/bio/bss_file.c:75
    sign-file: /usr/src/linux-headers-6.18.2-surface-1/certs/signing_key.pem
    DEPMOD /lib/modules/6.18.2-surface-1
    Warning: modules_install: missing 'System.map' file. Skipping depmod.
    make[2]: Leaving directory '/home/gspot/dev/v4l2loopback'
    make[1]: Leaving directory '/usr/src/linux-headers-6.18.2-surface-1'

SUCCESS (if you got 'SSL errors' above, you can safely ignore them)

sp8:~/dev/v4l2loopback$ sudo depmod -a

sp8:/dev/v4l2loopback$ sudo modprobe v4l2loopback exclusive_caps=1 card_label="Virtual Camera" video_nr=63
gspot@gspots-sp8:
/dev/v4l2loopback$ v4l2-ctl -d /dev/video63 --all | grep -A 10 "Capabilities"
Capabilities : 0xa4a00001
Video Capture
Metadata Capture
I/O MC
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x24a00001
Video Capture
Metadata Capture
I/O MC
Streaming
Extended Pix Format
Media Driver Info:
Driver name : intel-ipu6
Model : ipu6
Serial :

sp8:~/dev/v4l2loopback$ gst-launch-1.0 libcamerasrc ! videoflip method=rotate-180 ! videoconvert ! video/x-raw,format=I420 ! v4l2sink device=/dev/video63
WARNING: erroneous pipeline: no element "libcamerasrc"

`

i'm pretty sure the cert was accepted on reboot but i could be wrong, as i don't really know what i'm looking for with the output its hard to pick what is incorrect and whats acceptable - any feedback would be greatly appreciated :)

""Cheers
G

@Perseus333

Perseus333 commented Jan 1, 2026

Copy link
Copy Markdown

resolved the above issue below with different file path

Yeah, @velocity08, you're right, that path is apparently only for Fedora, different distros have different paths for that executable.

WARNING: erroneous pipeline: no element "libcamerasrc"

You might need to install the appropriate modules, check the relevant wiki section for the install commands.

Hopefully that should work!

Also, thanks for pointing out that issue.

qzed pushed a commit to linux-surface/kernel that referenced this pull request Jan 4, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request Apr 23, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

Link: https://github.com/linux-surface/linux-surface/tree/54cbb6c15e5fd226f8ff19af15e7c3dc3eb86f3d
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>

[Xi Ruoyao: remove some code conflicting with the upstream change.]

Signed-off-by: Xi Ruoyao <xry111@xry111.site>
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request Apr 30, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

Link: https://github.com/linux-surface/linux-surface/tree/54cbb6c15e5fd226f8ff19af15e7c3dc3eb86f3d
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>

[Xi Ruoyao: remove some code conflicting with the upstream change.]

Signed-off-by: Xi Ruoyao <xry111@xry111.site>
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request May 1, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request May 1, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request May 1, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request May 1, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

[ Mingcong Bai: Since commit 2a7b765 ("platform/x86: int3472: Handle
  GPIO type 0x10 (DOVDD)") took the 0x10 entry used by the original patch
  for Surface Pro 9's secondary power rail, change the latter to 0x11 to
  adapt to this change.

  Link: linux-surface/linux-surface#2057
  Link: linux-surface/linux-surface#2079 ]

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request May 2, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

[ Mingcong Bai: Since commit 2a7b765 ("platform/x86: int3472: Handle
  GPIO type 0x10 (DOVDD)") took the 0x10 entry used by the original patch
  for Surface Pro 9's secondary power rail, change the latter to 0x11 to
  adapt to this change.

  Link: linux-surface/linux-surface#2057
  Link: linux-surface/linux-surface#2079 ]

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request May 2, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

[ Mingcong Bai: Since commit 2a7b765 ("platform/x86: int3472: Handle
  GPIO type 0x10 (DOVDD)") took the 0x10 entry used by the original patch
  for Surface Pro 9's secondary power rail, change the latter to 0x11 to
  adapt to this change.

  Link: linux-surface/linux-surface#2057
  Link: linux-surface/linux-surface#2079 ]

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request May 2, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

[ Mingcong Bai: Since commit 2a7b765 ("platform/x86: int3472: Handle
  GPIO type 0x10 (DOVDD)") took the 0x10 entry used by the original patch
  for Surface Pro 9's secondary power rail, change the latter to 0x11 to
  adapt to this change.

  Link: linux-surface/linux-surface#2057
  Link: linux-surface/linux-surface#2079 ]

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request May 7, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

[ Mingcong Bai: Since commit 2a7b765 ("platform/x86: int3472: Handle
  GPIO type 0x10 (DOVDD)") took the 0x10 entry used by the original patch
  for Surface Pro 9's secondary power rail, change the latter to 0x11 to
  adapt to this change.

  Link: linux-surface/linux-surface#2057
  Link: linux-surface/linux-surface#2079 ]

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
FaceFTW pushed a commit to FaceFTW/kernel that referenced this pull request May 10, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras
FaceFTW pushed a commit to FaceFTW/kernel that referenced this pull request May 10, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras
sdhz150 pushed a commit to sdhz150/linux-bbr3 that referenced this pull request May 10, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request May 10, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

[ Mingcong Bai: Since commit 2a7b765 ("platform/x86: int3472: Handle
  GPIO type 0x10 (DOVDD)") took the 0x10 entry used by the original patch
  for Surface Pro 9's secondary power rail, change the latter to 0x11 to
  adapt to this change.

  Link: linux-surface/linux-surface#2057
  Link: linux-surface/linux-surface#2079 ]

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request May 12, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

[ Mingcong Bai: Since commit 2a7b765 ("platform/x86: int3472: Handle
  GPIO type 0x10 (DOVDD)") took the 0x10 entry used by the original patch
  for Surface Pro 9's secondary power rail, change the latter to 0x11 to
  adapt to this change.

  Link: linux-surface/linux-surface#2057
  Link: linux-surface/linux-surface#2079 ]

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
sdhz150 pushed a commit to sdhz150/linux-bbr3 that referenced this pull request May 19, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras
sdhz150 pushed a commit to sdhz150/linux-bbr3 that referenced this pull request May 19, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras
RevySR pushed a commit to RevySR/linux that referenced this pull request May 19, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

[ Mingcong Bai: Since commit 2a7b765 ("platform/x86: int3472: Handle
  GPIO type 0x10 (DOVDD)") took the 0x10 entry used by the original patch
  for Surface Pro 9's secondary power rail, change the latter to 0x11 to
  adapt to this change.

  Link: linux-surface/linux-surface#2057
  Link: linux-surface/linux-surface#2079 ]

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request May 21, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

[ Mingcong Bai: Since commit 2a7b765 ("platform/x86: int3472: Handle
  GPIO type 0x10 (DOVDD)") took the 0x10 entry used by the original patch
  for Surface Pro 9's secondary power rail, change the latter to 0x11 to
  adapt to this change.

  Link: linux-surface/linux-surface#2057
  Link: linux-surface/linux-surface#2079 ]

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request May 24, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

[ Mingcong Bai: Since commit 2a7b765 ("platform/x86: int3472: Handle
  GPIO type 0x10 (DOVDD)") took the 0x10 entry used by the original patch
  for Surface Pro 9's secondary power rail, change the latter to 0x11 to
  adapt to this change.

  Link: linux-surface/linux-surface#2057
  Link: linux-surface/linux-surface#2079 ]

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
RevySR pushed a commit to RevySR/linux that referenced this pull request May 25, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

[ Mingcong Bai: Since commit 2a7b765 ("platform/x86: int3472: Handle
  GPIO type 0x10 (DOVDD)") took the 0x10 entry used by the original patch
  for Surface Pro 9's secondary power rail, change the latter to 0x11 to
  adapt to this change.

  Link: linux-surface/linux-surface#2057
  Link: linux-surface/linux-surface#2079 ]

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request May 25, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

[ Mingcong Bai: Since commit 2a7b765 ("platform/x86: int3472: Handle
  GPIO type 0x10 (DOVDD)") took the 0x10 entry used by the original patch
  for Surface Pro 9's secondary power rail, change the latter to 0x11 to
  adapt to this change.

  Link: linux-surface/linux-surface#2057
  Link: linux-surface/linux-surface#2079 ]

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request May 25, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

[ Mingcong Bai: Since commit 2a7b765 ("platform/x86: int3472: Handle
  GPIO type 0x10 (DOVDD)") took the 0x10 entry used by the original patch
  for Surface Pro 9's secondary power rail, change the latter to 0x11 to
  adapt to this change.

  Link: linux-surface/linux-surface#2057
  Link: linux-surface/linux-surface#2079 ]

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request May 26, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

[ Mingcong Bai: Since commit 2a7b765 ("platform/x86: int3472: Handle
  GPIO type 0x10 (DOVDD)") took the 0x10 entry used by the original patch
  for Surface Pro 9's secondary power rail, change the latter to 0x11 to
  adapt to this change.

  Link: linux-surface/linux-surface#2057
  Link: linux-surface/linux-surface#2079 ]

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request Jun 3, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

[ Mingcong Bai: Since commit 2a7b765 ("platform/x86: int3472: Handle
  GPIO type 0x10 (DOVDD)") took the 0x10 entry used by the original patch
  for Surface Pro 9's secondary power rail, change the latter to 0x11 to
  adapt to this change.

  Link: linux-surface/linux-surface#2057
  Link: linux-surface/linux-surface#2079 ]

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request Jun 3, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

[ Mingcong Bai: Since commit 2a7b765 ("platform/x86: int3472: Handle
  GPIO type 0x10 (DOVDD)") took the 0x10 entry used by the original patch
  for Surface Pro 9's secondary power rail, change the latter to 0x11 to
  adapt to this change.

  Link: linux-surface/linux-surface#2057
  Link: linux-surface/linux-surface#2079 ]

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request Jun 4, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

[ Mingcong Bai: Since commit 2a7b765 ("platform/x86: int3472: Handle
  GPIO type 0x10 (DOVDD)") took the 0x10 entry used by the original patch
  for Surface Pro 9's secondary power rail, change the latter to 0x11 to
  adapt to this change.

  Link: linux-surface/linux-surface#2057
  Link: linux-surface/linux-surface#2079 ]

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
xry111 pushed a commit to AOSC-Tracking/linux that referenced this pull request Jun 4, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

[ Mingcong Bai: Since commit 2a7b765 ("platform/x86: int3472: Handle
  GPIO type 0x10 (DOVDD)") took the 0x10 entry used by the original patch
  for Surface Pro 9's secondary power rail, change the latter to 0x11 to
  adapt to this change.

  Link: linux-surface/linux-surface#2057
  Link: linux-surface/linux-surface#2079 ]

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
MingcongBai pushed a commit to AOSC-Tracking/linux that referenced this pull request Jun 7, 2026
Experimental camera support for the Surface Pro 9.

Link: linux-surface/linux-surface#1867
Patchset: cameras

[ Mingcong Bai: Since commit 2a7b765 ("platform/x86: int3472: Handle
  GPIO type 0x10 (DOVDD)") took the 0x10 entry used by the original patch
  for Surface Pro 9's secondary power rail, change the latter to 0x11 to
  adapt to this change.

  Link: linux-surface/linux-surface#2057
  Link: linux-surface/linux-surface#2079 ]

Link: https://github.com/linux-surface/linux-surface/tree/4c136ec928ce0b458562c7533852db67a8e0dc91
Signed-off-by: Mingcong Bai <jeffbai@aosc.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.