Re: [PATCH v3 2/2] drm/tilcdc: Remove tilcdc_crtc_max_width(), use private data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Jyri,

Thank you for the patch.

On Sat, Oct 10, 2020 at 08:00:59PM +0300, Jyri Sarha wrote:
> We already have a private data member for maximum display width so
> let's use it and get rid of the redundant tilcdc_crtc_max_width().
> 
> The LCDC version probing is moved to before reading the device tree
> properties so that the version information is available when private
> data maximum width is initialized, if "max-width" property is not
> found.
> 
> Signed-off-by: Jyri Sarha <jsarha@xxxxxx>
> Reviewed-by: Tomi Valkeinen <tomi.valkeinen@xxxxxx>

Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>

> ---
>  drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 16 +-----------
>  drivers/gpu/drm/tilcdc/tilcdc_drv.c  | 38 +++++++++++++++-------------
>  drivers/gpu/drm/tilcdc/tilcdc_drv.h  |  7 ++---
>  3 files changed, 26 insertions(+), 35 deletions(-)
> 
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
> index 0fd3dafe6404..da2ab2aa3577 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
> @@ -754,20 +754,6 @@ static const struct drm_crtc_funcs tilcdc_crtc_funcs = {
>  	.disable_vblank	= tilcdc_crtc_disable_vblank,
>  };
>  
> -int tilcdc_crtc_max_width(struct drm_crtc *crtc)
> -{
> -	struct drm_device *dev = crtc->dev;
> -	struct tilcdc_drm_private *priv = dev->dev_private;
> -	int max_width = 0;
> -
> -	if (priv->rev == 1)
> -		max_width = 1024;
> -	else if (priv->rev == 2)
> -		max_width = 2048;
> -
> -	return max_width;
> -}
> -
>  static enum drm_mode_status
>  tilcdc_crtc_mode_valid(struct drm_crtc *crtc,
>  		       const struct drm_display_mode *mode)
> @@ -780,7 +766,7 @@ tilcdc_crtc_mode_valid(struct drm_crtc *crtc,
>  	 * check to see if the width is within the range that
>  	 * the LCD Controller physically supports
>  	 */
> -	if (mode->hdisplay > tilcdc_crtc_max_width(crtc))
> +	if (mode->hdisplay > priv->max_width)
>  		return MODE_VIRTUAL_X;
>  
>  	/* width must be multiple of 16 */
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> index 4f5fc3e87383..c5f82e693f1a 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> @@ -105,7 +105,7 @@ static void modeset_init(struct drm_device *dev)
>  
>  	dev->mode_config.min_width = 0;
>  	dev->mode_config.min_height = 0;
> -	dev->mode_config.max_width = tilcdc_crtc_max_width(priv->crtc);
> +	dev->mode_config.max_width = priv->max_width;
>  	dev->mode_config.max_height = 2048;
>  	dev->mode_config.funcs = &mode_config_funcs;
>  }
> @@ -218,22 +218,6 @@ static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
>  		goto init_failed;
>  	}
>  
> -	if (of_property_read_u32(node, "max-bandwidth", &priv->max_bandwidth))
> -		priv->max_bandwidth = TILCDC_DEFAULT_MAX_BANDWIDTH;
> -
> -	DBG("Maximum Bandwidth Value %d", priv->max_bandwidth);
> -
> -	if (of_property_read_u32(node, "max-width", &priv->max_width))
> -		priv->max_width = TILCDC_DEFAULT_MAX_WIDTH;
> -
> -	DBG("Maximum Horizontal Pixel Width Value %dpixels", priv->max_width);
> -
> -	if (of_property_read_u32(node, "max-pixelclock",
> -					&priv->max_pixelclock))
> -		priv->max_pixelclock = TILCDC_DEFAULT_MAX_PIXELCLOCK;
> -
> -	DBG("Maximum Pixel Clock Value %dKHz", priv->max_pixelclock);
> -
>  	pm_runtime_enable(dev);
>  
>  	/* Determine LCD IP Version */
> @@ -287,6 +271,26 @@ static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)
>  		}
>  	}
>  
> +	if (of_property_read_u32(node, "max-bandwidth", &priv->max_bandwidth))
> +		priv->max_bandwidth = TILCDC_DEFAULT_MAX_BANDWIDTH;
> +
> +	DBG("Maximum Bandwidth Value %d", priv->max_bandwidth);
> +
> +	if (of_property_read_u32(node, "max-width", &priv->max_width)) {
> +		if (priv->rev == 1)
> +			priv->max_width = TILCDC_DEFAULT_MAX_WIDTH_V1;
> +		else
> +			priv->max_width = TILCDC_DEFAULT_MAX_WIDTH_V2;
> +	}
> +
> +	DBG("Maximum Horizontal Pixel Width Value %dpixels", priv->max_width);
> +
> +	if (of_property_read_u32(node, "max-pixelclock",
> +				 &priv->max_pixelclock))
> +		priv->max_pixelclock = TILCDC_DEFAULT_MAX_PIXELCLOCK;
> +
> +	DBG("Maximum Pixel Clock Value %dKHz", priv->max_pixelclock);
> +
>  	ret = tilcdc_crtc_create(ddev);
>  	if (ret < 0) {
>  		dev_err(dev, "failed to create crtc\n");
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.h b/drivers/gpu/drm/tilcdc/tilcdc_drv.h
> index 18815e75ca4f..d29806ca8817 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.h
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.h
> @@ -28,8 +28,10 @@ struct drm_plane;
>  
>  /* Defaulting to pixel clock defined on AM335x */
>  #define TILCDC_DEFAULT_MAX_PIXELCLOCK  126000
> -/* Defaulting to max width as defined on AM335x */
> -#define TILCDC_DEFAULT_MAX_WIDTH  2048
> +/* Maximum display width for LCDC V1 */
> +#define TILCDC_DEFAULT_MAX_WIDTH_V1  1024
> +/* ... and for LCDC V2 found on AM335x: */
> +#define TILCDC_DEFAULT_MAX_WIDTH_V2  2048
>  /*
>   * This may need some tweaking, but want to allow at least 1280x1024@60
>   * with optimized DDR & EMIF settings tweaked 1920x1080@24 appears to
> @@ -158,7 +160,6 @@ void tilcdc_crtc_set_panel_info(struct drm_crtc *crtc,
>  		const struct tilcdc_panel_info *info);
>  void tilcdc_crtc_set_simulate_vesa_sync(struct drm_crtc *crtc,
>  					bool simulate_vesa_sync);
> -int tilcdc_crtc_max_width(struct drm_crtc *crtc);
>  void tilcdc_crtc_shutdown(struct drm_crtc *crtc);
>  int tilcdc_crtc_update_fb(struct drm_crtc *crtc,
>  		struct drm_framebuffer *fb,

-- 
Regards,

Laurent Pinchart
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel



[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux