diff options
author | Thierry Reding <treding@nvidia.com> | 2021-03-26 17:51:39 +0300 |
---|---|---|
committer | Thierry Reding <treding@nvidia.com> | 2021-03-31 18:42:14 +0300 |
commit | 7b6f846785f41d57917e36851c120cfbe87f0809 (patch) | |
tree | 7f50d78b1d32e0b0bc8d2d7424a5bd8bbd889c01 /drivers/gpu/drm/tegra/fb.c | |
parent | 05d1adfe2a8b5c6a794a9927d1991a00c5d68f1d (diff) | |
download | linux-7b6f846785f41d57917e36851c120cfbe87f0809.tar.xz |
drm/tegra: Support sector layout on Tegra194
Tegra194 has a special physical address bit that enables some memory
swizzling logic to support different sector layouts. Support the bit
that selects the sector layout which is passed in the framebuffer
modifier.
Signed-off-by: Thierry Reding <treding@nvidia.com>
Diffstat (limited to 'drivers/gpu/drm/tegra/fb.c')
-rw-r--r-- | drivers/gpu/drm/tegra/fb.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c index 350f33206076..cae8b8cbe9dd 100644 --- a/drivers/gpu/drm/tegra/fb.c +++ b/drivers/gpu/drm/tegra/fb.c @@ -44,6 +44,15 @@ int tegra_fb_get_tiling(struct drm_framebuffer *framebuffer, { uint64_t modifier = framebuffer->modifier; + if ((modifier >> 56) == DRM_FORMAT_MOD_VENDOR_NVIDIA) { + if ((modifier & DRM_FORMAT_MOD_NVIDIA_SECTOR_LAYOUT) == 0) + tiling->sector_layout = TEGRA_BO_SECTOR_LAYOUT_TEGRA; + else + tiling->sector_layout = TEGRA_BO_SECTOR_LAYOUT_GPU; + + modifier &= ~DRM_FORMAT_MOD_NVIDIA_SECTOR_LAYOUT; + } + switch (modifier) { case DRM_FORMAT_MOD_LINEAR: tiling->mode = TEGRA_BO_TILING_MODE_PITCH; |