On Tue, Jun 16, 2026 at 8:59 AM Tiago Dourado <[email protected]> wrote:
>
> The jpeg_v3_0_process_interrupt function is identical to
> jpeg_v2_0_process_interrupt. Remove the duplicate implementation
> in jpeg_v3_0 and reuse the jpeg_v2_0 version via a macro alias.
> Export jpeg_v2_0_process_interrupt through jpeg_v2_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_v2_0.c |  2 +-
>  drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.h |  4 ++++
>  drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c | 21 ++-------------------
>  3 files changed, 7 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c 
> b/drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c
> index 9fe8d10ab..9006fc57e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c
> @@ -747,7 +747,7 @@ static int jpeg_v2_0_set_interrupt_state(struct 
> amdgpu_device *adev,
>         return 0;
>  }
>
> -static int jpeg_v2_0_process_interrupt(struct amdgpu_device *adev,
> +int jpeg_v2_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_v2_0.h 
> b/drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.h
> index 654e43e83..4f400fb47 100644
> --- a/drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.h
> +++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.h
> @@ -58,6 +58,10 @@ void jpeg_v2_0_dec_ring_emit_vm_flush(struct amdgpu_ring 
> *ring,
>  void jpeg_v2_0_dec_ring_emit_wreg(struct amdgpu_ring *ring, uint32_t reg, 
> uint32_t val);
>  void jpeg_v2_0_dec_ring_nop(struct amdgpu_ring *ring, uint32_t count);
>
> +int jpeg_v2_0_process_interrupt(struct amdgpu_device *adev,
> +                               struct amdgpu_irq_src *source,
> +                               struct amdgpu_iv_entry *entry);
> +
>  extern const struct amdgpu_ip_block_version jpeg_v2_0_ip_block;
>
>  #endif /* __JPEG_V2_0_H__ */
> diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c 
> b/drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c
> index 98f5e0622..5010dafc2 100644
> --- a/drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c
> @@ -34,6 +34,8 @@
>
>  #define mmUVD_JPEG_PITCH_INTERNAL_OFFSET       0x401f
>
> +#define jpeg_v3_0_process_interrupt jpeg_v2_0_process_interrupt

No need for this.  Just assign jpeg_v2_0_process_interrupt directly in
jpeg_v3_0_irq_funcs.

Alex

> +
>  static const struct amdgpu_hwip_reg_entry jpeg_reg_list_3_0[] = {
>         SOC15_REG_ENTRY_STR(JPEG, 0, mmUVD_JPEG_POWER_STATUS),
>         SOC15_REG_ENTRY_STR(JPEG, 0, mmUVD_JPEG_INT_STAT),
> @@ -539,25 +541,6 @@ static int jpeg_v3_0_set_interrupt_state(struct 
> amdgpu_device *adev,
>         return 0;
>  }
>
> -static int jpeg_v3_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_2_0__SRCID__JPEG_DECODE:
> -               amdgpu_fence_process(adev->jpeg.inst->ring_dec);
> -               break;
> -       default:
> -               DRM_ERROR("Unhandled interrupt: %d %d\n",
> -                         entry->src_id, entry->src_data[0]);
> -               break;
> -       }
> -
> -       return 0;
> -}
> -
>  static int jpeg_v3_0_ring_reset(struct amdgpu_ring *ring,
>                                 unsigned int vmid,
>                                 struct amdgpu_fence *timedout_fence)
> --
> 2.43.0
>

Reply via email to