diff mbox series

[4/9] drm/ast: Split ast_set_ext_reg() into color and threshold function

Message ID 20191028154928.4058-5-tzimmermann@suse.de (mailing list archive)
State New, archived
Headers show
Series drm/ast: Convert to atomic modesetting | expand

Commit Message

Thomas Zimmermann Oct. 28, 2019, 3:49 p.m. UTC
In ast_set_ext_reg() sets several framebuffer options and CRT threshold
parameters. The former is mostly state of the primary plane; the latter
is constant. Hence, split the function in two and make it work with
atomic modesetting.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/ast/ast_mode.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

Comments

Gerd Hoffmann Nov. 5, 2019, 9:45 a.m. UTC | #1
On Mon, Oct 28, 2019 at 04:49:23PM +0100, Thomas Zimmermann wrote:
> In ast_set_ext_reg() sets several framebuffer options and CRT threshold
> parameters. The former is mostly state of the primary plane; the latter
> is constant. Hence, split the function in two and make it work with
> atomic modesetting.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>

Acked-by: Gerd Hoffmann <kraxel@redhat.com>

> ---
>  drivers/gpu/drm/ast/ast_mode.c | 15 ++++++++++-----
>  1 file changed, 10 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
> index b3f82c2d274d..5feb687191e0 100644
> --- a/drivers/gpu/drm/ast/ast_mode.c
> +++ b/drivers/gpu/drm/ast/ast_mode.c
> @@ -419,11 +419,10 @@ static void ast_set_dclk_reg(struct drm_device *dev, struct drm_display_mode *mo
>  			       ((clk_info->param3 & 0x3) << 4));
>  }
>  
> -static void ast_set_ext_reg(struct drm_crtc *crtc, struct drm_display_mode *mode,
> -			     struct ast_vbios_mode_info *vbios_mode)
> +static void ast_set_color_reg(struct drm_crtc *crtc,
> +			      const struct drm_framebuffer *fb)
>  {
>  	struct ast_private *ast = crtc->dev->dev_private;
> -	const struct drm_framebuffer *fb = crtc->primary->fb;
>  	u8 jregA0 = 0, jregA3 = 0, jregA8 = 0;
>  
>  	switch (fb->format->cpp[0] * 8) {
> @@ -448,6 +447,11 @@ static void ast_set_ext_reg(struct drm_crtc *crtc, struct drm_display_mode *mode
>  	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xa0, 0x8f, jregA0);
>  	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xa3, 0xf0, jregA3);
>  	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xa8, 0xfd, jregA8);
> +}
> +
> +static void ast_set_crtthd_reg(struct drm_crtc *crtc)
> +{
> +	struct ast_private *ast = crtc->dev->dev_private;
>  
>  	/* Set Threshold */
>  	if (ast->chip == AST2300 || ast->chip == AST2400 ||
> @@ -467,7 +471,7 @@ static void ast_set_ext_reg(struct drm_crtc *crtc, struct drm_display_mode *mode
>  }
>  
>  static void ast_set_sync_reg(struct drm_device *dev, struct drm_display_mode *mode,
> -		      struct ast_vbios_mode_info *vbios_mode)
> +			     struct ast_vbios_mode_info *vbios_mode)
>  {
>  	struct ast_private *ast = dev->dev_private;
>  	u8 jreg;
> @@ -595,7 +599,8 @@ static int ast_crtc_mode_set(struct drm_crtc *crtc,
>  	ast_set_crtc_reg(crtc, adjusted_mode, &vbios_mode);
>  	ast_set_offset_reg(crtc);
>  	ast_set_dclk_reg(dev, adjusted_mode, &vbios_mode);
> -	ast_set_ext_reg(crtc, adjusted_mode, &vbios_mode);
> +	ast_set_color_reg(crtc, fb);
> +	ast_set_crtthd_reg(crtc);
>  	ast_set_sync_reg(dev, adjusted_mode, &vbios_mode);
>  	ast_set_dac_reg(crtc, adjusted_mode, &vbios_mode);
>  
> -- 
> 2.23.0
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
index b3f82c2d274d..5feb687191e0 100644
--- a/drivers/gpu/drm/ast/ast_mode.c
+++ b/drivers/gpu/drm/ast/ast_mode.c
@@ -419,11 +419,10 @@  static void ast_set_dclk_reg(struct drm_device *dev, struct drm_display_mode *mo
 			       ((clk_info->param3 & 0x3) << 4));
 }
 
-static void ast_set_ext_reg(struct drm_crtc *crtc, struct drm_display_mode *mode,
-			     struct ast_vbios_mode_info *vbios_mode)
+static void ast_set_color_reg(struct drm_crtc *crtc,
+			      const struct drm_framebuffer *fb)
 {
 	struct ast_private *ast = crtc->dev->dev_private;
-	const struct drm_framebuffer *fb = crtc->primary->fb;
 	u8 jregA0 = 0, jregA3 = 0, jregA8 = 0;
 
 	switch (fb->format->cpp[0] * 8) {
@@ -448,6 +447,11 @@  static void ast_set_ext_reg(struct drm_crtc *crtc, struct drm_display_mode *mode
 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xa0, 0x8f, jregA0);
 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xa3, 0xf0, jregA3);
 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xa8, 0xfd, jregA8);
+}
+
+static void ast_set_crtthd_reg(struct drm_crtc *crtc)
+{
+	struct ast_private *ast = crtc->dev->dev_private;
 
 	/* Set Threshold */
 	if (ast->chip == AST2300 || ast->chip == AST2400 ||
@@ -467,7 +471,7 @@  static void ast_set_ext_reg(struct drm_crtc *crtc, struct drm_display_mode *mode
 }
 
 static void ast_set_sync_reg(struct drm_device *dev, struct drm_display_mode *mode,
-		      struct ast_vbios_mode_info *vbios_mode)
+			     struct ast_vbios_mode_info *vbios_mode)
 {
 	struct ast_private *ast = dev->dev_private;
 	u8 jreg;
@@ -595,7 +599,8 @@  static int ast_crtc_mode_set(struct drm_crtc *crtc,
 	ast_set_crtc_reg(crtc, adjusted_mode, &vbios_mode);
 	ast_set_offset_reg(crtc);
 	ast_set_dclk_reg(dev, adjusted_mode, &vbios_mode);
-	ast_set_ext_reg(crtc, adjusted_mode, &vbios_mode);
+	ast_set_color_reg(crtc, fb);
+	ast_set_crtthd_reg(crtc);
 	ast_set_sync_reg(dev, adjusted_mode, &vbios_mode);
 	ast_set_dac_reg(crtc, adjusted_mode, &vbios_mode);