Applied. Thanks!
On Thu, Jul 9, 2026 at 3:44 AM Andre Luiz Batista Bueno <[email protected]> wrote: > > Both jpeg_v5_0_1.c and jpeg_v5_0_2.c implement identical > interrupt processing routines. To avoid code duplication, > make the implementation in jpeg_v5_0_1.c non-static and > call it directly from jpeg_v5_0_2.c. > > Signed-off-by: Andre Luiz Batista Bueno <[email protected]> > Co-developed-by: Enzo Furegatti Spinella <[email protected]> > Signed-off-by: Enzo Furegatti Spinella <[email protected]> > --- > > v2: > - Dropped the new jpeg_v5_0_interrupt.c/h files and Makefile changes. > - Kept the interrupt routine in jpeg_v5_0_1.c but removed the 'static' > modifier. > - Declared the function prototype in jpeg_v5_0_1.h and included it in > jpeg_v5_0_2.c to call it directly, as suggested by Alex Deucher. > > drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.c | 2 +- > drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.h | 8 +++ > drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_2.c | 63 ++---------------------- > 3 files changed, 12 insertions(+), 61 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.c > b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.c > index edecbfe66c79..46bcbecd89e8 100644 > --- a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.c > +++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.c > @@ -755,7 +755,7 @@ static int jpeg_v5_0_1_set_ras_interrupt_state(struct > amdgpu_device *adev, > > > > -static int jpeg_v5_0_1_process_interrupt(struct amdgpu_device *adev, > +int jpeg_v5_0_1_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_1.h > b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.h > index a7e58d5fb246..67346faecb47 100644 > --- a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.h > +++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.h > @@ -108,4 +108,12 @@ enum amdgpu_jpeg_v5_0_1_sub_block { > AMDGPU_JPEG_V5_0_1_MAX_SUB_BLOCK, > }; > > +struct amdgpu_irq_src; > +struct amdgpu_iv_entry; > +struct amdgpu_device; > + > +int jpeg_v5_0_1_process_interrupt(struct amdgpu_device *adev, > + struct amdgpu_irq_src *source, > + struct amdgpu_iv_entry *entry); > + > #endif /* __JPEG_V5_0_1_H__ */ > diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_2.c > b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_2.c > index 285c459379c4..250e7f849037 100644 > --- a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_2.c > +++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_2.c > @@ -34,6 +34,8 @@ > #include "vcn/vcn_5_0_0_sh_mask.h" > #include "ivsrcid/vcn/irqsrcs_vcn_5_0.h" > > +#include "jpeg_v5_0_1.h" > + > static void jpeg_v5_0_2_set_dec_ring_funcs(struct amdgpu_device *adev); > static void jpeg_v5_0_2_set_irq_funcs(struct amdgpu_device *adev); > static int jpeg_v5_0_2_set_powergating_state(struct amdgpu_ip_block > *ip_block, > @@ -583,65 +585,6 @@ static int jpeg_v5_0_2_set_interrupt_state(struct > amdgpu_device *adev, > return 0; > } > > -static int jpeg_v5_0_2_process_interrupt(struct amdgpu_device *adev, > - struct amdgpu_irq_src *source, > - struct amdgpu_iv_entry *entry) > -{ > - u32 i, inst; > - > - i = node_id_to_phys_map[entry->node_id]; > - DRM_DEV_DEBUG(adev->dev, "IH: JPEG TRAP\n"); > - > - for (inst = 0; inst < adev->jpeg.num_jpeg_inst; ++inst) > - if (adev->jpeg.inst[inst].aid_id == i) > - break; > - > - if (inst >= adev->jpeg.num_jpeg_inst) { > - dev_WARN_ONCE(adev->dev, 1, > - "Interrupt received for unknown JPEG instance > %d", > - entry->node_id); > - return 0; > - } > - > - switch (entry->src_id) { > - case VCN_5_0__SRCID__JPEG_DECODE: > - amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[0]); > - break; > - case VCN_5_0__SRCID__JPEG1_DECODE: > - amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[1]); > - break; > - case VCN_5_0__SRCID__JPEG2_DECODE: > - amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[2]); > - break; > - case VCN_5_0__SRCID__JPEG3_DECODE: > - amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[3]); > - break; > - case VCN_5_0__SRCID__JPEG4_DECODE: > - amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[4]); > - break; > - case VCN_5_0__SRCID__JPEG5_DECODE: > - amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[5]); > - break; > - case VCN_5_0__SRCID__JPEG6_DECODE: > - amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[6]); > - break; > - case VCN_5_0__SRCID__JPEG7_DECODE: > - amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[7]); > - break; > - case VCN_5_0__SRCID__JPEG8_DECODE: > - amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[8]); > - break; > - case VCN_5_0__SRCID__JPEG9_DECODE: > - amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[9]); > - break; > - default: > - DRM_DEV_ERROR(adev->dev, "Unhandled interrupt: %d %d\n", > - entry->src_id, entry->src_data[0]); > - break; > - } > - > - return 0; > -} > > static void jpeg_v5_0_2_core_stall_reset(struct amdgpu_ring *ring) > { > @@ -749,7 +692,7 @@ static void jpeg_v5_0_2_set_dec_ring_funcs(struct > amdgpu_device *adev) > > static const struct amdgpu_irq_src_funcs jpeg_v5_0_2_irq_funcs = { > .set = jpeg_v5_0_2_set_interrupt_state, > - .process = jpeg_v5_0_2_process_interrupt, > + .process = jpeg_v5_0_1_process_interrupt, > }; > > static void jpeg_v5_0_2_set_irq_funcs(struct amdgpu_device *adev) > -- > 2.43.0 >
