diff mbox series

[27/29] drm/omap: Store pixel clock instead of full mode in DPI and SDI encoders

Message ID 20181205150022.24200-28-laurent.pinchart@ideasonboard.com (mailing list archive)
State New, archived
Headers show
Series omapdrm: Last large refactoring for drm_bridge transition | expand

Commit Message

Laurent Pinchart Dec. 5, 2018, 3 p.m. UTC
The DPI and SDI encoders store the full videomode upon mode set, to only
use the value of the pixel clock when enabling the encoder. This wastes
memory. Store the pixel clock value only.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/gpu/drm/omapdrm/dss/dpi.c | 9 ++++-----
 drivers/gpu/drm/omapdrm/dss/sdi.c | 6 +++---
 2 files changed, 7 insertions(+), 8 deletions(-)

Comments

Sebastian Reichel Dec. 9, 2018, 10:27 p.m. UTC | #1
Hi,

On Wed, Dec 05, 2018 at 05:00:20PM +0200, Laurent Pinchart wrote:
> The DPI and SDI encoders store the full videomode upon mode set, to only
> use the value of the pixel clock when enabling the encoder. This wastes
> memory. Store the pixel clock value only.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---

Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>

-- Sebastian

>  drivers/gpu/drm/omapdrm/dss/dpi.c | 9 ++++-----
>  drivers/gpu/drm/omapdrm/dss/sdi.c | 6 +++---
>  2 files changed, 7 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/gpu/drm/omapdrm/dss/dpi.c b/drivers/gpu/drm/omapdrm/dss/dpi.c
> index 0cb3cb72f15f..295bc3eeea80 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dpi.c
> +++ b/drivers/gpu/drm/omapdrm/dss/dpi.c
> @@ -47,8 +47,8 @@ struct dpi_data {
>  
>  	struct mutex lock;
>  
> -	struct videomode vm;
>  	struct dss_lcd_mgr_config mgr_config;
> +	unsigned long pixelclock;
>  	int data_lines;
>  
>  	struct omap_dss_device output;
> @@ -347,16 +347,15 @@ static int dpi_set_dispc_clk(struct dpi_data *dpi, unsigned long pck_req,
>  
>  static int dpi_set_mode(struct dpi_data *dpi)
>  {
> -	const struct videomode *vm = &dpi->vm;
>  	int lck_div = 0, pck_div = 0;
>  	unsigned long fck = 0;
>  	int r = 0;
>  
>  	if (dpi->pll)
>  		r = dpi_set_pll_clk(dpi, dpi->output.dispc_channel,
> -				    vm->pixelclock, &fck, &lck_div, &pck_div);
> +				    dpi->pixelclock, &fck, &lck_div, &pck_div);
>  	else
> -		r = dpi_set_dispc_clk(dpi, vm->pixelclock, &fck,
> +		r = dpi_set_dispc_clk(dpi, dpi->pixelclock, &fck,
>  				&lck_div, &pck_div);
>  	if (r)
>  		return r;
> @@ -467,7 +466,7 @@ static void dpi_set_timings(struct omap_dss_device *dssdev,
>  
>  	mutex_lock(&dpi->lock);
>  
> -	drm_display_mode_to_videomode(mode, &dpi->vm);
> +	dpi->pixelclock = mode->clock * 1000;
>  
>  	mutex_unlock(&dpi->lock);
>  }
> diff --git a/drivers/gpu/drm/omapdrm/dss/sdi.c b/drivers/gpu/drm/omapdrm/dss/sdi.c
> index f096a7f77e5f..38b0bf19538d 100644
> --- a/drivers/gpu/drm/omapdrm/dss/sdi.c
> +++ b/drivers/gpu/drm/omapdrm/dss/sdi.c
> @@ -37,7 +37,7 @@ struct sdi_device {
>  	struct regulator *vdds_sdi_reg;
>  
>  	struct dss_lcd_mgr_config mgr_config;
> -	struct videomode vm;
> +	unsigned long pixelclock;
>  	int datapairs;
>  
>  	struct omap_dss_device output;
> @@ -144,7 +144,7 @@ static void sdi_display_enable(struct omap_dss_device *dssdev)
>  	if (r)
>  		goto err_get_dispc;
>  
> -	r = sdi_calc_clock_div(sdi, sdi->vm.pixelclock, &fck, &dispc_cinfo);
> +	r = sdi_calc_clock_div(sdi, sdi->pixelclock, &fck, &dispc_cinfo);
>  	if (r)
>  		goto err_calc_clock_div;
>  
> @@ -210,7 +210,7 @@ static void sdi_set_timings(struct omap_dss_device *dssdev,
>  {
>  	struct sdi_device *sdi = dssdev_to_sdi(dssdev);
>  
> -	drm_display_mode_to_videomode(mode, &sdi->vm);
> +	sdi->pixelclock = mode->clock * 1000;
>  }
>  
>  static int sdi_check_timings(struct omap_dss_device *dssdev,
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
diff mbox series

Patch

diff --git a/drivers/gpu/drm/omapdrm/dss/dpi.c b/drivers/gpu/drm/omapdrm/dss/dpi.c
index 0cb3cb72f15f..295bc3eeea80 100644
--- a/drivers/gpu/drm/omapdrm/dss/dpi.c
+++ b/drivers/gpu/drm/omapdrm/dss/dpi.c
@@ -47,8 +47,8 @@  struct dpi_data {
 
 	struct mutex lock;
 
-	struct videomode vm;
 	struct dss_lcd_mgr_config mgr_config;
+	unsigned long pixelclock;
 	int data_lines;
 
 	struct omap_dss_device output;
@@ -347,16 +347,15 @@  static int dpi_set_dispc_clk(struct dpi_data *dpi, unsigned long pck_req,
 
 static int dpi_set_mode(struct dpi_data *dpi)
 {
-	const struct videomode *vm = &dpi->vm;
 	int lck_div = 0, pck_div = 0;
 	unsigned long fck = 0;
 	int r = 0;
 
 	if (dpi->pll)
 		r = dpi_set_pll_clk(dpi, dpi->output.dispc_channel,
-				    vm->pixelclock, &fck, &lck_div, &pck_div);
+				    dpi->pixelclock, &fck, &lck_div, &pck_div);
 	else
-		r = dpi_set_dispc_clk(dpi, vm->pixelclock, &fck,
+		r = dpi_set_dispc_clk(dpi, dpi->pixelclock, &fck,
 				&lck_div, &pck_div);
 	if (r)
 		return r;
@@ -467,7 +466,7 @@  static void dpi_set_timings(struct omap_dss_device *dssdev,
 
 	mutex_lock(&dpi->lock);
 
-	drm_display_mode_to_videomode(mode, &dpi->vm);
+	dpi->pixelclock = mode->clock * 1000;
 
 	mutex_unlock(&dpi->lock);
 }
diff --git a/drivers/gpu/drm/omapdrm/dss/sdi.c b/drivers/gpu/drm/omapdrm/dss/sdi.c
index f096a7f77e5f..38b0bf19538d 100644
--- a/drivers/gpu/drm/omapdrm/dss/sdi.c
+++ b/drivers/gpu/drm/omapdrm/dss/sdi.c
@@ -37,7 +37,7 @@  struct sdi_device {
 	struct regulator *vdds_sdi_reg;
 
 	struct dss_lcd_mgr_config mgr_config;
-	struct videomode vm;
+	unsigned long pixelclock;
 	int datapairs;
 
 	struct omap_dss_device output;
@@ -144,7 +144,7 @@  static void sdi_display_enable(struct omap_dss_device *dssdev)
 	if (r)
 		goto err_get_dispc;
 
-	r = sdi_calc_clock_div(sdi, sdi->vm.pixelclock, &fck, &dispc_cinfo);
+	r = sdi_calc_clock_div(sdi, sdi->pixelclock, &fck, &dispc_cinfo);
 	if (r)
 		goto err_calc_clock_div;
 
@@ -210,7 +210,7 @@  static void sdi_set_timings(struct omap_dss_device *dssdev,
 {
 	struct sdi_device *sdi = dssdev_to_sdi(dssdev);
 
-	drm_display_mode_to_videomode(mode, &sdi->vm);
+	sdi->pixelclock = mode->clock * 1000;
 }
 
 static int sdi_check_timings(struct omap_dss_device *dssdev,