diff mbox

[v2,02/30] drm: omapdrm: dss: Expose DSS data in a dss_device structure

Message ID 20180213120048.21603-3-laurent.pinchart@ideasonboard.com (mailing list archive)
State New, archived
Headers show

Commit Message

Laurent Pinchart Feb. 13, 2018, noon UTC
The anoonymous dss structure in dss.c is the top-level component in the
omapdss driver. As such it should store all internal instance-specific
data that is currently stored in global variables. This however requires
both naming the structure to pass it around functions, and accessing it
from various locations in the omapdss driver. While we could implement
get and set functions for every field that needs to be accessed outside
of dss.c, that would introduce overhead and complexity that we could
avoid by exposing the structure to internal components of the omapdss
driver. Do so to prepare for removal of global variables.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/gpu/drm/omapdrm/dss/dss.c | 29 +----------------------------
 drivers/gpu/drm/omapdrm/dss/dss.h | 29 +++++++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 28 deletions(-)

Comments

Sebastian Reichel Feb. 13, 2018, 8:05 p.m. UTC | #1
Hi,

On Tue, Feb 13, 2018 at 02:00:20PM +0200, Laurent Pinchart wrote:
> The anoonymous dss structure in dss.c is the top-level component in the
> omapdss driver. As such it should store all internal instance-specific
> data that is currently stored in global variables. This however requires
> both naming the structure to pass it around functions, and accessing it
> from various locations in the omapdss driver. While we could implement
> get and set functions for every field that needs to be accessed outside
> of dss.c, that would introduce overhead and complexity that we could
> avoid by exposing the structure to internal components of the omapdss
> driver. Do so to prepare for removal of global variables.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---

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

-- Sebastian

>  drivers/gpu/drm/omapdrm/dss/dss.c | 29 +----------------------------
>  drivers/gpu/drm/omapdrm/dss/dss.h | 29 +++++++++++++++++++++++++++++
>  2 files changed, 30 insertions(+), 28 deletions(-)
> 
> diff --git a/drivers/gpu/drm/omapdrm/dss/dss.c b/drivers/gpu/drm/omapdrm/dss/dss.c
> index d5490336e7c7..245d8c0ae461 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dss.c
> +++ b/drivers/gpu/drm/omapdrm/dss/dss.c
> @@ -48,8 +48,6 @@
>  #include "omapdss.h"
>  #include "dss.h"
>  
> -#define DSS_SZ_REGS			SZ_512
> -
>  struct dss_reg {
>  	u16 idx;
>  };
> @@ -90,32 +88,7 @@ struct dss_features {
>  	bool has_lcd_clk_src;
>  };
>  
> -static struct {
> -	struct platform_device *pdev;
> -	void __iomem    *base;
> -	struct regmap	*syscon_pll_ctrl;
> -	u32		syscon_pll_ctrl_offset;
> -
> -	struct clk	*parent_clk;
> -	struct clk	*dss_clk;
> -	unsigned long	dss_clk_rate;
> -
> -	unsigned long	cache_req_pck;
> -	unsigned long	cache_prate;
> -	struct dispc_clock_info cache_dispc_cinfo;
> -
> -	enum dss_clk_source dsi_clk_source[MAX_NUM_DSI];
> -	enum dss_clk_source dispc_clk_source;
> -	enum dss_clk_source lcd_clk_source[MAX_DSS_LCD_MANAGERS];
> -
> -	bool		ctx_valid;
> -	u32		ctx[DSS_SZ_REGS / sizeof(u32)];
> -
> -	const struct dss_features *feat;
> -
> -	struct dss_pll	*video1_pll;
> -	struct dss_pll	*video2_pll;
> -} dss;
> +static struct dss_device dss;
>  
>  static const char * const dss_generic_clk_source_names[] = {
>  	[DSS_CLK_SRC_FCK]	= "FCK",
> diff --git a/drivers/gpu/drm/omapdrm/dss/dss.h b/drivers/gpu/drm/omapdrm/dss/dss.h
> index 7f3fa5330408..257ff7c62764 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dss.h
> +++ b/drivers/gpu/drm/omapdrm/dss/dss.h
> @@ -235,6 +235,35 @@ struct dss_lcd_mgr_config {
>  struct seq_file;
>  struct platform_device;
>  
> +#define DSS_SZ_REGS			SZ_512
> +
> +struct dss_device {
> +	struct platform_device *pdev;
> +	void __iomem    *base;
> +	struct regmap	*syscon_pll_ctrl;
> +	u32		syscon_pll_ctrl_offset;
> +
> +	struct clk	*parent_clk;
> +	struct clk	*dss_clk;
> +	unsigned long	dss_clk_rate;
> +
> +	unsigned long	cache_req_pck;
> +	unsigned long	cache_prate;
> +	struct dispc_clock_info cache_dispc_cinfo;
> +
> +	enum dss_clk_source dsi_clk_source[MAX_NUM_DSI];
> +	enum dss_clk_source dispc_clk_source;
> +	enum dss_clk_source lcd_clk_source[MAX_DSS_LCD_MANAGERS];
> +
> +	bool		ctx_valid;
> +	u32		ctx[DSS_SZ_REGS / sizeof(u32)];
> +
> +	const struct dss_features *feat;
> +
> +	struct dss_pll	*video1_pll;
> +	struct dss_pll	*video2_pll;
> +};
> +
>  /* core */
>  static inline int dss_set_min_bus_tput(struct device *dev, unsigned long tput)
>  {
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
diff mbox

Patch

diff --git a/drivers/gpu/drm/omapdrm/dss/dss.c b/drivers/gpu/drm/omapdrm/dss/dss.c
index d5490336e7c7..245d8c0ae461 100644
--- a/drivers/gpu/drm/omapdrm/dss/dss.c
+++ b/drivers/gpu/drm/omapdrm/dss/dss.c
@@ -48,8 +48,6 @@ 
 #include "omapdss.h"
 #include "dss.h"
 
-#define DSS_SZ_REGS			SZ_512
-
 struct dss_reg {
 	u16 idx;
 };
@@ -90,32 +88,7 @@  struct dss_features {
 	bool has_lcd_clk_src;
 };
 
-static struct {
-	struct platform_device *pdev;
-	void __iomem    *base;
-	struct regmap	*syscon_pll_ctrl;
-	u32		syscon_pll_ctrl_offset;
-
-	struct clk	*parent_clk;
-	struct clk	*dss_clk;
-	unsigned long	dss_clk_rate;
-
-	unsigned long	cache_req_pck;
-	unsigned long	cache_prate;
-	struct dispc_clock_info cache_dispc_cinfo;
-
-	enum dss_clk_source dsi_clk_source[MAX_NUM_DSI];
-	enum dss_clk_source dispc_clk_source;
-	enum dss_clk_source lcd_clk_source[MAX_DSS_LCD_MANAGERS];
-
-	bool		ctx_valid;
-	u32		ctx[DSS_SZ_REGS / sizeof(u32)];
-
-	const struct dss_features *feat;
-
-	struct dss_pll	*video1_pll;
-	struct dss_pll	*video2_pll;
-} dss;
+static struct dss_device dss;
 
 static const char * const dss_generic_clk_source_names[] = {
 	[DSS_CLK_SRC_FCK]	= "FCK",
diff --git a/drivers/gpu/drm/omapdrm/dss/dss.h b/drivers/gpu/drm/omapdrm/dss/dss.h
index 7f3fa5330408..257ff7c62764 100644
--- a/drivers/gpu/drm/omapdrm/dss/dss.h
+++ b/drivers/gpu/drm/omapdrm/dss/dss.h
@@ -235,6 +235,35 @@  struct dss_lcd_mgr_config {
 struct seq_file;
 struct platform_device;
 
+#define DSS_SZ_REGS			SZ_512
+
+struct dss_device {
+	struct platform_device *pdev;
+	void __iomem    *base;
+	struct regmap	*syscon_pll_ctrl;
+	u32		syscon_pll_ctrl_offset;
+
+	struct clk	*parent_clk;
+	struct clk	*dss_clk;
+	unsigned long	dss_clk_rate;
+
+	unsigned long	cache_req_pck;
+	unsigned long	cache_prate;
+	struct dispc_clock_info cache_dispc_cinfo;
+
+	enum dss_clk_source dsi_clk_source[MAX_NUM_DSI];
+	enum dss_clk_source dispc_clk_source;
+	enum dss_clk_source lcd_clk_source[MAX_DSS_LCD_MANAGERS];
+
+	bool		ctx_valid;
+	u32		ctx[DSS_SZ_REGS / sizeof(u32)];
+
+	const struct dss_features *feat;
+
+	struct dss_pll	*video1_pll;
+	struct dss_pll	*video2_pll;
+};
+
 /* core */
 static inline int dss_set_min_bus_tput(struct device *dev, unsigned long tput)
 {