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

Du, Bin
2025-07-29T10:14:01Z

Thanks Sultan, yes, seems much close to the final success. Will have
some internal discussion.

On 7/29/2025 3:45 PM, Sultan Alsawaf wrote:
> On Tue, Jul 29, 2025 at 12:42:16AM -0700, Sultan Alsawaf wrote:
>> On Tue, Jul 29, 2025 at 11:32:23AM +0800, Du, Bin wrote:
>>> 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
>>
>> Thanks for that link, I found it along with another patch on the list to make
>> the fwnode work ("drm/amd/amdgpu: Initialize swnode for ISP MFD device").
>>
>>>> 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
>>
>> I got much further now: there aren't any driver initialization errors, but when
>> I open the camera, there's no image. The camera LED turns on so it's active.
>>
>> And then shortly afterwards, amdgpu dies and the entire system freezes.
>>
>> I've attached my full dmesg, please let me know what you think. Thanks!
>
> I almost forgot, here is my current kernel tree:
> https://github.com/kerneltoast/kernel_x86_laptop/tree/v6.16-sultan-isp4
>
> Sultan