[PATCH 1/7] gpu: host1x: Resize channel register region on Tegra186 and later

Ilia Mirkin imirkin at alum.mit.edu
Mon Nov 26 15:11:39 UTC 2018


On Fri, Nov 23, 2018 at 7:31 AM Thierry Reding <thierry.reding at gmail.com> wrote:
>
> From: Thierry Reding <treding at nvidia.com>
>
> The register region allocated per channel was decreased from 16384 bytes
> to 256 bytes on Tegra186 and later. Resize the region to make sure every
> channel (instead of only the first) is properly programmed.
>
> Suggested-by: Mikko Perttunen <mperttunen at nvidia.com>
> Signed-off-by: Thierry Reding <treding at nvidia.com>
> ---
>  drivers/gpu/host1x/hw/channel_hw.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/host1x/hw/channel_hw.c b/drivers/gpu/host1x/hw/channel_hw.c
> index d188f9068b91..95ea81172a83 100644
> --- a/drivers/gpu/host1x/hw/channel_hw.c
> +++ b/drivers/gpu/host1x/hw/channel_hw.c
> @@ -26,7 +26,6 @@
>  #include "../intr.h"
>  #include "../job.h"
>
> -#define HOST1X_CHANNEL_SIZE 16384
>  #define TRACE_MAX_LENGTH 128U
>
>  static void trace_write_gather(struct host1x_cdma *cdma, struct host1x_bo *bo,
> @@ -203,7 +202,11 @@ static void enable_gather_filter(struct host1x *host,
>  static int host1x_channel_init(struct host1x_channel *ch, struct host1x *dev,
>                                unsigned int index)
>  {
> -       ch->regs = dev->regs + index * HOST1X_CHANNEL_SIZE;
> +#if HOST1X_HW < 6
> +       ch->regs = dev->regs + index * 0x4000;
> +#else
> +       ch->regs = dev->regs + index * 0x100;
> +#endif

Just an observation ... this makes it impossible to build this module
for multiple host1x hw revisions in the same kernel. I believe that
supporting multiple platforms is frequently desirable, but perhaps
there's more going on here (like arm64 vs arm32, etc).

Cheers,

  -ilia


More information about the dri-devel mailing list