Re: [PATCH v2 0/8] Add AMD ISP4 driver

Du, Bin
2025-07-29T03:32:35Z

Thanks Sultan, please see my comments

On 7/27/2025 6:31 AM, Sultan Alsawaf wrote:
> On Fri, Jul 25, 2025 at 06:22:03PM +0800, Du, Bin wrote:
>>> I have the Ryzen AI MAX+ 395 SKU of the HP ZBook Ultra G1a 14.
>>>
>>> I cannot for the life of me get the webcam working under Linux. The webcam works
>>> under Windows so it's not a hardware issue.
>>>
>>> With this patchset and all of the patches you link here applied to 6.15, I get
>>> the following errors:
>>> [ 11.970038] amd_isp_i2c_designware amd_isp_i2c_designware: Unknown Synopsys component type: 0xffffffff
>>> [ 11.973162] amd_isp_i2c_designware amd_isp_i2c_designware: error -19: i2c_dw_probe failed
>>>
>>> With the old ispkernel code from February [1] applied on 6.15, the webcam
>>> indicator LED lights up but there's no image. I see these messages at boot:
>>> [ 9.449005] amd_isp_capture amd_isp_capture.1.auto: amdgpu: AMD ISP v4l2 device registered
>>> [ 9.489005] amd_isp_i2c_designware amd_isp_i2c_designware.2.auto: The OV05 sensor device is added to the ISP I2C bus
>>> [ 9.529012] amd_isp_i2c_designware amd_isp_i2c_designware.2.auto: timeout while trying to abort current transfer
>>> [ 9.554046] amd_isp_i2c_designware amd_isp_i2c_designware.2.auto: timeout in disabling adapter
>>> [ 9.554174] amd_isp_i2c_designware amd_isp_i2c_designware.2.auto: timeout while trying to abort current transfer
>>> [ 9.580022] amd_isp_i2c_designware amd_isp_i2c_designware.2.auto: timeout in disabling adapter
>>>
>>> And then the kernel crashes due to the same use-after-free issues I pointed out
>>> in my other email [2].
>>>
>>> Any idea what's going on?
>>>
>>> [1] https://github.com/amd/Linux_ISP_Kernel/commit/c6d42584fbd0aa42cc91ecf16dc5c4f3dfea0bb4
>>> [2] https://lore.kernel.org/r/aIEiJL83pOYO8lUJ@sultan-box
>> Hi Sultan,
>>
>> [1] is for kernel 6.8, believe it can't be applied to 6.15. We didn't verify
>> on 6.15 but we are really glad to help, would you please provide some info,
>> 1. Suppose you are using Ubuntu, right? What's the version?
>> 2. 6.15, do you mean https://github.com/torvalds/linux/tree/v6.15 ?
>>
>> After your confirmation, we'll see what we can do to enable your camera
>> quickly and easily
>>
>> Regards,
>> Bin
>
> Thank you, Bin!
>
> 1. I'm using Arch Linux with the ISP4-patched libcamera [1].
> 2. Yes, here is my kernel source [2].
>
> I have some more findings:
>
> Currently, the first blocking issue is that the I2C adapter fails to initialize.
> This is because the ISP tile isn't powered on.
>
> I noticed that in the old version of amd_isp_i2c_designware [3], there were
> calls to isp_power_set(), which is available in the old ISP4 sources [4].
> Without isp_power_set(), the I2C adapter always fails to initialize for me.
>
> How is the ISP tile supposed to get powered on in the current ISP4 code?
>
You are correct, yes, i believe the I2C adapter failure is caused by ISP
not being powered up. Currently in latest code, isp_power_set is no
longer available, instead, we implemented genPD for ISP in amdgpu
https://lore.kernel.org/all/20250618221923.3944751-1-pratap.nirujogi@amd.com/
Both amd_isp_i2c and amd_isp_capture are in the power domain and use the
standard runtime PM API to do the power control

> Also, I noticed that the driver init ordering matters between all of the drivers
> needed for the ISP4 camera. In particular, amd_isp_i2c_designware and amd_isp4
> must be initialized before amd_capture, otherwise amd_capture will fail to find
> the fwnode properties for the OV05C10 device attached to the I2C bus.
>
> But there is no driver init ordering enforced, which also caused some issues for
> me until I figured it out. Maybe probe deferral (-EPROBE_DEFER) should be used
> to ensure each driver waits for its dependencies to init first?
>
amd_isp_capture only has dependency on amd_isp4 which is the ACPI
platform driver, it is init before amd_isp_catpure.
Do you see in your side the amd_capture probe failure caused by failing
to read fwnode properties? If that's the case please help to check if
amd_isp4 is loaded successfully

> [1] https://github.com/amd/Linux_ISP_libcamera/tree/3.0
> [2] https://github.com/kerneltoast/kernel_x86_laptop/tree/v6.15-sultan-isp4
> [3] https://lore.kernel.org/all/20250228164519.3453927-1-pratap.nirujogi@amd.com
> [4] https://github.com/amd/Linux_ISP_Kernel/blob/c6d42584fbd0aa42cc91ecf16dc5c4f3dfea0bb4/drivers/media/platform/amd/isp4/isp_hwa.c#L378-L385
>
> Sultan