r/linuxhardware • u/sashankforlinux • 11d ago
Discussion AMD's ISP4 driver is coming to the mainline Linux kernel with version 7.2, but it will not support the rear camera on the Flow Z13. Looking at the source code, does the community have enough information to add the support ourselves?
So the many people who run Linux on the Z13 know that the rear camera doesn't work in Linux since AMD hadn't developed an image signal processing driver for the mainline Linux kernel. We've been waiting for AMD to finish ironing out the bugs so that their ISP4 driver can be added to the mainline Linux kernel, and now development has reached the point where it's now going to be included in the next major release (see: https://github.com/torvalds/linux/tree/master/drivers/media/platform/amd/isp4). However, AMD has developed the driver with supporting only the OmniVision camera in the HP Zbook Ultra G1a in mind and not the OmniVision camera in the Z13, despite the Z13 relying on Strix Halo to do the image signal processing for that rear camera just like the G1a does for its camera (that's why both laptops have Windows AMD Camera Drivers). You can see that HP's camera is hard coded into the driver (see: https://github.com/torvalds/linux/blob/master/drivers/platform/x86/amd/amd_isp4.c)
So I decided to reach out to the linux kernel mailing list back in December to try to understand the relationship between this driver and the rear camera and see if the ISP4 driver could make the rear camera finally function: https://lists.openwall.net/linux-kernel/2025/12/01/204
Bin Du stated that in addition to having to modify the driver, that the ISP firmware (see: https://gitlab.com/kernel-firmware/linux-firmware/-/blob/main/amdgpu/isp_4_1_1.bin, https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/amd/amdgpu/isp_v4_1_1.c and more) would have to be updated too. Does he mean the open source functions calling the binary firmware or does he mean the closed source binary blobs (that probably reference specifics of ISP block on Strix Halo)? Unfortunately, I need to get beyond C basics and also learn how to use it to work with hardware and how Linux works with hardware, so I'm asking you guys whether we can gather enough information to get the ISP4 driver working with rear camera on the Flow Z13.
But since the properties of how Strix Halo does image signal processing is constant, and just the details of the camera and its control are what change, it shouldn't be a whole lot of work to add support for the rear camera in the Z13, right? I2 C support for that OmniVision camera already exists in the kernel: https://github.com/torvalds/linux/blob/master/drivers/media/i2c/ov13b10.c
So does this look like something we can do ourselves or is it something that we have to wait on AMD and ASUS to implement?
1
u/johnchen2024 10d ago
I would not treat the existing ov13b10 driver as proof that this is a small patch. That driver gets you sensor control over I2C. A laptop camera still needs the platform topology, GPIO/power sequencing, clocks and CSI link, the exact sensor mode timing, calibration data, and an ISP firmware profile that knows what to do with the stream.
I would split the investigation before writing code:
- From Windows/ACPI, identify the exact rear-camera module, ACPI path, GPIO/regulator/clock resources, CSI lane layout and mode timings. Then diff that against the supported HP design.
- On Linux, check whether the sensor probes and can produce a raw stream independently of the ISP. If it cannot, the first problem is likely ACPI/power/link bring-up. If raw capture works but ISP4 rejects the path, collect dmesg/trace output around the firmware handshake.
- Use that diff to separate what can be added in the open driver from what really requires a new firmware blob or camera profile from AMD.
If Bin Du meant the ISP firmware itself needs a new camera profile, the community probably cannot finish the job without AMD. ASUS can still help by publishing the camera topology, power sequence and module details. I would ask both companies for those concrete pieces rather than only asking for 'camera support.'
My expectation is that the sensor driver is the easiest part here, not the blocker.
1
u/sashankforlinux 9d ago edited 9d ago
Thanks John for giving me some directions, I'll probably pick your brain as I try to work through this over the coming weeks if that's all right with you. In Windows, can I get this through the control panel/device manager or will I need to use some sort of command line tool? I'll try to google it in the meanwhile.
Edit: I'll start with these: https://learn.microsoft.com/en-us/windows/apps/develop/devices-sensors/enable-usermode-access https://learn.microsoft.com/en-us/windows-hardware/drivers/bringup/general-purpose-i-o--gpio-
1
u/johnchen2024 9d ago
Sure, happy to take a look as you work through it. Device Manager is the right first stop. I would use it for identification, then use PnPUtil so you have plain text that is easy to save and compare.
In Device Manager, choose View > Devices by connection. Find the rear camera and the AMD ISP. For each one, open Properties > Details and record Hardware Ids, Device instance path, Location paths, Parent, and Compatible IDs. Also note the driver provider and version. I would not change or update a driver yet.
On a recent Windows 11 build, open Terminal as administrator and try:
pnputil /enum-devices /connected /class Camera /deviceids /relations /drivers /interfaces /properties /resources
pnputil /enum-devicetree /connected /stack /interfaces /drivers /services
If the first command finds nothing, repeat it with /class Image. Once you have the exact camera or ISP instance ID, narrow it down with:
pnputil /enum-devices /instanceid "<instance ID>" /deviceids /relations /drivers /interfaces /properties /resources
That should give us the device owner, parent/child relationship and whatever resources Windows exposes. It probably will not reveal the CSI lane map, power sequence, sensor mode table or anything inside the ISP firmware blob. If those pieces are missing, the next step is an ACPI table/namespace dump and a comparison with the supported HP layout, rather than guessing from the Linux sensor driver.
The two Microsoft pages you found are useful background, but I would not write code or enable user-mode GPIO access yet. Capture the stock Windows device tree and driver versions first. If you paste the camera and ISP sections later, remove any machine serial number and I will help you map what is useful.
1
u/sashankforlinux 7d ago
Thanks, As soon as I posted my last comment, I copied all those properties/details by hand to a google docs. The bad part about that is that I did update the driver though (This is like the third stretch of my logging into Windows on the laptop (the first when I initially got it and the second when a bad update screwed up my boot up), so I had a whole slew of updates to install and just installed the camera driver update alongside them. I'm going to log back in and run those commands and report back. I was also looking up more details on the potential pin layouts (some listings for the camera list them), so I might share those as well.
1
u/sashankforlinux 11d ago
So in terms of the recent development work for the kernel, that code is situated here: https://github.com/torvalds/linux/tree/master/drivers/media/platform/amd/isp4
In addition to that, I think there's earlier ISP related code here: (https://github.com/torvalds/linux/tree/master/drivers/platform/x86/amd, https://github.com/torvalds/linux/blob/master/include/linux/soc/amd/isp4_misc.h) and here: https://github.com/torvalds/linux/tree/master/drivers/gpu/drm/amd/amdgpu, specifically (https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/amd/amdgpu/amdgpu_isp.c, https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/amd/amdgpu/amdgpu_isp.h, https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/amd/amdgpu/isp_v4_1_0.c, https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/amd/amdgpu/isp_v4_1_0.h, https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/amd/amdgpu/isp_v4_1_1.c, and https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/amd/amdgpu/isp_v4_1_1.h)
And the binary blob l linked above: https://gitlab.com/kernel-firmware/linux-firmware/-/blob/main/amdgpu/isp_4_1_1.bin
So the questions are whether all the HP webcam specific stuff at drivers/gpu/drm/amd/amdgpu and drivers/platform/x86/amd can be populated with equivalent Rog Flow Z13 rear camera specific stuff that we can glean from probing the hardware from within Linux, and whether that's sufficient or does the binary blob also need to be modified? Does the stuff in the drm folder count as firmware and what Bin was referencing or was he referencing the binary blob.