[Freedreno] [v7 PATCH 0/5] Add support for Adreno a6xx

Rob Clark robdclark at gmail.com
Mon Aug 6 18:03:25 UTC 2018


On Mon, Aug 6, 2018 at 1:35 PM Jordan Crouse <jcrouse at codeaurora.org> wrote:
>
> This is an initial version of support for the Adreno a6xx GPU family starting
> with the a630 from the sdm845 SoC. This code is ahead of much of the sdm845
> code that would be needed to actually bring up a device and it is also in
> advance of any user side support for the a6xx GPU so this is mainly just a
> chance to look over the code structure and get a feel for the
> direction that the hardware is going in.

Note that, we have WIP freedreno support here:

  https://gitlab.freedesktop.org/krh/mesa/commits/wip/a6xx

I'm still working on some cleanup, but at this point glmark2 and CrOS
boots to UI (ie. chromium browser works).. so I think I'll be ready to
push initial round of mesa support this week.

BR,
-R

> The a6xx GPU is an iteration of a5xx so most of the GPU side code looks pretty
> identical except for the usual register differences. The big different is in
> power control. On the a5xx there was a rudimentary device called the GPMU that
> did some basic power stuff but left most of the complexity to the kernel.
>
> On the a6xx the power complexity is being moved to a component
> called the GMU (graphics management unit) which handles the power control of the
> GPU and shuts it down quickly after it goes idle.
>
> This stack has one run time dependency that shifts the power responsibility
> for the SMMU to the SMMU driver instead of the current workaround of implicitly
> powering the SMMU by powering the GPU:
>
> https://patchwork.kernel.org/patch/10301163/ - pm_runtime ops for arm-smmu
>
> [v7 - Make sure the GMU sets the GPU clock to something reasonable. Force the
> GPU/GMU on during state capture to avoid errors.  Fix checkpatch errors]
>
> [v6 - set nr_clocks to 0 when parsing fails and minor cleanup in msm_iommu for
> Vivek. Fix compile error in the load firmware patch ]
>
> [v5 - Move firmware loading to adreno_load_gpu() so it is easier to fail if the
> firmware isn't found ]
>
> [v4 - Add clock parsing helper function and use it for GPU and GMU. Update
> recommended clock gating settings. Fix a bug in the CMD DB parser. Update
> register values from updated database ]
>
> [v3 - fix inverted register definition for GMU_SPTPRAC_CLK_STATUS; fix incorrect
> register check in a5xx_gmu_gx_is_on(), use dev_pm_opp_get_of_node() from
> Rajendra and Viresh to read the qcom,level from the device tree; read qcom,level
> from the DT to get the voltage level to pass to the GMU, fix issues
> identified by smatch]
>
> [v2 - addressed comments from Lucas Stach; added pm_runtime_get_supplier calls
> for accesses to the GMU IOMMU; moved to SPDX headers for new files]
>
> Jordan Crouse (4):
>   drm/msm: Remove pm_runtime operations from msm_iommu
>   drm/msm: Add a helper function to parse clock names
>   drm/msm/adreno: Load the firmware before bringing up the hardware
>   drm/msm: Add A6XX device support
>
> Sharat Masetty (1):
>   drm/msm: Add generated headers for A6XX
>
>  drivers/gpu/drm/msm/Makefile               |    3 +
>  drivers/gpu/drm/msm/adreno/a6xx.xml.h      | 1784 ++++++++++++++++++++
>  drivers/gpu/drm/msm/adreno/a6xx_gmu.c      | 1207 +++++++++++++
>  drivers/gpu/drm/msm/adreno/a6xx_gmu.h      |  162 ++
>  drivers/gpu/drm/msm/adreno/a6xx_gmu.xml.h  |  382 +++++
>  drivers/gpu/drm/msm/adreno/a6xx_gpu.c      |  818 +++++++++
>  drivers/gpu/drm/msm/adreno/a6xx_gpu.h      |   60 +
>  drivers/gpu/drm/msm/adreno/a6xx_hfi.c      |  435 +++++
>  drivers/gpu/drm/msm/adreno/a6xx_hfi.h      |  127 ++
>  drivers/gpu/drm/msm/adreno/adreno_device.c |   35 +-
>  drivers/gpu/drm/msm/adreno/adreno_gpu.c    |    2 +-
>  drivers/gpu/drm/msm/adreno/adreno_gpu.h    |    5 +-
>  drivers/gpu/drm/msm/msm_drv.c              |   57 +
>  drivers/gpu/drm/msm/msm_drv.h              |    4 +
>  drivers/gpu/drm/msm/msm_gpu.c              |   62 +-
>  drivers/gpu/drm/msm/msm_gpu.h              |    2 +-
>  drivers/gpu/drm/msm/msm_iommu.c            |   13 +-
>  17 files changed, 5091 insertions(+), 67 deletions(-)
>  create mode 100644 drivers/gpu/drm/msm/adreno/a6xx.xml.h
>  create mode 100644 drivers/gpu/drm/msm/adreno/a6xx_gmu.c
>  create mode 100644 drivers/gpu/drm/msm/adreno/a6xx_gmu.h
>  create mode 100644 drivers/gpu/drm/msm/adreno/a6xx_gmu.xml.h
>  create mode 100644 drivers/gpu/drm/msm/adreno/a6xx_gpu.c
>  create mode 100644 drivers/gpu/drm/msm/adreno/a6xx_gpu.h
>  create mode 100644 drivers/gpu/drm/msm/adreno/a6xx_hfi.c
>  create mode 100644 drivers/gpu/drm/msm/adreno/a6xx_hfi.h
>
> --
> 2.18.0
>
> _______________________________________________
> Freedreno mailing list
> Freedreno at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/freedreno


More information about the dri-devel mailing list