aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2018-02-13 07:00:25 -0500
committerTomi Valkeinen <tomi.valkeinen@ti.com>2018-03-01 02:18:18 -0500
commit3cc62aadf414102785adbfc3dd2f2f3be85d60db (patch)
tree2395b877248336dec6ff96bf8ac5932f7cfb421a /drivers/gpu
parent8aea8e6a79e77f4c4af4edc45db744f28f6fe008 (diff)
drm: omapdrm: dss: Pass DSS pointer to dss_get_*_clk_source()
This removes the need to access the global DSS private data in those functions (both for the current accesses and the future ones that will be introduced when allocating the DSS device dynamically). Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/omapdrm/dss/dispc.c11
-rw-r--r--drivers/gpu/drm/omapdrm/dss/dsi.c8
-rw-r--r--drivers/gpu/drm/omapdrm/dss/dss.c18
-rw-r--r--drivers/gpu/drm/omapdrm/dss/dss.h8
4 files changed, 27 insertions, 18 deletions
diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c b/drivers/gpu/drm/omapdrm/dss/dispc.c
index 86d18f2d48ba..048b2e4d1f40 100644
--- a/drivers/gpu/drm/omapdrm/dss/dispc.c
+++ b/drivers/gpu/drm/omapdrm/dss/dispc.c
@@ -165,6 +165,7 @@ struct dispc_features {
165static struct { 165static struct {
166 struct platform_device *pdev; 166 struct platform_device *pdev;
167 void __iomem *base; 167 void __iomem *base;
168 struct dss_device *dss;
168 169
169 int irq; 170 int irq;
170 irq_handler_t user_handler; 171 irq_handler_t user_handler;
@@ -3112,7 +3113,7 @@ static unsigned long dispc_fclk_rate(void)
3112 unsigned long r; 3113 unsigned long r;
3113 enum dss_clk_source src; 3114 enum dss_clk_source src;
3114 3115
3115 src = dss_get_dispc_clk_source(); 3116 src = dss_get_dispc_clk_source(dispc.dss);
3116 3117
3117 if (src == DSS_CLK_SRC_FCK) { 3118 if (src == DSS_CLK_SRC_FCK) {
3118 r = dss_get_dispc_clk_rate(); 3119 r = dss_get_dispc_clk_rate();
@@ -3139,7 +3140,7 @@ static unsigned long dispc_mgr_lclk_rate(enum omap_channel channel)
3139 if (!dss_mgr_is_lcd(channel)) 3140 if (!dss_mgr_is_lcd(channel))
3140 return dispc_fclk_rate(); 3141 return dispc_fclk_rate();
3141 3142
3142 src = dss_get_lcd_clk_source(channel); 3143 src = dss_get_lcd_clk_source(dispc.dss, channel);
3143 3144
3144 if (src == DSS_CLK_SRC_FCK) { 3145 if (src == DSS_CLK_SRC_FCK) {
3145 r = dss_get_dispc_clk_rate(); 3146 r = dss_get_dispc_clk_rate();
@@ -3219,7 +3220,7 @@ static void dispc_dump_clocks_channel(struct seq_file *s, enum omap_channel chan
3219 3220
3220 seq_printf(s, "- %s -\n", mgr_desc[channel].name); 3221 seq_printf(s, "- %s -\n", mgr_desc[channel].name);
3221 3222
3222 lcd_clk_src = dss_get_lcd_clk_source(channel); 3223 lcd_clk_src = dss_get_lcd_clk_source(dispc.dss, channel);
3223 3224
3224 seq_printf(s, "%s clk source = %s\n", mgr_desc[channel].name, 3225 seq_printf(s, "%s clk source = %s\n", mgr_desc[channel].name,
3225 dss_get_clk_source_name(lcd_clk_src)); 3226 dss_get_clk_source_name(lcd_clk_src));
@@ -3236,7 +3237,7 @@ void dispc_dump_clocks(struct seq_file *s)
3236{ 3237{
3237 int lcd; 3238 int lcd;
3238 u32 l; 3239 u32 l;
3239 enum dss_clk_source dispc_clk_src = dss_get_dispc_clk_source(); 3240 enum dss_clk_source dispc_clk_src = dss_get_dispc_clk_source(dispc.dss);
3240 3241
3241 if (dispc_runtime_get()) 3242 if (dispc_runtime_get())
3242 return; 3243 return;
@@ -4549,12 +4550,14 @@ static int dispc_bind(struct device *dev, struct device *master, void *data)
4549{ 4550{
4550 struct platform_device *pdev = to_platform_device(dev); 4551 struct platform_device *pdev = to_platform_device(dev);
4551 const struct soc_device_attribute *soc; 4552 const struct soc_device_attribute *soc;
4553 struct dss_device *dss = dss_get_device(master);
4552 u32 rev; 4554 u32 rev;
4553 int r = 0; 4555 int r = 0;
4554 struct resource *dispc_mem; 4556 struct resource *dispc_mem;
4555 struct device_node *np = pdev->dev.of_node; 4557 struct device_node *np = pdev->dev.of_node;
4556 4558
4557 dispc.pdev = pdev; 4559 dispc.pdev = pdev;
4560 dispc.dss = dss;
4558 4561
4559 spin_lock_init(&dispc.control_lock); 4562 spin_lock_init(&dispc.control_lock);
4560 4563
diff --git a/drivers/gpu/drm/omapdrm/dss/dsi.c b/drivers/gpu/drm/omapdrm/dss/dsi.c
index 71f86a5d4029..26f4122f6784 100644
--- a/drivers/gpu/drm/omapdrm/dss/dsi.c
+++ b/drivers/gpu/drm/omapdrm/dss/dsi.c
@@ -1286,8 +1286,10 @@ static unsigned long dsi_fclk_rate(struct platform_device *dsidev)
1286{ 1286{
1287 unsigned long r; 1287 unsigned long r;
1288 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev); 1288 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev);
1289 enum dss_clk_source source;
1289 1290
1290 if (dss_get_dsi_clk_source(dsi->module_id) == DSS_CLK_SRC_FCK) { 1291 source = dss_get_dsi_clk_source(dsi->dss, dsi->module_id);
1292 if (source == DSS_CLK_SRC_FCK) {
1291 /* DSI FCLK source is DSS_CLK_FCK */ 1293 /* DSI FCLK source is DSS_CLK_FCK */
1292 r = clk_get_rate(dsi->dss_clk); 1294 r = clk_get_rate(dsi->dss_clk);
1293 } else { 1295 } else {
@@ -1506,8 +1508,8 @@ static void dsi_dump_dsidev_clocks(struct platform_device *dsidev,
1506 int dsi_module = dsi->module_id; 1508 int dsi_module = dsi->module_id;
1507 struct dss_pll *pll = &dsi->pll; 1509 struct dss_pll *pll = &dsi->pll;
1508 1510
1509 dispc_clk_src = dss_get_dispc_clk_source(); 1511 dispc_clk_src = dss_get_dispc_clk_source(dsi->dss);
1510 dsi_clk_src = dss_get_dsi_clk_source(dsi_module); 1512 dsi_clk_src = dss_get_dsi_clk_source(dsi->dss, dsi_module);
1511 1513
1512 if (dsi_runtime_get(dsidev)) 1514 if (dsi_runtime_get(dsidev))
1513 return; 1515 return;
diff --git a/drivers/gpu/drm/omapdrm/dss/dss.c b/drivers/gpu/drm/omapdrm/dss/dss.c
index 73698a497e4a..bdf8f66002b6 100644
--- a/drivers/gpu/drm/omapdrm/dss/dss.c
+++ b/drivers/gpu/drm/omapdrm/dss/dss.c
@@ -570,25 +570,27 @@ void dss_select_lcd_clk_source(struct dss_device *dss,
570 dss->lcd_clk_source[idx] = clk_src; 570 dss->lcd_clk_source[idx] = clk_src;
571} 571}
572 572
573enum dss_clk_source dss_get_dispc_clk_source(void) 573enum dss_clk_source dss_get_dispc_clk_source(struct dss_device *dss)
574{ 574{
575 return dss.dispc_clk_source; 575 return dss->dispc_clk_source;
576} 576}
577 577
578enum dss_clk_source dss_get_dsi_clk_source(int dsi_module) 578enum dss_clk_source dss_get_dsi_clk_source(struct dss_device *dss,
579 int dsi_module)
579{ 580{
580 return dss.dsi_clk_source[dsi_module]; 581 return dss->dsi_clk_source[dsi_module];
581} 582}
582 583
583enum dss_clk_source dss_get_lcd_clk_source(enum omap_channel channel) 584enum dss_clk_source dss_get_lcd_clk_source(struct dss_device *dss,
585 enum omap_channel channel)
584{ 586{
585 if (dss.feat->has_lcd_clk_src) { 587 if (dss->feat->has_lcd_clk_src) {
586 int idx = dss_get_channel_index(channel); 588 int idx = dss_get_channel_index(channel);
587 return dss.lcd_clk_source[idx]; 589 return dss->lcd_clk_source[idx];
588 } else { 590 } else {
589 /* LCD_CLK source is the same as DISPC_FCLK source for 591 /* LCD_CLK source is the same as DISPC_FCLK source for
590 * OMAP2 and OMAP3 */ 592 * OMAP2 and OMAP3 */
591 return dss.dispc_clk_source; 593 return dss->dispc_clk_source;
592 } 594 }
593} 595}
594 596
diff --git a/drivers/gpu/drm/omapdrm/dss/dss.h b/drivers/gpu/drm/omapdrm/dss/dss.h
index e3122e6ea043..fc70c3c5ef11 100644
--- a/drivers/gpu/drm/omapdrm/dss/dss.h
+++ b/drivers/gpu/drm/omapdrm/dss/dss.h
@@ -323,9 +323,11 @@ void dss_select_dsi_clk_source(struct dss_device *dss, int dsi_module,
323void dss_select_lcd_clk_source(struct dss_device *dss, 323void dss_select_lcd_clk_source(struct dss_device *dss,
324 enum omap_channel channel, 324 enum omap_channel channel,
325 enum dss_clk_source clk_src); 325 enum dss_clk_source clk_src);
326enum dss_clk_source dss_get_dispc_clk_source(void); 326enum dss_clk_source dss_get_dispc_clk_source(struct dss_device *dss);
327enum dss_clk_source dss_get_dsi_clk_source(int dsi_module); 327enum dss_clk_source dss_get_dsi_clk_source(struct dss_device *dss,
328enum dss_clk_source dss_get_lcd_clk_source(enum omap_channel channel); 328 int dsi_module);
329enum dss_clk_source dss_get_lcd_clk_source(struct dss_device *dss,
330 enum omap_channel channel);
329 331
330void dss_set_venc_output(enum omap_dss_venc_type type); 332void dss_set_venc_output(enum omap_dss_venc_type type);
331void dss_set_dac_pwrdn_bgz(bool enable); 333void dss_set_dac_pwrdn_bgz(bool enable);