On Tue, Jun 16, 2026 at 8:59 AM Tiago Dourado <[email protected]> wrote:
>
> The jpeg_v5_3_0_process_interrupt function is identical to
> jpeg_v5_0_0_process_interrupt. Remove the duplicate implementation
> in jpeg_v5_3_0 and reuse the jpeg_v5_0_0 version via a macro alias.
> Export jpeg_v5_0_0_process_interrupt through jpeg_v5_0_0.h to allow
> cross-version reuse.
>
> Signed-off-by: Tiago Dourado <[email protected]>
> Co-developed-by: Luiz Fernandes <[email protected]>
> Signed-off-by: Luiz Fernandes <[email protected]>
> ---
> drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.c | 2 +-
> drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.h | 4 ++++
> drivers/gpu/drm/amd/amdgpu/jpeg_v5_3_0.c | 22 +++-------------------
> 3 files changed, 8 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.c
> b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.c
> index 46bf15dce..4575d1f9d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.c
> @@ -625,7 +625,7 @@ static int jpeg_v5_0_0_set_interrupt_state(struct
> amdgpu_device *adev,
> return 0;
> }
>
> -static int jpeg_v5_0_0_process_interrupt(struct amdgpu_device *adev,
> +int jpeg_v5_0_0_process_interrupt(struct amdgpu_device *adev,
> struct amdgpu_irq_src *source,
> struct amdgpu_iv_entry *entry)
> {
> diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.h
> b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.h
> index 5abb96159..4eeb0c147 100644
> --- a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.h
> +++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.h
> @@ -32,4 +32,8 @@
>
> extern const struct amdgpu_ip_block_version jpeg_v5_0_0_ip_block;
>
> +int jpeg_v5_0_0_process_interrupt(struct amdgpu_device *adev,
> + struct amdgpu_irq_src *source,
> + struct amdgpu_iv_entry *entry);
> +
> #endif /* __JPEG_V5_0_0_H__ */
> diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_3_0.c
> b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_3_0.c
> index 1821dced9..92aaf5dea 100644
> --- a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_3_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_3_0.c
> @@ -32,8 +32,11 @@
> #include "vcn/vcn_5_3_0_offset.h"
> #include "vcn/vcn_5_3_0_sh_mask.h"
> #include "ivsrcid/vcn/irqsrcs_vcn_5_0.h"
> +#include "jpeg_v5_0_0.h"
> #include "jpeg_v5_3_0.h"
>
> +#define jpeg_v5_3_0_process_interrupt jpeg_v5_0_0_process_interrupt
Same comment as patch 1.
Alex
> +
> static void jpeg_v5_3_0_set_dec_ring_funcs(struct amdgpu_device *adev);
> static void jpeg_v5_3_0_set_irq_funcs(struct amdgpu_device *adev);
> static int jpeg_v5_3_0_set_powergating_state(struct amdgpu_ip_block
> *ip_block,
> @@ -608,25 +611,6 @@ static int jpeg_v5_3_0_set_interrupt_state(struct
> amdgpu_device *adev,
> return 0;
> }
>
> -static int jpeg_v5_3_0_process_interrupt(struct amdgpu_device *adev,
> - struct amdgpu_irq_src *source,
> - struct amdgpu_iv_entry *entry)
> -{
> - DRM_DEBUG("IH: JPEG TRAP\n");
> -
> - switch (entry->src_id) {
> - case VCN_5_0__SRCID__JPEG_DECODE:
> - amdgpu_fence_process(adev->jpeg.inst->ring_dec);
> - break;
> - default:
> - DRM_DEV_ERROR(adev->dev, "Unhandled interrupt: %d %d\n",
> - entry->src_id, entry->src_data[0]);
> - break;
> - }
> -
> - return 0;
> -}
> -
> static int jpeg_v5_3_0_ring_reset(struct amdgpu_ring *ring,
> unsigned int vmid,
> struct amdgpu_fence *timedout_fence)
> --
> 2.43.0
>