Skip to content

Commit 067a57e

Browse files
Archit Tanejatomba
authored andcommitted
OMAP2PLUS: DSS2: Use dss features to get clock source names of current OMAP
Clock source names vary across OMAP2/3 and OMAP4, the clock source enum names have been made generic in the driver, but for purposes of debugging and dumping clock sources, it is better to preserve the actual TRM name of the clock. Introduce a dss feature function 'dss_feat_get_clk_source_name()' which returns a string with the TRM clock name for the current OMAP in use. The OMAP specific name is printed along the generic name within brackets. Signed-off-by: Archit Taneja <[email protected]> Signed-off-by: Tomi Valkeinen <[email protected]>
1 parent 88134fa commit 067a57e

File tree

6 files changed

+81
-18
lines changed

6 files changed

+81
-18
lines changed

drivers/video/omap2/dss/dispc.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2379,14 +2379,15 @@ unsigned long dispc_pclk_rate(enum omap_channel channel)
23792379
void dispc_dump_clocks(struct seq_file *s)
23802380
{
23812381
int lcd, pcd;
2382+
enum dss_clk_source dispc_clk_src = dss_get_dispc_clk_source();
23822383

23832384
enable_clocks(1);
23842385

23852386
seq_printf(s, "- DISPC -\n");
23862387

2387-
seq_printf(s, "dispc fclk source = %s\n",
2388-
dss_get_dispc_clk_source() == DSS_CLK_SRC_FCK ?
2389-
"dss1_alwon_fclk" : "dsi1_pll_fclk");
2388+
seq_printf(s, "dispc fclk source = %s (%s)\n",
2389+
dss_get_generic_clk_source_name(dispc_clk_src),
2390+
dss_feat_get_clk_source_name(dispc_clk_src));
23902391

23912392
seq_printf(s, "fck\t\t%-16lu\n", dispc_fclk_rate());
23922393

drivers/video/omap2/dss/dsi.c

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1022,10 +1022,14 @@ int dsi_pll_set_clock_div(struct dsi_clock_info *cinfo)
10221022

10231023
DSSDBG("Clock lane freq %ld Hz\n", cinfo->clkin4ddr / 4);
10241024

1025-
DSSDBG("regm3 = %d, dsi1_pll_fclk = %lu\n",
1026-
cinfo->regm3, cinfo->dsi1_pll_fclk);
1027-
DSSDBG("regm4 = %d, dsi2_pll_fclk = %lu\n",
1028-
cinfo->regm4, cinfo->dsi2_pll_fclk);
1025+
DSSDBG("regm3 = %d, %s (%s) = %lu\n", cinfo->regm3,
1026+
dss_get_generic_clk_source_name(DSS_CLK_SRC_DSI_PLL_HSDIV_DISPC),
1027+
dss_feat_get_clk_source_name(DSS_CLK_SRC_DSI_PLL_HSDIV_DISPC),
1028+
cinfo->dsi1_pll_fclk);
1029+
DSSDBG("regm4 = %d, %s (%s) = %lu\n", cinfo->regm4,
1030+
dss_get_generic_clk_source_name(DSS_CLK_SRC_DSI_PLL_HSDIV_DSI),
1031+
dss_feat_get_clk_source_name(DSS_CLK_SRC_DSI_PLL_HSDIV_DSI),
1032+
cinfo->dsi2_pll_fclk);
10291033

10301034
REG_FLD_MOD(DSI_PLL_CONTROL, 0, 0, 0); /* DSI_PLL_AUTOMODE = manual */
10311035

@@ -1169,6 +1173,10 @@ void dsi_dump_clocks(struct seq_file *s)
11691173
{
11701174
int clksel;
11711175
struct dsi_clock_info *cinfo = &dsi.current_cinfo;
1176+
enum dss_clk_source dispc_clk_src, dsi_clk_src;
1177+
1178+
dispc_clk_src = dss_get_dispc_clk_source();
1179+
dsi_clk_src = dss_get_dsi_clk_source();
11721180

11731181
enable_clocks(1);
11741182

@@ -1185,23 +1193,27 @@ void dsi_dump_clocks(struct seq_file *s)
11851193
seq_printf(s, "CLKIN4DDR\t%-16luregm %u\n",
11861194
cinfo->clkin4ddr, cinfo->regm);
11871195

1188-
seq_printf(s, "dsi1_pll_fck\t%-16luregm3 %u\t(%s)\n",
1196+
seq_printf(s, "%s (%s)\t%-16luregm3 %u\t(%s)\n",
1197+
dss_get_generic_clk_source_name(dispc_clk_src),
1198+
dss_feat_get_clk_source_name(dispc_clk_src),
11891199
cinfo->dsi1_pll_fclk,
11901200
cinfo->regm3,
1191-
dss_get_dispc_clk_source() == DSS_CLK_SRC_FCK ?
1201+
dispc_clk_src == DSS_CLK_SRC_FCK ?
11921202
"off" : "on");
11931203

1194-
seq_printf(s, "dsi2_pll_fck\t%-16luregm4 %u\t(%s)\n",
1204+
seq_printf(s, "%s (%s)\t%-16luregm4 %u\t(%s)\n",
1205+
dss_get_generic_clk_source_name(dsi_clk_src),
1206+
dss_feat_get_clk_source_name(dsi_clk_src),
11951207
cinfo->dsi2_pll_fclk,
11961208
cinfo->regm4,
1197-
dss_get_dsi_clk_source() == DSS_CLK_SRC_FCK ?
1209+
dsi_clk_src == DSS_CLK_SRC_FCK ?
11981210
"off" : "on");
11991211

12001212
seq_printf(s, "- DSI -\n");
12011213

1202-
seq_printf(s, "dsi fclk source = %s\n",
1203-
dss_get_dsi_clk_source() == DSS_CLK_SRC_FCK ?
1204-
"dss1_alwon_fclk" : "dsi2_pll_fclk");
1214+
seq_printf(s, "dsi fclk source = %s (%s)\n",
1215+
dss_get_generic_clk_source_name(dsi_clk_src),
1216+
dss_feat_get_clk_source_name(dsi_clk_src));
12051217

12061218
seq_printf(s, "DSI_FCLK\t%lu\n", dsi_fclk_rate());
12071219

@@ -3235,13 +3247,17 @@ int dsi_init_display(struct omap_dss_device *dssdev)
32353247
void dsi_wait_dsi1_pll_active(void)
32363248
{
32373249
if (wait_for_bit_change(DSI_PLL_STATUS, 7, 1) != 1)
3238-
DSSERR("DSI1 PLL clock not active\n");
3250+
DSSERR("%s (%s) not active\n",
3251+
dss_get_generic_clk_source_name(DSS_CLK_SRC_DSI_PLL_HSDIV_DISPC),
3252+
dss_feat_get_clk_source_name(DSS_CLK_SRC_DSI_PLL_HSDIV_DISPC));
32393253
}
32403254

32413255
void dsi_wait_dsi2_pll_active(void)
32423256
{
32433257
if (wait_for_bit_change(DSI_PLL_STATUS, 8, 1) != 1)
3244-
DSSERR("DSI2 PLL clock not active\n");
3258+
DSSERR("%s (%s) not active\n",
3259+
dss_get_generic_clk_source_name(DSS_CLK_SRC_DSI_PLL_HSDIV_DSI),
3260+
dss_feat_get_clk_source_name(DSS_CLK_SRC_DSI_PLL_HSDIV_DSI));
32453261
}
32463262

32473263
static int dsi_init(struct platform_device *pdev)

drivers/video/omap2/dss/dss.c

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,12 @@ static struct {
8181
u32 ctx[DSS_SZ_REGS / sizeof(u32)];
8282
} dss;
8383

84+
static const struct dss_clk_source_name dss_generic_clk_source_names[] = {
85+
{ DSS_CLK_SRC_DSI_PLL_HSDIV_DISPC, "DSI_PLL_HSDIV_DISPC" },
86+
{ DSS_CLK_SRC_DSI_PLL_HSDIV_DSI, "DSI_PLL_HSDIV_DSI" },
87+
{ DSS_CLK_SRC_FCK, "DSS_FCK" },
88+
};
89+
8490
static void dss_clk_enable_all_no_ctx(void);
8591
static void dss_clk_disable_all_no_ctx(void);
8692
static void dss_clk_enable_no_ctx(enum dss_clock clks);
@@ -223,6 +229,11 @@ void dss_sdi_disable(void)
223229
REG_FLD_MOD(DSS_PLL_CONTROL, 0, 18, 18); /* SDI_PLL_SYSRESET */
224230
}
225231

232+
const char *dss_get_generic_clk_source_name(enum dss_clk_source clk_src)
233+
{
234+
return dss_generic_clk_source_names[clk_src].clksrc_name;
235+
}
236+
226237
void dss_dump_clocks(struct seq_file *s)
227238
{
228239
unsigned long dpll4_ck_rate;
@@ -238,12 +249,16 @@ void dss_dump_clocks(struct seq_file *s)
238249
seq_printf(s, "dpll4_ck %lu\n", dpll4_ck_rate);
239250

240251
if (cpu_is_omap3630())
241-
seq_printf(s, "dss1_alwon_fclk = %lu / %lu = %lu\n",
252+
seq_printf(s, "%s (%s) = %lu / %lu = %lu\n",
253+
dss_get_generic_clk_source_name(DSS_CLK_SRC_FCK),
254+
dss_feat_get_clk_source_name(DSS_CLK_SRC_FCK),
242255
dpll4_ck_rate,
243256
dpll4_ck_rate / dpll4_m4_ck_rate,
244257
dss_clk_get_rate(DSS_CLK_FCK));
245258
else
246-
seq_printf(s, "dss1_alwon_fclk = %lu / %lu * 2 = %lu\n",
259+
seq_printf(s, "%s (%s) = %lu / %lu * 2 = %lu\n",
260+
dss_get_generic_clk_source_name(DSS_CLK_SRC_FCK),
261+
dss_feat_get_clk_source_name(DSS_CLK_SRC_FCK),
247262
dpll4_ck_rate,
248263
dpll4_ck_rate / dpll4_m4_ck_rate,
249264
dss_clk_get_rate(DSS_CLK_FCK));

drivers/video/omap2/dss/dss.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,12 @@ enum dss_clk_source {
123123
DSS_CLK_SRC_FCK, /* DSS1_ALWON_FCLK */
124124
};
125125

126+
/* Correlates clock source name and dss_clk_source member */
127+
struct dss_clk_source_name {
128+
enum dss_clk_source clksrc;
129+
const char *clksrc_name;
130+
};
131+
126132
struct dss_clock_info {
127133
/* rates that we get with dividers below */
128134
unsigned long fck;
@@ -215,6 +221,7 @@ void dss_clk_enable(enum dss_clock clks);
215221
void dss_clk_disable(enum dss_clock clks);
216222
unsigned long dss_clk_get_rate(enum dss_clock clk);
217223
int dss_need_ctx_restore(void);
224+
const char *dss_get_generic_clk_source_name(enum dss_clk_source clk_src);
218225
void dss_dump_clocks(struct seq_file *s);
219226

220227
void dss_dump_regs(struct seq_file *s);

drivers/video/omap2/dss/dss_features.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include <plat/display.h>
2626
#include <plat/cpu.h>
2727

28+
#include "dss.h"
2829
#include "dss_features.h"
2930

3031
/* Defines a generic omap register field */
@@ -44,6 +45,7 @@ struct omap_dss_features {
4445
const unsigned long max_dss_fck;
4546
const enum omap_display_type *supported_displays;
4647
const enum omap_color_mode *supported_color_modes;
48+
const struct dss_clk_source_name *clksrc_names;
4749
};
4850

4951
/* This struct is assigned to one of the below during initialization */
@@ -157,6 +159,18 @@ static const enum omap_color_mode omap3_dss_supported_color_modes[] = {
157159
OMAP_DSS_COLOR_RGBA32 | OMAP_DSS_COLOR_RGBX32,
158160
};
159161

162+
static const struct dss_clk_source_name omap2_dss_clk_source_names[] = {
163+
{ DSS_CLK_SRC_DSI_PLL_HSDIV_DISPC, "N/A" },
164+
{ DSS_CLK_SRC_DSI_PLL_HSDIV_DSI, "N/A" },
165+
{ DSS_CLK_SRC_FCK, "DSS_FCLK1" },
166+
};
167+
168+
static const struct dss_clk_source_name omap3_dss_clk_source_names[] = {
169+
{ DSS_CLK_SRC_DSI_PLL_HSDIV_DISPC, "DSI1_PLL_FCLK" },
170+
{ DSS_CLK_SRC_DSI_PLL_HSDIV_DSI, "DSI2_PLL_FCLK" },
171+
{ DSS_CLK_SRC_FCK, "DSS1_ALWON_FCLK" },
172+
};
173+
160174
/* OMAP2 DSS Features */
161175
static struct omap_dss_features omap2_dss_features = {
162176
.reg_fields = omap2_dss_reg_fields,
@@ -172,6 +186,7 @@ static struct omap_dss_features omap2_dss_features = {
172186
.max_dss_fck = 173000000,
173187
.supported_displays = omap2_dss_supported_displays,
174188
.supported_color_modes = omap2_dss_supported_color_modes,
189+
.clksrc_names = omap2_dss_clk_source_names,
175190
};
176191

177192
/* OMAP3 DSS Features */
@@ -190,6 +205,7 @@ static struct omap_dss_features omap3430_dss_features = {
190205
.max_dss_fck = 173000000,
191206
.supported_displays = omap3430_dss_supported_displays,
192207
.supported_color_modes = omap3_dss_supported_color_modes,
208+
.clksrc_names = omap3_dss_clk_source_names,
193209
};
194210

195211
static struct omap_dss_features omap3630_dss_features = {
@@ -208,6 +224,7 @@ static struct omap_dss_features omap3630_dss_features = {
208224
.max_dss_fck = 173000000,
209225
.supported_displays = omap3630_dss_supported_displays,
210226
.supported_color_modes = omap3_dss_supported_color_modes,
227+
.clksrc_names = omap3_dss_clk_source_names,
211228
};
212229

213230
/* OMAP4 DSS Features */
@@ -224,6 +241,7 @@ static struct omap_dss_features omap4_dss_features = {
224241
.max_dss_fck = 186000000,
225242
.supported_displays = omap4_dss_supported_displays,
226243
.supported_color_modes = omap3_dss_supported_color_modes,
244+
.clksrc_names = omap3_dss_clk_source_names,
227245
};
228246

229247
/* Functions returning values related to a DSS feature */
@@ -260,6 +278,11 @@ bool dss_feat_color_mode_supported(enum omap_plane plane,
260278
color_mode;
261279
}
262280

281+
const char *dss_feat_get_clk_source_name(enum dss_clk_source id)
282+
{
283+
return omap_current_dss_features->clksrc_names[id].clksrc_name;
284+
}
285+
263286
/* DSS has_feature check */
264287
bool dss_has_feature(enum dss_feat_id id)
265288
{

drivers/video/omap2/dss/dss_features.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ enum omap_display_type dss_feat_get_supported_displays(enum omap_channel channel
5757
enum omap_color_mode dss_feat_get_supported_color_modes(enum omap_plane plane);
5858
bool dss_feat_color_mode_supported(enum omap_plane plane,
5959
enum omap_color_mode color_mode);
60+
const char *dss_feat_get_clk_source_name(enum dss_clk_source id);
6061

6162
bool dss_has_feature(enum dss_feat_id id);
6263
void dss_feat_get_reg_field(enum dss_feat_reg_field id, u8 *start, u8 *end);

0 commit comments

Comments
 (0)