Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6e72376d authored by Slava Grigorev's avatar Slava Grigorev Committed by Alex Deucher
Browse files

radeon/audio: consolidate audio_mode_set() functions

parent 7f604077
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
#include <drm/drm_crtc_helper.h>
#include <drm/radeon_drm.h>
#include "radeon.h"
#include "radeon_audio.h"
#include "atom.h"
#include <linux/backlight.h>

@@ -2174,8 +2175,7 @@ radeon_atom_encoder_mode_set(struct drm_encoder *encoder,
	if (atombios_get_encoder_mode(encoder) == ATOM_ENCODER_MODE_HDMI) {
		if (rdev->asic->display.hdmi_enable)
			radeon_hdmi_enable(rdev, encoder, true);
		if (rdev->asic->display.hdmi_setmode)
			radeon_hdmi_setmode(rdev, encoder, adjusted_mode);
		radeon_audio_mode_set(encoder, adjusted_mode);
	}
}

+0 −41
Original line number Diff line number Diff line
@@ -230,44 +230,3 @@ void dce3_2_set_mute(struct drm_encoder *encoder, u32 offset, bool mute)
	else
		WREG32_AND(HDMI0_GC + offset, ~HDMI0_GC_AVMUTE);
}

/*
 * update the info frames with the data from the current display mode
 */
void dce3_1_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode *mode)
{
	struct drm_device *dev = encoder->dev;
	struct radeon_device *rdev = dev->dev_private;
	struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
	struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv;
	uint32_t offset;

	if (!dig || !dig->afmt)
		return;

	/* Silent, r600_hdmi_enable will raise WARN for us */
	if (!dig->afmt->enabled)
		return;
	offset = dig->afmt->offset;

	/* disable audio prior to setting up hw */
	dig->afmt->pin = radeon_audio_get_pin(encoder);
	radeon_audio_enable(rdev, dig->afmt->pin, 0);

	radeon_audio_set_dto(encoder, mode->clock);
	radeon_audio_set_vbi_packet(encoder);
	radeon_hdmi_set_color_depth(encoder);
	radeon_audio_set_mute(encoder, false);
	radeon_audio_update_acr(encoder, mode->clock);
	radeon_audio_write_speaker_allocation(encoder);
	radeon_audio_set_audio_packet(encoder);
	radeon_audio_write_sad_regs(encoder);

	if (radeon_audio_set_avi_packet(encoder, mode) < 0)
		return;

	r600_hdmi_audio_workaround(encoder);

	/* enable audio after to setting up hw */
	radeon_audio_enable(rdev, dig->afmt->pin, 0xf);
}
+0 −41
Original line number Diff line number Diff line
@@ -398,47 +398,6 @@ void dce4_set_mute(struct drm_encoder *encoder, u32 offset, bool mute)
		WREG32_AND(HDMI_GC + offset, ~HDMI_GC_AVMUTE);
}

/*
 * update the info frames with the data from the current display mode
 */
void evergreen_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode *mode)
{
	struct drm_device *dev = encoder->dev;
	struct radeon_device *rdev = dev->dev_private;
	struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
	struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv;
	uint32_t offset;

	if (!dig || !dig->afmt)
		return;

	/* Silent, r600_hdmi_enable will raise WARN for us */
	if (!dig->afmt->enabled)
		return;
	offset = dig->afmt->offset;

	/* disable audio prior to setting up hw */
	dig->afmt->pin = radeon_audio_get_pin(encoder);
	radeon_audio_enable(rdev, dig->afmt->pin, 0);

	radeon_audio_set_dto(encoder, mode->clock);
	radeon_audio_set_vbi_packet(encoder);
	radeon_hdmi_set_color_depth(encoder);
	radeon_audio_set_mute(encoder, false);
	radeon_audio_update_acr(encoder, mode->clock);
	radeon_audio_write_speaker_allocation(encoder);
	radeon_audio_set_audio_packet(encoder);
	radeon_audio_select_pin(encoder);
	radeon_audio_write_sad_regs(encoder);
	radeon_audio_write_latency_fields(encoder, mode);

	if (radeon_audio_set_avi_packet(encoder, mode) < 0)
		return;

	/* enable audio after to setting up hw */
	radeon_audio_enable(rdev, dig->afmt->pin, 0xf);
}

void evergreen_hdmi_enable(struct drm_encoder *encoder, bool enable)
{
	struct drm_device *dev = encoder->dev;
+0 −37
Original line number Diff line number Diff line
@@ -400,43 +400,6 @@ void r600_set_mute(struct drm_encoder *encoder, u32 offset, bool mute)
		WREG32_AND(HDMI0_GC + offset, ~HDMI0_GC_AVMUTE);
}

/*
 * update the info frames with the data from the current display mode
 */
void r600_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode *mode)
{
	struct drm_device *dev = encoder->dev;
	struct radeon_device *rdev = dev->dev_private;
	struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
	struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv;
	uint32_t offset;

	if (!dig || !dig->afmt)
		return;

	/* Silent, r600_hdmi_enable will raise WARN for us */
	if (!dig->afmt->enabled)
		return;
	offset = dig->afmt->offset;

	/* disable audio prior to setting up hw */
	dig->afmt->pin = radeon_audio_get_pin(encoder);
	radeon_audio_enable(rdev, dig->afmt->pin, 0);

	radeon_audio_set_dto(encoder, mode->clock);
	radeon_audio_set_vbi_packet(encoder);
	radeon_hdmi_set_color_depth(encoder);
	radeon_audio_set_mute(encoder, false);
	radeon_audio_update_acr(encoder, mode->clock);
	radeon_audio_set_audio_packet(encoder);

	if (radeon_audio_set_avi_packet(encoder, mode) < 0)
		return;

	/* enable audio after to setting up hw */
	radeon_audio_enable(rdev, dig->afmt->pin, 0xf);
}

/**
 * r600_hdmi_update_audio_settings - Update audio infoframe
 *
+0 −14
Original line number Diff line number Diff line
@@ -639,7 +639,6 @@ static struct radeon_asic rs600_asic = {
		.set_backlight_level = &atombios_set_backlight_level,
		.get_backlight_level = &atombios_get_backlight_level,
		.hdmi_enable = &r600_hdmi_enable,
		.hdmi_setmode = &r600_hdmi_setmode,
	},
	.copy = {
		.blit = &r100_copy_blit,
@@ -707,7 +706,6 @@ static struct radeon_asic rs690_asic = {
		.set_backlight_level = &atombios_set_backlight_level,
		.get_backlight_level = &atombios_get_backlight_level,
		.hdmi_enable = &r600_hdmi_enable,
		.hdmi_setmode = &r600_hdmi_setmode,
	},
	.copy = {
		.blit = &r100_copy_blit,
@@ -936,7 +934,6 @@ static struct radeon_asic r600_asic = {
		.set_backlight_level = &atombios_set_backlight_level,
		.get_backlight_level = &atombios_get_backlight_level,
		.hdmi_enable = &r600_hdmi_enable,
		.hdmi_setmode = &r600_hdmi_setmode,
	},
	.copy = {
		.blit = &r600_copy_cpdma,
@@ -1022,7 +1019,6 @@ static struct radeon_asic rv6xx_asic = {
		.set_backlight_level = &atombios_set_backlight_level,
		.get_backlight_level = &atombios_get_backlight_level,
		.hdmi_enable = &r600_hdmi_enable,
		.hdmi_setmode = &r600_hdmi_setmode,
	},
	.copy = {
		.blit = &r600_copy_cpdma,
@@ -1113,7 +1109,6 @@ static struct radeon_asic rs780_asic = {
		.set_backlight_level = &atombios_set_backlight_level,
		.get_backlight_level = &atombios_get_backlight_level,
		.hdmi_enable = &r600_hdmi_enable,
		.hdmi_setmode = &r600_hdmi_setmode,
	},
	.copy = {
		.blit = &r600_copy_cpdma,
@@ -1217,7 +1212,6 @@ static struct radeon_asic rv770_asic = {
		.set_backlight_level = &atombios_set_backlight_level,
		.get_backlight_level = &atombios_get_backlight_level,
		.hdmi_enable = &r600_hdmi_enable,
		.hdmi_setmode = &dce3_1_hdmi_setmode,
	},
	.copy = {
		.blit = &r600_copy_cpdma,
@@ -1335,7 +1329,6 @@ static struct radeon_asic evergreen_asic = {
		.set_backlight_level = &atombios_set_backlight_level,
		.get_backlight_level = &atombios_get_backlight_level,
		.hdmi_enable = &evergreen_hdmi_enable,
		.hdmi_setmode = &evergreen_hdmi_setmode,
	},
	.copy = {
		.blit = &r600_copy_cpdma,
@@ -1427,7 +1420,6 @@ static struct radeon_asic sumo_asic = {
		.set_backlight_level = &atombios_set_backlight_level,
		.get_backlight_level = &atombios_get_backlight_level,
		.hdmi_enable = &evergreen_hdmi_enable,
		.hdmi_setmode = &evergreen_hdmi_setmode,
	},
	.copy = {
		.blit = &r600_copy_cpdma,
@@ -1518,7 +1510,6 @@ static struct radeon_asic btc_asic = {
		.set_backlight_level = &atombios_set_backlight_level,
		.get_backlight_level = &atombios_get_backlight_level,
		.hdmi_enable = &evergreen_hdmi_enable,
		.hdmi_setmode = &evergreen_hdmi_setmode,
	},
	.copy = {
		.blit = &r600_copy_cpdma,
@@ -1664,7 +1655,6 @@ static struct radeon_asic cayman_asic = {
		.set_backlight_level = &atombios_set_backlight_level,
		.get_backlight_level = &atombios_get_backlight_level,
		.hdmi_enable = &evergreen_hdmi_enable,
		.hdmi_setmode = &evergreen_hdmi_setmode,
	},
	.copy = {
		.blit = &r600_copy_cpdma,
@@ -1767,7 +1757,6 @@ static struct radeon_asic trinity_asic = {
		.set_backlight_level = &atombios_set_backlight_level,
		.get_backlight_level = &atombios_get_backlight_level,
		.hdmi_enable = &evergreen_hdmi_enable,
		.hdmi_setmode = &evergreen_hdmi_setmode,
	},
	.copy = {
		.blit = &r600_copy_cpdma,
@@ -1900,7 +1889,6 @@ static struct radeon_asic si_asic = {
		.set_backlight_level = &atombios_set_backlight_level,
		.get_backlight_level = &atombios_get_backlight_level,
		.hdmi_enable = &evergreen_hdmi_enable,
		.hdmi_setmode = &evergreen_hdmi_setmode,
	},
	.copy = {
		.blit = &r600_copy_cpdma,
@@ -2067,7 +2055,6 @@ static struct radeon_asic ci_asic = {
		.set_backlight_level = &atombios_set_backlight_level,
		.get_backlight_level = &atombios_get_backlight_level,
		.hdmi_enable = &evergreen_hdmi_enable,
		.hdmi_setmode = &evergreen_hdmi_setmode,
	},
	.copy = {
		.blit = &cik_copy_cpdma,
@@ -2178,7 +2165,6 @@ static struct radeon_asic kv_asic = {
		.set_backlight_level = &atombios_set_backlight_level,
		.get_backlight_level = &atombios_get_backlight_level,
		.hdmi_enable = &evergreen_hdmi_enable,
		.hdmi_setmode = &evergreen_hdmi_setmode,
	},
	.copy = {
		.blit = &cik_copy_cpdma,
Loading