[PATCH 3/5] drm/amdgpu: enable system interrupt for jrbc
Boyuan Zhang
boyzhang at amd.com
Mon Jul 23 19:53:05 UTC 2018
On 2018-07-19 02:51 PM, Alex Deucher wrote:
> On Wed, Jul 18, 2018 at 4:39 PM, <boyuan.zhang at amd.com> wrote:
>> From: Boyuan Zhang <boyuan.zhang at amd.com>
>>
>> Enable system interrupt for jrbc during engine starting time.
>>
>> Signed-off-by: Boyuan Zhang <boyuan.zhang at amd.com>
>> ---
>> drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | 8 +++++++-
>> 1 file changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
>> index 4fccb21..22c1588 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
>> @@ -595,6 +595,7 @@ static int vcn_v1_0_start(struct amdgpu_device *adev)
>> struct amdgpu_ring *ring = &adev->vcn.ring_dec;
>> uint32_t rb_bufsz, tmp;
>> uint32_t lmi_swap_cntl;
>> + uint32_t reg_temp;
>> int i, j, r;
>>
>> /* disable byte swapping */
>> @@ -700,6 +701,11 @@ static int vcn_v1_0_start(struct amdgpu_device *adev)
>> (UVD_MASTINT_EN__VCPU_EN_MASK|UVD_MASTINT_EN__SYS_EN_MASK),
>> ~(UVD_MASTINT_EN__VCPU_EN_MASK|UVD_MASTINT_EN__SYS_EN_MASK));
>>
>> + /* enable system interrupt for JRBC*/
>> + reg_temp = RREG32(SOC15_REG_OFFSET(UVD, 0, mmUVD_SYS_INT_EN));
>> + reg_temp |= UVD_SYS_INT_EN__UVD_JRBC_EN_MASK;
>> + WREG32(SOC15_REG_OFFSET(UVD, 0, mmUVD_SYS_INT_EN), reg_temp);
>> +
> Shouldn't we move the setting of these interrupts into
> vcn_v1_0_set_interrupt_state()? Same for the mastint. that way they
> will get enabled/disabled as part of the fence driver sequence I
> think. Or do they need to happen in a specific sequence?
>
> Alex
Hmm... at least for this JPEG specific case, interrupt won't be raised
during those times that we don't care about the interrupt. This is not
like other system component where interrupt might still be raised even
if we don't care about it. So my feeling is that whether we disable it
at the beginning and enable it later on, or we just enable it at the
beginning doesn't really matter in the practical sense.
Regards,
Boyuan
>
>> /* clear the bit 4 of VCN_STATUS */
>> WREG32_P(SOC15_REG_OFFSET(UVD, 0, mmUVD_STATUS), 0,
>> ~(2 << UVD_STATUS__VCPU_REPORT__SHIFT));
>> @@ -1754,7 +1760,7 @@ static const struct amdgpu_irq_src_funcs vcn_v1_0_irq_funcs = {
>>
>> static void vcn_v1_0_set_irq_funcs(struct amdgpu_device *adev)
>> {
>> - adev->vcn.irq.num_types = adev->vcn.num_enc_rings + 1;
>> + adev->vcn.irq.num_types = adev->vcn.num_enc_rings + 2;
>> adev->vcn.irq.funcs = &vcn_v1_0_irq_funcs;
>> }
>>
>> --
>> 2.7.4
>>
>> _______________________________________________
>> amd-gfx mailing list
>> amd-gfx at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
More information about the amd-gfx
mailing list