@@ -1267,9 +1267,19 @@ static void radeon_afmt_init(struct radeon_device *rdev)
};
int num_afmt;
- /* DCE4/5 has 6 audio blocks tied to DIG encoders */
- /* DCE4.1 has 2 audio blocks tied to DIG encoders */
- if (ASIC_IS_DCE5(rdev))
+ /*
+ * DCE64 and DCE61 are just guesses
+ * DCE6 was verified to have 6th AFMT using HD7750
+ * DCE4/5 has 6 audio blocks tied to DIG encoders
+ * DCE4.1 has 2 audio blocks tied to DIG encoders
+ */
+ if (ASIC_IS_DCE64(rdev))
+ num_afmt = 2;
+ else if (ASIC_IS_DCE61(rdev))
+ num_afmt = 4;
+ else if (ASIC_IS_DCE6(rdev))
+ num_afmt = 6;
+ else if (ASIC_IS_DCE5(rdev))
num_afmt = 6;
else if (ASIC_IS_DCE41(rdev))
num_afmt = 2;
So far it was tested on HD7750 (DCE6) only. For DCE61 and DCE64 I assumed that amount of AFMTs equals amount of display controllers. Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com> --- This patch depends on [PATCH] drm/radeon: use loop for initializing AFMT blocks --- drivers/gpu/drm/radeon/radeon_display.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-)