[PATCH 05/24] radeon/audio: consolidate write_latency_fields() functions

2015-01-14 Thread Christian König
Am 13.01.2015 um 18:46 schrieb Alex Deucher:
> From: Slava Grigorev 
>
> Signed-off-by: Slava Grigorev 
> Signed-off-by: Alex Deucher 
> ---
>   drivers/gpu/drm/radeon/dce6_afmt.c  | 16 +
>   drivers/gpu/drm/radeon/evergreen_hdmi.c | 33 --
>   drivers/gpu/drm/radeon/radeon_audio.c   | 62 
> +
>   drivers/gpu/drm/radeon/radeon_audio.h   |  4 +++
>   4 files changed, 51 insertions(+), 64 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/dce6_afmt.c 
> b/drivers/gpu/drm/radeon/dce6_afmt.c
> index a24c95a..96f298c 100644
> --- a/drivers/gpu/drm/radeon/dce6_afmt.c
> +++ b/drivers/gpu/drm/radeon/dce6_afmt.c
> @@ -102,13 +102,11 @@ void dce6_afmt_select_pin(struct drm_encoder *encoder)
>   }
>   
>   void dce6_afmt_write_latency_fields(struct drm_encoder *encoder,
> - struct drm_display_mode *mode)
> + struct drm_connector *connector, struct drm_display_mode *mode)
>   {
>   struct radeon_device *rdev = encoder->dev->dev_private;
>   struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
>   struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv;
> - struct drm_connector *connector;
> - struct radeon_connector *radeon_connector = NULL;
>   u32 tmp = 0, offset;
>   
>   if (!dig || !dig->afmt || !dig->afmt->pin)
> @@ -116,18 +114,6 @@ void dce6_afmt_write_latency_fields(struct drm_encoder 
> *encoder,
>   
>   offset = dig->afmt->pin->offset;
>   
> - list_for_each_entry(connector, 
> >dev->mode_config.connector_list, head) {
> - if (connector->encoder == encoder) {
> - radeon_connector = to_radeon_connector(connector);
> - break;
> - }
> - }
> -
> - if (!radeon_connector) {
> - DRM_ERROR("Couldn't find encoder's connector\n");
> - return;
> - }
> -
>   if (mode->flags & DRM_MODE_FLAG_INTERLACE) {
>   if (connector->latency_present[1])
>   tmp = VIDEO_LIPSYNC(connector->video_latency[1]) |
> diff --git a/drivers/gpu/drm/radeon/evergreen_hdmi.c 
> b/drivers/gpu/drm/radeon/evergreen_hdmi.c
> index 3a9bb04..aa8a31b 100644
> --- a/drivers/gpu/drm/radeon/evergreen_hdmi.c
> +++ b/drivers/gpu/drm/radeon/evergreen_hdmi.c
> @@ -34,8 +34,6 @@
>   #include "atom.h"
>   
>   extern void dce6_afmt_select_pin(struct drm_encoder *encoder);
> -extern void dce6_afmt_write_latency_fields(struct drm_encoder *encoder,
> -struct drm_display_mode *mode);
>   
>   /* enable the audio stream */
>   static void dce4_audio_enable(struct radeon_device *rdev,
> @@ -90,26 +88,12 @@ static void evergreen_hdmi_update_ACR(struct drm_encoder 
> *encoder, uint32_t cloc
>   WREG32(HDMI_ACR_48_1 + offset, acr.n_48khz);
>   }
>   
> -static void dce4_afmt_write_latency_fields(struct drm_encoder *encoder,
> -struct drm_display_mode *mode)
> +void dce4_afmt_write_latency_fields(struct drm_encoder *encoder,
> + struct drm_connector *connector, struct drm_display_mode *mode)
>   {
>   struct radeon_device *rdev = encoder->dev->dev_private;
> - struct drm_connector *connector;
> - struct radeon_connector *radeon_connector = NULL;
>   u32 tmp = 0;
>   
> - list_for_each_entry(connector, 
> >dev->mode_config.connector_list, head) {
> - if (connector->encoder == encoder) {
> - radeon_connector = to_radeon_connector(connector);
> - break;
> - }
> - }
> -
> - if (!radeon_connector) {
> - DRM_ERROR("Couldn't find encoder's connector\n");
> - return;
> - }
> -
>   if (mode->flags & DRM_MODE_FLAG_INTERLACE) {
>   if (connector->latency_present[1])
>   tmp = VIDEO_LIPSYNC(connector->video_latency[1]) |
> @@ -123,7 +107,7 @@ static void dce4_afmt_write_latency_fields(struct 
> drm_encoder *encoder,
>   else
>   tmp = VIDEO_LIPSYNC(255) | AUDIO_LIPSYNC(255);
>   }
> - WREG32(AZ_F0_CODEC_PIN0_CONTROL_RESPONSE_LIPSYNC, tmp);
> + WREG32_ENDPOINT(0, AZ_F0_CODEC_PIN0_CONTROL_RESPONSE_LIPSYNC, tmp);
>   }
>   
>   void dce4_afmt_hdmi_write_speaker_allocation(struct drm_encoder *encoder,
> @@ -418,14 +402,11 @@ void evergreen_hdmi_setmode(struct drm_encoder 
> *encoder, struct drm_display_mode
>   
>   /* fglrx sets 0x40 in 0x5f80 here */
>   
> - if (ASIC_IS_DCE6(rdev)) {
> + if (ASIC_IS_DCE6(rdev))
>   dce6_afmt_select_pin(encoder);
> - radeon_audio_write_sad_regs(encoder);
> - dce6_afmt_write_latency_fields(encoder, mode);
> - } else {
> - radeon_audio_write_sad_regs(encoder);
> - dce4_afmt_write_latency_fields(encoder, mode);
> - }
> +
> + radeon_audio_write_sad_regs(encoder);
> + 

[PATCH 05/24] radeon/audio: consolidate write_latency_fields() functions

2015-01-13 Thread Alex Deucher
From: Slava Grigorev 

Signed-off-by: Slava Grigorev 
Signed-off-by: Alex Deucher 
---
 drivers/gpu/drm/radeon/dce6_afmt.c  | 16 +
 drivers/gpu/drm/radeon/evergreen_hdmi.c | 33 --
 drivers/gpu/drm/radeon/radeon_audio.c   | 62 +
 drivers/gpu/drm/radeon/radeon_audio.h   |  4 +++
 4 files changed, 51 insertions(+), 64 deletions(-)

diff --git a/drivers/gpu/drm/radeon/dce6_afmt.c 
b/drivers/gpu/drm/radeon/dce6_afmt.c
index a24c95a..96f298c 100644
--- a/drivers/gpu/drm/radeon/dce6_afmt.c
+++ b/drivers/gpu/drm/radeon/dce6_afmt.c
@@ -102,13 +102,11 @@ void dce6_afmt_select_pin(struct drm_encoder *encoder)
 }

 void dce6_afmt_write_latency_fields(struct drm_encoder *encoder,
-   struct drm_display_mode *mode)
+   struct drm_connector *connector, struct drm_display_mode *mode)
 {
struct radeon_device *rdev = encoder->dev->dev_private;
struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv;
-   struct drm_connector *connector;
-   struct radeon_connector *radeon_connector = NULL;
u32 tmp = 0, offset;

if (!dig || !dig->afmt || !dig->afmt->pin)
@@ -116,18 +114,6 @@ void dce6_afmt_write_latency_fields(struct drm_encoder 
*encoder,

offset = dig->afmt->pin->offset;

-   list_for_each_entry(connector, 
>dev->mode_config.connector_list, head) {
-   if (connector->encoder == encoder) {
-   radeon_connector = to_radeon_connector(connector);
-   break;
-   }
-   }
-
-   if (!radeon_connector) {
-   DRM_ERROR("Couldn't find encoder's connector\n");
-   return;
-   }
-
if (mode->flags & DRM_MODE_FLAG_INTERLACE) {
if (connector->latency_present[1])
tmp = VIDEO_LIPSYNC(connector->video_latency[1]) |
diff --git a/drivers/gpu/drm/radeon/evergreen_hdmi.c 
b/drivers/gpu/drm/radeon/evergreen_hdmi.c
index 3a9bb04..aa8a31b 100644
--- a/drivers/gpu/drm/radeon/evergreen_hdmi.c
+++ b/drivers/gpu/drm/radeon/evergreen_hdmi.c
@@ -34,8 +34,6 @@
 #include "atom.h"

 extern void dce6_afmt_select_pin(struct drm_encoder *encoder);
-extern void dce6_afmt_write_latency_fields(struct drm_encoder *encoder,
-  struct drm_display_mode *mode);

 /* enable the audio stream */
 static void dce4_audio_enable(struct radeon_device *rdev,
@@ -90,26 +88,12 @@ static void evergreen_hdmi_update_ACR(struct drm_encoder 
*encoder, uint32_t cloc
WREG32(HDMI_ACR_48_1 + offset, acr.n_48khz);
 }

-static void dce4_afmt_write_latency_fields(struct drm_encoder *encoder,
-  struct drm_display_mode *mode)
+void dce4_afmt_write_latency_fields(struct drm_encoder *encoder,
+   struct drm_connector *connector, struct drm_display_mode *mode)
 {
struct radeon_device *rdev = encoder->dev->dev_private;
-   struct drm_connector *connector;
-   struct radeon_connector *radeon_connector = NULL;
u32 tmp = 0;

-   list_for_each_entry(connector, 
>dev->mode_config.connector_list, head) {
-   if (connector->encoder == encoder) {
-   radeon_connector = to_radeon_connector(connector);
-   break;
-   }
-   }
-
-   if (!radeon_connector) {
-   DRM_ERROR("Couldn't find encoder's connector\n");
-   return;
-   }
-
if (mode->flags & DRM_MODE_FLAG_INTERLACE) {
if (connector->latency_present[1])
tmp = VIDEO_LIPSYNC(connector->video_latency[1]) |
@@ -123,7 +107,7 @@ static void dce4_afmt_write_latency_fields(struct 
drm_encoder *encoder,
else
tmp = VIDEO_LIPSYNC(255) | AUDIO_LIPSYNC(255);
}
-   WREG32(AZ_F0_CODEC_PIN0_CONTROL_RESPONSE_LIPSYNC, tmp);
+   WREG32_ENDPOINT(0, AZ_F0_CODEC_PIN0_CONTROL_RESPONSE_LIPSYNC, tmp);
 }

 void dce4_afmt_hdmi_write_speaker_allocation(struct drm_encoder *encoder,
@@ -418,14 +402,11 @@ void evergreen_hdmi_setmode(struct drm_encoder *encoder, 
struct drm_display_mode

/* fglrx sets 0x40 in 0x5f80 here */

-   if (ASIC_IS_DCE6(rdev)) {
+   if (ASIC_IS_DCE6(rdev))
dce6_afmt_select_pin(encoder);
-   radeon_audio_write_sad_regs(encoder);
-   dce6_afmt_write_latency_fields(encoder, mode);
-   } else {
-   radeon_audio_write_sad_regs(encoder);
-   dce4_afmt_write_latency_fields(encoder, mode);
-   }
+
+   radeon_audio_write_sad_regs(encoder);
+   radeon_audio_write_latency_fields(encoder, mode);

err = drm_hdmi_avi_infoframe_from_display_mode(, mode);
if (err < 0) {
diff --git a/drivers/gpu/drm/radeon/radeon_audio.c