[PATCH 01/12] drm/amdgpu: move ring helpers to amdgpu_ring.h

Alex Deucher alexdeucher at gmail.com
Fri Jun 30 16:15:48 UTC 2017


On Fri, Jun 30, 2017 at 7:22 AM, Christian König
<deathsimple at vodafone.de> wrote:
> From: Christian König <christian.koenig at amd.com>
>
> Keep them where they belong.
>
> Signed-off-by: Christian König <christian.koenig at amd.com>

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu.h      | 44 --------------------------------
>  drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h | 42 ++++++++++++++++++++++++++++++
>  2 files changed, 42 insertions(+), 44 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index ab1dad2..810796a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -1801,50 +1801,6 @@ bool amdgpu_device_has_dc_support(struct amdgpu_device *adev);
>  #define RBIOS16(i) (RBIOS8(i) | (RBIOS8((i)+1) << 8))
>  #define RBIOS32(i) ((RBIOS16(i)) | (RBIOS16((i)+2) << 16))
>
> -/*
> - * RING helpers.
> - */
> -static inline void amdgpu_ring_write(struct amdgpu_ring *ring, uint32_t v)
> -{
> -       if (ring->count_dw <= 0)
> -               DRM_ERROR("amdgpu: writing more dwords to the ring than expected!\n");
> -       ring->ring[ring->wptr++ & ring->buf_mask] = v;
> -       ring->wptr &= ring->ptr_mask;
> -       ring->count_dw--;
> -}
> -
> -static inline void amdgpu_ring_write_multiple(struct amdgpu_ring *ring, void *src, int count_dw)
> -{
> -       unsigned occupied, chunk1, chunk2;
> -       void *dst;
> -
> -       if (unlikely(ring->count_dw < count_dw)) {
> -               DRM_ERROR("amdgpu: writing more dwords to the ring than expected!\n");
> -               return;
> -       }
> -
> -       occupied = ring->wptr & ring->buf_mask;
> -       dst = (void *)&ring->ring[occupied];
> -       chunk1 = ring->buf_mask + 1 - occupied;
> -       chunk1 = (chunk1 >= count_dw) ? count_dw: chunk1;
> -       chunk2 = count_dw - chunk1;
> -       chunk1 <<= 2;
> -       chunk2 <<= 2;
> -
> -       if (chunk1)
> -               memcpy(dst, src, chunk1);
> -
> -       if (chunk2) {
> -               src += chunk1;
> -               dst = (void *)ring->ring;
> -               memcpy(dst, src, chunk2);
> -       }
> -
> -       ring->wptr += count_dw;
> -       ring->wptr &= ring->ptr_mask;
> -       ring->count_dw -= count_dw;
> -}
> -
>  static inline struct amdgpu_sdma_instance *
>  amdgpu_get_sdma_instance(struct amdgpu_ring *ring)
>  {
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h
> index bc8dec9..04cbc3a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h
> @@ -212,4 +212,46 @@ static inline void amdgpu_ring_clear_ring(struct amdgpu_ring *ring)
>
>  }
>
> +static inline void amdgpu_ring_write(struct amdgpu_ring *ring, uint32_t v)
> +{
> +       if (ring->count_dw <= 0)
> +               DRM_ERROR("amdgpu: writing more dwords to the ring than expected!\n");
> +       ring->ring[ring->wptr++ & ring->buf_mask] = v;
> +       ring->wptr &= ring->ptr_mask;
> +       ring->count_dw--;
> +}
> +
> +static inline void amdgpu_ring_write_multiple(struct amdgpu_ring *ring,
> +                                             void *src, int count_dw)
> +{
> +       unsigned occupied, chunk1, chunk2;
> +       void *dst;
> +
> +       if (unlikely(ring->count_dw < count_dw)) {
> +               DRM_ERROR("amdgpu: writing more dwords to the ring than expected!\n");
> +               return;
> +       }
> +
> +       occupied = ring->wptr & ring->buf_mask;
> +       dst = (void *)&ring->ring[occupied];
> +       chunk1 = ring->buf_mask + 1 - occupied;
> +       chunk1 = (chunk1 >= count_dw) ? count_dw: chunk1;
> +       chunk2 = count_dw - chunk1;
> +       chunk1 <<= 2;
> +       chunk2 <<= 2;
> +
> +       if (chunk1)
> +               memcpy(dst, src, chunk1);
> +
> +       if (chunk2) {
> +               src += chunk1;
> +               dst = (void *)ring->ring;
> +               memcpy(dst, src, chunk2);
> +       }
> +
> +       ring->wptr += count_dw;
> +       ring->wptr &= ring->ptr_mask;
> +       ring->count_dw -= count_dw;
> +}
> +
>  #endif
> --
> 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