Message ID | 1392664905-1914-1-git-send-email-alexander.deucher@amd.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Are you sure the index to si.tile_mode_array is correct? I wrote it for CI and I'm not sure if the index can be used for SI in this way too. Marek On Mon, Feb 17, 2014 at 8:21 PM, Alex Deucher <alexdeucher@gmail.com> wrote: > Apply the same logic as CI to SI for setting up the > display tiling parameters. The num banks may vary > per tiling index just like CI. > > Bugs: > https://bugs.freedesktop.org/show_bug.cgi?id=71488 > https://bugs.freedesktop.org/show_bug.cgi?id=73946 > https://bugs.freedesktop.org/show_bug.cgi?id=74927 > > Signed-off-by: Alex Deucher <alexander.deucher@amd.com> > Cc: stable@vger.kernel.org > --- > drivers/gpu/drm/radeon/atombios_crtc.c | 13 +++++++------ > 1 file changed, 7 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c > index f0d409d..0d19f4f9 100644 > --- a/drivers/gpu/drm/radeon/atombios_crtc.c > +++ b/drivers/gpu/drm/radeon/atombios_crtc.c > @@ -1176,7 +1176,7 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc, > evergreen_tiling_fields(tiling_flags, &bankw, &bankh, &mtaspect, &tile_split); > > /* Set NUM_BANKS. */ > - if (rdev->family >= CHIP_BONAIRE) { > + if (rdev->family >= CHIP_TAHITI) { > unsigned tileb, index, num_banks, tile_split_bytes; > > /* Calculate the macrotile mode index. */ > @@ -1194,13 +1194,14 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc, > return -EINVAL; > } > > - num_banks = (rdev->config.cik.macrotile_mode_array[index] >> 6) & 0x3; > + if (rdev->family >= CHIP_BONAIRE) > + num_banks = (rdev->config.cik.macrotile_mode_array[index] >> 6) & 0x3; > + else > + num_banks = (rdev->config.si.tile_mode_array[index] >> 20) & 0x3; > fb_format |= EVERGREEN_GRPH_NUM_BANKS(num_banks); > } else { > - /* SI and older. */ > - if (rdev->family >= CHIP_TAHITI) > - tmp = rdev->config.si.tile_config; > - else if (rdev->family >= CHIP_CAYMAN) > + /* NI and older. */ > + if (rdev->family >= CHIP_CAYMAN) > tmp = rdev->config.cayman.tile_config; > else > tmp = rdev->config.evergreen.tile_config; > -- > 1.8.3.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel
> -----Original Message----- > From: Marek Olšák [mailto:maraeo@gmail.com] > Sent: Tuesday, February 18, 2014 5:04 AM > To: Alex Deucher > Cc: dri-devel; Deucher, Alexander; stable@vger.kernel.org > Subject: Re: [PATCH] drm/radeon: fix display tiling setup on SI > > Are you sure the index to si.tile_mode_array is correct? I wrote it > for CI and I'm not sure if the index can be used for SI in this way too. > I'll double check. I think some of the indices may be different on SI, but I don't think the display ones are. The patch fixes tiling on the oland card I just got. Alex > Marek > > On Mon, Feb 17, 2014 at 8:21 PM, Alex Deucher <alexdeucher@gmail.com> > wrote: > > Apply the same logic as CI to SI for setting up the > > display tiling parameters. The num banks may vary > > per tiling index just like CI. > > > > Bugs: > > https://bugs.freedesktop.org/show_bug.cgi?id=71488 > > https://bugs.freedesktop.org/show_bug.cgi?id=73946 > > https://bugs.freedesktop.org/show_bug.cgi?id=74927 > > > > Signed-off-by: Alex Deucher <alexander.deucher@amd.com> > > Cc: stable@vger.kernel.org > > --- > > drivers/gpu/drm/radeon/atombios_crtc.c | 13 +++++++------ > > 1 file changed, 7 insertions(+), 6 deletions(-) > > > > diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c > b/drivers/gpu/drm/radeon/atombios_crtc.c > > index f0d409d..0d19f4f9 100644 > > --- a/drivers/gpu/drm/radeon/atombios_crtc.c > > +++ b/drivers/gpu/drm/radeon/atombios_crtc.c > > @@ -1176,7 +1176,7 @@ static int dce4_crtc_do_set_base(struct drm_crtc > *crtc, > > evergreen_tiling_fields(tiling_flags, &bankw, &bankh, &mtaspect, > &tile_split); > > > > /* Set NUM_BANKS. */ > > - if (rdev->family >= CHIP_BONAIRE) { > > + if (rdev->family >= CHIP_TAHITI) { > > unsigned tileb, index, num_banks, tile_split_bytes; > > > > /* Calculate the macrotile mode index. */ > > @@ -1194,13 +1194,14 @@ static int dce4_crtc_do_set_base(struct > drm_crtc *crtc, > > return -EINVAL; > > } > > > > - num_banks = (rdev->config.cik.macrotile_mode_array[index] > >> 6) & 0x3; > > + if (rdev->family >= CHIP_BONAIRE) > > + num_banks = (rdev- > >config.cik.macrotile_mode_array[index] >> 6) & 0x3; > > + else > > + num_banks = (rdev->config.si.tile_mode_array[index] >> > 20) & 0x3; > > fb_format |= EVERGREEN_GRPH_NUM_BANKS(num_banks); > > } else { > > - /* SI and older. */ > > - if (rdev->family >= CHIP_TAHITI) > > - tmp = rdev->config.si.tile_config; > > - else if (rdev->family >= CHIP_CAYMAN) > > + /* NI and older. */ > > + if (rdev->family >= CHIP_CAYMAN) > > tmp = rdev->config.cayman.tile_config; > > else > > tmp = rdev->config.evergreen.tile_config; > > -- > > 1.8.3.1 > > > > _______________________________________________ > > dri-devel mailing list > > dri-devel@lists.freedesktop.org > > http://lists.freedesktop.org/mailman/listinfo/dri-devel
diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c index f0d409d..0d19f4f9 100644 --- a/drivers/gpu/drm/radeon/atombios_crtc.c +++ b/drivers/gpu/drm/radeon/atombios_crtc.c @@ -1176,7 +1176,7 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc, evergreen_tiling_fields(tiling_flags, &bankw, &bankh, &mtaspect, &tile_split); /* Set NUM_BANKS. */ - if (rdev->family >= CHIP_BONAIRE) { + if (rdev->family >= CHIP_TAHITI) { unsigned tileb, index, num_banks, tile_split_bytes; /* Calculate the macrotile mode index. */ @@ -1194,13 +1194,14 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc, return -EINVAL; } - num_banks = (rdev->config.cik.macrotile_mode_array[index] >> 6) & 0x3; + if (rdev->family >= CHIP_BONAIRE) + num_banks = (rdev->config.cik.macrotile_mode_array[index] >> 6) & 0x3; + else + num_banks = (rdev->config.si.tile_mode_array[index] >> 20) & 0x3; fb_format |= EVERGREEN_GRPH_NUM_BANKS(num_banks); } else { - /* SI and older. */ - if (rdev->family >= CHIP_TAHITI) - tmp = rdev->config.si.tile_config; - else if (rdev->family >= CHIP_CAYMAN) + /* NI and older. */ + if (rdev->family >= CHIP_CAYMAN) tmp = rdev->config.cayman.tile_config; else tmp = rdev->config.evergreen.tile_config;
Apply the same logic as CI to SI for setting up the display tiling parameters. The num banks may vary per tiling index just like CI. Bugs: https://bugs.freedesktop.org/show_bug.cgi?id=71488 https://bugs.freedesktop.org/show_bug.cgi?id=73946 https://bugs.freedesktop.org/show_bug.cgi?id=74927 Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org --- drivers/gpu/drm/radeon/atombios_crtc.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)