Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm: omapdrm: dss: Store the registered plls array in struct dss_device

As part of an effort to remove the usage of global variables in the
driver, store the registered plls array in the dss_device structure
instead of a global variable.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>

authored by

Laurent Pinchart and committed by
Tomi Valkeinen
798957ae f33656e1

+40 -38
+2 -2
drivers/gpu/drm/omapdrm/dss/dispc.c
··· 3123 3123 struct dss_pll *pll; 3124 3124 unsigned int clkout_idx; 3125 3125 3126 - pll = dss_pll_find_by_src(src); 3126 + pll = dss_pll_find_by_src(dispc.dss, src); 3127 3127 clkout_idx = dss_pll_get_clkout_idx_for_src(src); 3128 3128 3129 3129 r = pll->cinfo.clkout[clkout_idx]; ··· 3150 3150 struct dss_pll *pll; 3151 3151 unsigned int clkout_idx; 3152 3152 3153 - pll = dss_pll_find_by_src(src); 3153 + pll = dss_pll_find_by_src(dispc.dss, src); 3154 3154 clkout_idx = dss_pll_get_clkout_idx_for_src(src); 3155 3155 3156 3156 r = pll->cinfo.clkout[clkout_idx];
+9 -8
drivers/gpu/drm/omapdrm/dss/dpi.c
··· 58 58 return container_of(dssdev, struct dpi_data, output); 59 59 } 60 60 61 - static enum dss_clk_source dpi_get_clk_src_dra7xx(enum omap_channel channel) 61 + static enum dss_clk_source dpi_get_clk_src_dra7xx(struct dpi_data *dpi, 62 + enum omap_channel channel) 62 63 { 63 64 /* 64 65 * Possible clock sources: ··· 71 70 switch (channel) { 72 71 case OMAP_DSS_CHANNEL_LCD: 73 72 { 74 - if (dss_pll_find_by_src(DSS_CLK_SRC_PLL1_1)) 73 + if (dss_pll_find_by_src(dpi->dss, DSS_CLK_SRC_PLL1_1)) 75 74 return DSS_CLK_SRC_PLL1_1; 76 75 break; 77 76 } 78 77 case OMAP_DSS_CHANNEL_LCD2: 79 78 { 80 - if (dss_pll_find_by_src(DSS_CLK_SRC_PLL1_3)) 79 + if (dss_pll_find_by_src(dpi->dss, DSS_CLK_SRC_PLL1_3)) 81 80 return DSS_CLK_SRC_PLL1_3; 82 - if (dss_pll_find_by_src(DSS_CLK_SRC_PLL2_3)) 81 + if (dss_pll_find_by_src(dpi->dss, DSS_CLK_SRC_PLL2_3)) 83 82 return DSS_CLK_SRC_PLL2_3; 84 83 break; 85 84 } 86 85 case OMAP_DSS_CHANNEL_LCD3: 87 86 { 88 - if (dss_pll_find_by_src(DSS_CLK_SRC_PLL2_1)) 87 + if (dss_pll_find_by_src(dpi->dss, DSS_CLK_SRC_PLL2_1)) 89 88 return DSS_CLK_SRC_PLL2_1; 90 - if (dss_pll_find_by_src(DSS_CLK_SRC_PLL1_3)) 89 + if (dss_pll_find_by_src(dpi->dss, DSS_CLK_SRC_PLL1_3)) 91 90 return DSS_CLK_SRC_PLL1_3; 92 91 break; 93 92 } ··· 134 133 } 135 134 136 135 case DSS_MODEL_DRA7: 137 - return dpi_get_clk_src_dra7xx(channel); 136 + return dpi_get_clk_src_dra7xx(dpi, channel); 138 137 139 138 default: 140 139 return DSS_CLK_SRC_FCK; ··· 606 605 607 606 dpi->clk_src = dpi_get_clk_src(dpi); 608 607 609 - pll = dss_pll_find_by_src(dpi->clk_src); 608 + pll = dss_pll_find_by_src(dpi->dss, dpi->clk_src); 610 609 if (!pll) 611 610 return; 612 611
+1 -2
drivers/gpu/drm/omapdrm/dss/dsi.c
··· 5353 5353 pll->base = dsi->pll_base; 5354 5354 pll->hw = dsi->data->pll_hw; 5355 5355 pll->ops = &dsi_pll_ops; 5356 - pll->dss = dss; 5357 5356 5358 - r = dss_pll_register(pll); 5357 + r = dss_pll_register(dss, pll); 5359 5358 if (r) 5360 5359 return r; 5361 5360
+5 -3
drivers/gpu/drm/omapdrm/dss/dss.h
··· 267 267 struct dss_debugfs_entry *dss; 268 268 } debugfs; 269 269 270 + struct dss_pll *plls[4]; 270 271 struct dss_pll *video1_pll; 271 272 struct dss_pll *video2_pll; 272 273 }; ··· 459 458 typedef bool (*dss_hsdiv_calc_func)(int m_dispc, unsigned long dispc, 460 459 void *data); 461 460 462 - int dss_pll_register(struct dss_pll *pll); 461 + int dss_pll_register(struct dss_device *dss, struct dss_pll *pll); 463 462 void dss_pll_unregister(struct dss_pll *pll); 464 - struct dss_pll *dss_pll_find(const char *name); 465 - struct dss_pll *dss_pll_find_by_src(enum dss_clk_source src); 463 + struct dss_pll *dss_pll_find(struct dss_device *dss, const char *name); 464 + struct dss_pll *dss_pll_find_by_src(struct dss_device *dss, 465 + enum dss_clk_source src); 466 466 unsigned int dss_pll_get_clkout_idx_for_src(enum dss_clk_source src); 467 467 int dss_pll_enable(struct dss_pll *pll); 468 468 void dss_pll_disable(struct dss_pll *pll);
+1 -2
drivers/gpu/drm/omapdrm/dss/hdmi_pll.c
··· 146 146 pll->id = DSS_PLL_HDMI; 147 147 pll->base = hpll->base; 148 148 pll->clkin = clk; 149 - pll->dss = dss; 150 149 151 150 if (hpll->wp->version == 4) 152 151 pll->hw = &dss_omap4_hdmi_pll_hw; ··· 154 155 155 156 pll->ops = &hdmi_pll_ops; 156 157 157 - r = dss_pll_register(pll); 158 + r = dss_pll_register(dss, pll); 158 159 if (r) 159 160 return r; 160 161
+21 -19
drivers/gpu/drm/omapdrm/dss/pll.c
··· 35 35 #define PLL_SSC_CONFIGURATION2 0x001C 36 36 #define PLL_CONFIGURATION4 0x0020 37 37 38 - static struct dss_pll *dss_plls[4]; 39 - 40 - int dss_pll_register(struct dss_pll *pll) 38 + int dss_pll_register(struct dss_device *dss, struct dss_pll *pll) 41 39 { 42 40 int i; 43 41 44 - for (i = 0; i < ARRAY_SIZE(dss_plls); ++i) { 45 - if (!dss_plls[i]) { 46 - dss_plls[i] = pll; 42 + for (i = 0; i < ARRAY_SIZE(dss->plls); ++i) { 43 + if (!dss->plls[i]) { 44 + dss->plls[i] = pll; 45 + pll->dss = dss; 47 46 return 0; 48 47 } 49 48 } ··· 52 53 53 54 void dss_pll_unregister(struct dss_pll *pll) 54 55 { 56 + struct dss_device *dss = pll->dss; 55 57 int i; 56 58 57 - for (i = 0; i < ARRAY_SIZE(dss_plls); ++i) { 58 - if (dss_plls[i] == pll) { 59 - dss_plls[i] = NULL; 59 + for (i = 0; i < ARRAY_SIZE(dss->plls); ++i) { 60 + if (dss->plls[i] == pll) { 61 + dss->plls[i] = NULL; 62 + pll->dss = NULL; 60 63 return; 61 64 } 62 65 } 63 66 } 64 67 65 - struct dss_pll *dss_pll_find(const char *name) 68 + struct dss_pll *dss_pll_find(struct dss_device *dss, const char *name) 66 69 { 67 70 int i; 68 71 69 - for (i = 0; i < ARRAY_SIZE(dss_plls); ++i) { 70 - if (dss_plls[i] && strcmp(dss_plls[i]->name, name) == 0) 71 - return dss_plls[i]; 72 + for (i = 0; i < ARRAY_SIZE(dss->plls); ++i) { 73 + if (dss->plls[i] && strcmp(dss->plls[i]->name, name) == 0) 74 + return dss->plls[i]; 72 75 } 73 76 74 77 return NULL; 75 78 } 76 79 77 - struct dss_pll *dss_pll_find_by_src(enum dss_clk_source src) 80 + struct dss_pll *dss_pll_find_by_src(struct dss_device *dss, 81 + enum dss_clk_source src) 78 82 { 79 83 struct dss_pll *pll; 80 84 ··· 87 85 return NULL; 88 86 89 87 case DSS_CLK_SRC_HDMI_PLL: 90 - return dss_pll_find("hdmi"); 88 + return dss_pll_find(dss, "hdmi"); 91 89 92 90 case DSS_CLK_SRC_PLL1_1: 93 91 case DSS_CLK_SRC_PLL1_2: 94 92 case DSS_CLK_SRC_PLL1_3: 95 - pll = dss_pll_find("dsi0"); 93 + pll = dss_pll_find(dss, "dsi0"); 96 94 if (!pll) 97 - pll = dss_pll_find("video0"); 95 + pll = dss_pll_find(dss, "video0"); 98 96 return pll; 99 97 100 98 case DSS_CLK_SRC_PLL2_1: 101 99 case DSS_CLK_SRC_PLL2_2: 102 100 case DSS_CLK_SRC_PLL2_3: 103 - pll = dss_pll_find("dsi1"); 101 + pll = dss_pll_find(dss, "dsi1"); 104 102 if (!pll) 105 - pll = dss_pll_find("video1"); 103 + pll = dss_pll_find(dss, "video1"); 106 104 return pll; 107 105 } 108 106 }
+1 -2
drivers/gpu/drm/omapdrm/dss/video-pll.c
··· 190 190 pll->base = pll_base; 191 191 pll->hw = &dss_dra7_video_pll_hw; 192 192 pll->ops = &dss_pll_ops; 193 - pll->dss = dss; 194 193 195 - r = dss_pll_register(pll); 194 + r = dss_pll_register(dss, pll); 196 195 if (r) 197 196 return ERR_PTR(r); 198 197