Skip to content

Commit 1bb4783

Browse files
Archit Tanejatomba
authored andcommitted
OMAP2PLUS: DSS2: DSI: Generalize DSI PLL Clock Naming
DSI PLL output clock names have been made more generic. The clock name describes what the source of the clock and what clock is used for. Some of DSI PLL parameters like dividers and DSI PLL source have also been made more generic. dsi1_pll_fclk and dsi2_pll_fclk have been changed as dsi_pll_hsdiv_dispc_clk and dsi_pll_hsdiv_dsi_clk respectively. Also, the hsdividers are now named regm_dispc and regm_dsi instead of regm3 and regm4. Functions and macros named on the basis of these clock names have also been made generic. Signed-off-by: Archit Taneja <[email protected]> Signed-off-by: Tomi Valkeinen <[email protected]>
1 parent 067a57e commit 1bb4783

File tree

6 files changed

+87
-81
lines changed

6 files changed

+87
-81
lines changed

arch/arm/plat-omap/include/plat/display.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -403,8 +403,8 @@ struct omap_dss_device {
403403
struct {
404404
u16 regn;
405405
u16 regm;
406-
u16 regm3;
407-
u16 regm4;
406+
u16 regm_dispc;
407+
u16 regm_dsi;
408408

409409
u16 lp_clk_div;
410410

drivers/video/omap2/dss/dispc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2338,7 +2338,7 @@ unsigned long dispc_fclk_rate(void)
23382338
r = dss_clk_get_rate(DSS_CLK_FCK);
23392339
else
23402340
#ifdef CONFIG_OMAP2_DSS_DSI
2341-
r = dsi_get_dsi1_pll_rate();
2341+
r = dsi_get_pll_hsdiv_dispc_rate();
23422342
#else
23432343
BUG();
23442344
#endif

drivers/video/omap2/dss/dpi.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ static int dpi_set_dsi_clk(struct omap_dss_device *dssdev, bool is_tft,
6363
if (r)
6464
return r;
6565

66-
*fck = dsi_cinfo.dsi1_pll_fclk;
66+
*fck = dsi_cinfo.dsi_pll_hsdiv_dispc_clk;
6767
*lck_div = dispc_cinfo.lck_div;
6868
*pck_div = dispc_cinfo.pck_div;
6969

@@ -271,7 +271,7 @@ int dpi_check_timings(struct omap_dss_device *dssdev,
271271
if (r)
272272
return r;
273273

274-
fck = dsi_cinfo.dsi1_pll_fclk;
274+
fck = dsi_cinfo.dsi_pll_hsdiv_dispc_clk;
275275
lck_div = dispc_cinfo.lck_div;
276276
pck_div = dispc_cinfo.pck_div;
277277
}

drivers/video/omap2/dss/dsi.c

Lines changed: 70 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,8 @@ struct dsi_reg { u16 idx; };
189189
#define FINT_MIN 750000
190190
#define REGN_MAX (1 << 7)
191191
#define REGM_MAX ((1 << 11) - 1)
192-
#define REGM3_MAX (1 << 4)
193-
#define REGM4_MAX (1 << 4)
192+
#define REGM_DISPC_MAX (1 << 4)
193+
#define REGM_DSI_MAX (1 << 4)
194194
#define LP_DIV_MAX ((1 << 13) - 1)
195195

196196
enum fifo_size {
@@ -642,7 +642,7 @@ static void dsi_vc_disable_bta_irq(int channel)
642642
dsi_write_reg(DSI_VC_IRQENABLE(channel), l);
643643
}
644644

645-
/* DSI func clock. this could also be DSI2_PLL_FCLK */
645+
/* DSI func clock. this could also be dsi_pll_hsdiv_dsi_clk */
646646
static inline void enable_clocks(bool enable)
647647
{
648648
if (enable)
@@ -712,14 +712,14 @@ static inline int dsi_if_enable(bool enable)
712712
return 0;
713713
}
714714

715-
unsigned long dsi_get_dsi1_pll_rate(void)
715+
unsigned long dsi_get_pll_hsdiv_dispc_rate(void)
716716
{
717-
return dsi.current_cinfo.dsi1_pll_fclk;
717+
return dsi.current_cinfo.dsi_pll_hsdiv_dispc_clk;
718718
}
719719

720-
static unsigned long dsi_get_dsi2_pll_rate(void)
720+
static unsigned long dsi_get_pll_hsdiv_dsi_rate(void)
721721
{
722-
return dsi.current_cinfo.dsi2_pll_fclk;
722+
return dsi.current_cinfo.dsi_pll_hsdiv_dsi_clk;
723723
}
724724

725725
static unsigned long dsi_get_txbyteclkhs(void)
@@ -732,11 +732,11 @@ static unsigned long dsi_fclk_rate(void)
732732
unsigned long r;
733733

734734
if (dss_get_dsi_clk_source() == DSS_CLK_SRC_FCK) {
735-
/* DSI FCLK source is DSS1_ALWON_FCK, which is dss1_fck */
735+
/* DSI FCLK source is DSS_CLK_FCK */
736736
r = dss_clk_get_rate(DSS_CLK_FCK);
737737
} else {
738-
/* DSI FCLK source is DSI2_PLL_FCLK */
739-
r = dsi_get_dsi2_pll_rate();
738+
/* DSI FCLK source is dsi_pll_hsdiv_dsi_clk */
739+
r = dsi_get_pll_hsdiv_dsi_rate();
740740
}
741741

742742
return r;
@@ -806,16 +806,16 @@ static int dsi_calc_clock_rates(struct omap_dss_device *dssdev,
806806
if (cinfo->regm == 0 || cinfo->regm > REGM_MAX)
807807
return -EINVAL;
808808

809-
if (cinfo->regm3 > REGM3_MAX)
809+
if (cinfo->regm_dispc > REGM_DISPC_MAX)
810810
return -EINVAL;
811811

812-
if (cinfo->regm4 > REGM4_MAX)
812+
if (cinfo->regm_dsi > REGM_DSI_MAX)
813813
return -EINVAL;
814814

815-
if (cinfo->use_dss2_fck) {
815+
if (cinfo->use_sys_clk) {
816816
cinfo->clkin = dss_clk_get_rate(DSS_CLK_SYSCK);
817817
/* XXX it is unclear if highfreq should be used
818-
* with DSS2_FCK source also */
818+
* with DSS_SYS_CLK source also */
819819
cinfo->highfreq = 0;
820820
} else {
821821
cinfo->clkin = dispc_pclk_rate(dssdev->manager->id);
@@ -836,15 +836,17 @@ static int dsi_calc_clock_rates(struct omap_dss_device *dssdev,
836836
if (cinfo->clkin4ddr > 1800 * 1000 * 1000)
837837
return -EINVAL;
838838

839-
if (cinfo->regm3 > 0)
840-
cinfo->dsi1_pll_fclk = cinfo->clkin4ddr / cinfo->regm3;
839+
if (cinfo->regm_dispc > 0)
840+
cinfo->dsi_pll_hsdiv_dispc_clk =
841+
cinfo->clkin4ddr / cinfo->regm_dispc;
841842
else
842-
cinfo->dsi1_pll_fclk = 0;
843+
cinfo->dsi_pll_hsdiv_dispc_clk = 0;
843844

844-
if (cinfo->regm4 > 0)
845-
cinfo->dsi2_pll_fclk = cinfo->clkin4ddr / cinfo->regm4;
845+
if (cinfo->regm_dsi > 0)
846+
cinfo->dsi_pll_hsdiv_dsi_clk =
847+
cinfo->clkin4ddr / cinfo->regm_dsi;
846848
else
847-
cinfo->dsi2_pll_fclk = 0;
849+
cinfo->dsi_pll_hsdiv_dsi_clk = 0;
848850

849851
return 0;
850852
}
@@ -857,18 +859,18 @@ int dsi_pll_calc_clock_div_pck(bool is_tft, unsigned long req_pck,
857859
struct dispc_clock_info best_dispc;
858860
int min_fck_per_pck;
859861
int match = 0;
860-
unsigned long dss_clk_fck2, max_dss_fck;
862+
unsigned long dss_sys_clk, max_dss_fck;
861863

862-
dss_clk_fck2 = dss_clk_get_rate(DSS_CLK_SYSCK);
864+
dss_sys_clk = dss_clk_get_rate(DSS_CLK_SYSCK);
863865

864866
max_dss_fck = dss_feat_get_max_dss_fck();
865867

866868
if (req_pck == dsi.cache_req_pck &&
867-
dsi.cache_cinfo.clkin == dss_clk_fck2) {
869+
dsi.cache_cinfo.clkin == dss_sys_clk) {
868870
DSSDBG("DSI clock info found from cache\n");
869871
*dsi_cinfo = dsi.cache_cinfo;
870-
dispc_find_clk_divs(is_tft, req_pck, dsi_cinfo->dsi1_pll_fclk,
871-
dispc_cinfo);
872+
dispc_find_clk_divs(is_tft, req_pck,
873+
dsi_cinfo->dsi_pll_hsdiv_dispc_clk, dispc_cinfo);
872874
return 0;
873875
}
874876

@@ -889,8 +891,8 @@ int dsi_pll_calc_clock_div_pck(bool is_tft, unsigned long req_pck,
889891
memset(&best_dispc, 0, sizeof(best_dispc));
890892

891893
memset(&cur, 0, sizeof(cur));
892-
cur.clkin = dss_clk_fck2;
893-
cur.use_dss2_fck = 1;
894+
cur.clkin = dss_sys_clk;
895+
cur.use_sys_clk = 1;
894896
cur.highfreq = 0;
895897

896898
/* no highfreq: 0.75MHz < Fint = clkin / regn < 2.1MHz */
@@ -916,30 +918,32 @@ int dsi_pll_calc_clock_div_pck(bool is_tft, unsigned long req_pck,
916918
if (cur.clkin4ddr > 1800 * 1000 * 1000)
917919
break;
918920

919-
/* DSI1_PLL_FCLK(MHz) = DSIPHY(MHz) / regm3 < 173MHz */
920-
for (cur.regm3 = 1; cur.regm3 < REGM3_MAX;
921-
++cur.regm3) {
921+
/* dsi_pll_hsdiv_dispc_clk(MHz) =
922+
* DSIPHY(MHz) / regm_dispc < 173MHz/186Mhz */
923+
for (cur.regm_dispc = 1; cur.regm_dispc < REGM_DISPC_MAX;
924+
++cur.regm_dispc) {
922925
struct dispc_clock_info cur_dispc;
923-
cur.dsi1_pll_fclk = cur.clkin4ddr / cur.regm3;
926+
cur.dsi_pll_hsdiv_dispc_clk =
927+
cur.clkin4ddr / cur.regm_dispc;
924928

925929
/* this will narrow down the search a bit,
926930
* but still give pixclocks below what was
927931
* requested */
928-
if (cur.dsi1_pll_fclk < req_pck)
932+
if (cur.dsi_pll_hsdiv_dispc_clk < req_pck)
929933
break;
930934

931-
if (cur.dsi1_pll_fclk > max_dss_fck)
935+
if (cur.dsi_pll_hsdiv_dispc_clk > max_dss_fck)
932936
continue;
933937

934938
if (min_fck_per_pck &&
935-
cur.dsi1_pll_fclk <
939+
cur.dsi_pll_hsdiv_dispc_clk <
936940
req_pck * min_fck_per_pck)
937941
continue;
938942

939943
match = 1;
940944

941945
dispc_find_clk_divs(is_tft, req_pck,
942-
cur.dsi1_pll_fclk,
946+
cur.dsi_pll_hsdiv_dispc_clk,
943947
&cur_dispc);
944948

945949
if (abs(cur_dispc.pck - req_pck) <
@@ -968,9 +972,9 @@ int dsi_pll_calc_clock_div_pck(bool is_tft, unsigned long req_pck,
968972
return -EINVAL;
969973
}
970974

971-
/* DSI2_PLL_FCLK (regm4) is not used */
972-
best.regm4 = 0;
973-
best.dsi2_pll_fclk = 0;
975+
/* dsi_pll_hsdiv_dsi_clk (regm_dsi) is not used */
976+
best.regm_dsi = 0;
977+
best.dsi_pll_hsdiv_dsi_clk = 0;
974978

975979
if (dsi_cinfo)
976980
*dsi_cinfo = best;
@@ -994,18 +998,20 @@ int dsi_pll_set_clock_div(struct dsi_clock_info *cinfo)
994998

995999
dsi.current_cinfo.fint = cinfo->fint;
9961000
dsi.current_cinfo.clkin4ddr = cinfo->clkin4ddr;
997-
dsi.current_cinfo.dsi1_pll_fclk = cinfo->dsi1_pll_fclk;
998-
dsi.current_cinfo.dsi2_pll_fclk = cinfo->dsi2_pll_fclk;
1001+
dsi.current_cinfo.dsi_pll_hsdiv_dispc_clk =
1002+
cinfo->dsi_pll_hsdiv_dispc_clk;
1003+
dsi.current_cinfo.dsi_pll_hsdiv_dsi_clk =
1004+
cinfo->dsi_pll_hsdiv_dsi_clk;
9991005

10001006
dsi.current_cinfo.regn = cinfo->regn;
10011007
dsi.current_cinfo.regm = cinfo->regm;
1002-
dsi.current_cinfo.regm3 = cinfo->regm3;
1003-
dsi.current_cinfo.regm4 = cinfo->regm4;
1008+
dsi.current_cinfo.regm_dispc = cinfo->regm_dispc;
1009+
dsi.current_cinfo.regm_dsi = cinfo->regm_dsi;
10041010

10051011
DSSDBG("DSI Fint %ld\n", cinfo->fint);
10061012

10071013
DSSDBG("clkin (%s) rate %ld, highfreq %d\n",
1008-
cinfo->use_dss2_fck ? "dss2_fck" : "pclkfree",
1014+
cinfo->use_sys_clk ? "dss_sys_clk" : "pclkfree",
10091015
cinfo->clkin,
10101016
cinfo->highfreq);
10111017

@@ -1022,24 +1028,24 @@ int dsi_pll_set_clock_div(struct dsi_clock_info *cinfo)
10221028

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

1025-
DSSDBG("regm3 = %d, %s (%s) = %lu\n", cinfo->regm3,
1031+
DSSDBG("regm_dispc = %d, %s (%s) = %lu\n", cinfo->regm_dispc,
10261032
dss_get_generic_clk_source_name(DSS_CLK_SRC_DSI_PLL_HSDIV_DISPC),
10271033
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,
1034+
cinfo->dsi_pll_hsdiv_dispc_clk);
1035+
DSSDBG("regm_dsi = %d, %s (%s) = %lu\n", cinfo->regm_dsi,
10301036
dss_get_generic_clk_source_name(DSS_CLK_SRC_DSI_PLL_HSDIV_DSI),
10311037
dss_feat_get_clk_source_name(DSS_CLK_SRC_DSI_PLL_HSDIV_DSI),
1032-
cinfo->dsi2_pll_fclk);
1038+
cinfo->dsi_pll_hsdiv_dsi_clk);
10331039

10341040
REG_FLD_MOD(DSI_PLL_CONTROL, 0, 0, 0); /* DSI_PLL_AUTOMODE = manual */
10351041

10361042
l = dsi_read_reg(DSI_PLL_CONFIGURATION1);
10371043
l = FLD_MOD(l, 1, 0, 0); /* DSI_PLL_STOPMODE */
10381044
l = FLD_MOD(l, cinfo->regn - 1, 7, 1); /* DSI_PLL_REGN */
10391045
l = FLD_MOD(l, cinfo->regm, 18, 8); /* DSI_PLL_REGM */
1040-
l = FLD_MOD(l, cinfo->regm3 > 0 ? cinfo->regm3 - 1 : 0,
1046+
l = FLD_MOD(l, cinfo->regm_dispc > 0 ? cinfo->regm_dispc - 1 : 0,
10411047
22, 19); /* DSI_CLOCK_DIV */
1042-
l = FLD_MOD(l, cinfo->regm4 > 0 ? cinfo->regm4 - 1 : 0,
1048+
l = FLD_MOD(l, cinfo->regm_dsi > 0 ? cinfo->regm_dsi - 1 : 0,
10431049
26, 23); /* DSIPROTO_CLOCK_DIV */
10441050
dsi_write_reg(DSI_PLL_CONFIGURATION1, l);
10451051

@@ -1057,7 +1063,7 @@ int dsi_pll_set_clock_div(struct dsi_clock_info *cinfo)
10571063

10581064
l = dsi_read_reg(DSI_PLL_CONFIGURATION2);
10591065
l = FLD_MOD(l, f, 4, 1); /* DSI_PLL_FREQSEL */
1060-
l = FLD_MOD(l, cinfo->use_dss2_fck ? 0 : 1,
1066+
l = FLD_MOD(l, cinfo->use_sys_clk ? 0 : 1,
10611067
11, 11); /* DSI_PLL_CLKSEL */
10621068
l = FLD_MOD(l, cinfo->highfreq,
10631069
12, 12); /* DSI_PLL_HIGHFREQ */
@@ -1186,26 +1192,26 @@ void dsi_dump_clocks(struct seq_file *s)
11861192

11871193
seq_printf(s, "dsi pll source = %s\n",
11881194
clksel == 0 ?
1189-
"dss2_alwon_fclk" : "pclkfree");
1195+
"dss_sys_clk" : "pclkfree");
11901196

11911197
seq_printf(s, "Fint\t\t%-16luregn %u\n", cinfo->fint, cinfo->regn);
11921198

11931199
seq_printf(s, "CLKIN4DDR\t%-16luregm %u\n",
11941200
cinfo->clkin4ddr, cinfo->regm);
11951201

1196-
seq_printf(s, "%s (%s)\t%-16luregm3 %u\t(%s)\n",
1202+
seq_printf(s, "%s (%s)\t%-16luregm_dispc %u\t(%s)\n",
11971203
dss_get_generic_clk_source_name(dispc_clk_src),
11981204
dss_feat_get_clk_source_name(dispc_clk_src),
1199-
cinfo->dsi1_pll_fclk,
1200-
cinfo->regm3,
1205+
cinfo->dsi_pll_hsdiv_dispc_clk,
1206+
cinfo->regm_dispc,
12011207
dispc_clk_src == DSS_CLK_SRC_FCK ?
12021208
"off" : "on");
12031209

1204-
seq_printf(s, "%s (%s)\t%-16luregm4 %u\t(%s)\n",
1210+
seq_printf(s, "%s (%s)\t%-16luregm_dsi %u\t(%s)\n",
12051211
dss_get_generic_clk_source_name(dsi_clk_src),
12061212
dss_feat_get_clk_source_name(dsi_clk_src),
1207-
cinfo->dsi2_pll_fclk,
1208-
cinfo->regm4,
1213+
cinfo->dsi_pll_hsdiv_dsi_clk,
1214+
cinfo->regm_dsi,
12091215
dsi_clk_src == DSS_CLK_SRC_FCK ?
12101216
"off" : "on");
12111217

@@ -2989,12 +2995,12 @@ static int dsi_configure_dsi_clocks(struct omap_dss_device *dssdev)
29892995
struct dsi_clock_info cinfo;
29902996
int r;
29912997

2992-
/* we always use DSS2_FCK as input clock */
2993-
cinfo.use_dss2_fck = true;
2998+
/* we always use DSS_CLK_SYSCK as input clock */
2999+
cinfo.use_sys_clk = true;
29943000
cinfo.regn = dssdev->phy.dsi.div.regn;
29953001
cinfo.regm = dssdev->phy.dsi.div.regm;
2996-
cinfo.regm3 = dssdev->phy.dsi.div.regm3;
2997-
cinfo.regm4 = dssdev->phy.dsi.div.regm4;
3002+
cinfo.regm_dispc = dssdev->phy.dsi.div.regm_dispc;
3003+
cinfo.regm_dsi = dssdev->phy.dsi.div.regm_dsi;
29983004
r = dsi_calc_clock_rates(dssdev, &cinfo);
29993005
if (r) {
30003006
DSSERR("Failed to calc dsi clocks\n");
@@ -3016,7 +3022,7 @@ static int dsi_configure_dispc_clocks(struct omap_dss_device *dssdev)
30163022
int r;
30173023
unsigned long long fck;
30183024

3019-
fck = dsi_get_dsi1_pll_rate();
3025+
fck = dsi_get_pll_hsdiv_dispc_rate();
30203026

30213027
dispc_cinfo.lck_div = dssdev->phy.dsi.div.lck_div;
30223028
dispc_cinfo.pck_div = dssdev->phy.dsi.div.pck_div;
@@ -3244,15 +3250,15 @@ int dsi_init_display(struct omap_dss_device *dssdev)
32443250
return 0;
32453251
}
32463252

3247-
void dsi_wait_dsi1_pll_active(void)
3253+
void dsi_wait_pll_hsdiv_dispc_active(void)
32483254
{
32493255
if (wait_for_bit_change(DSI_PLL_STATUS, 7, 1) != 1)
32503256
DSSERR("%s (%s) not active\n",
32513257
dss_get_generic_clk_source_name(DSS_CLK_SRC_DSI_PLL_HSDIV_DISPC),
32523258
dss_feat_get_clk_source_name(DSS_CLK_SRC_DSI_PLL_HSDIV_DISPC));
32533259
}
32543260

3255-
void dsi_wait_dsi2_pll_active(void)
3261+
void dsi_wait_pll_hsdiv_dsi_active(void)
32563262
{
32573263
if (wait_for_bit_change(DSI_PLL_STATUS, 8, 1) != 1)
32583264
DSSERR("%s (%s) not active\n",

drivers/video/omap2/dss/dss.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ void dss_select_dispc_clk_source(enum dss_clk_source clk_src)
299299
b = clk_src == DSS_CLK_SRC_FCK ? 0 : 1;
300300

301301
if (clk_src == DSS_CLK_SRC_DSI_PLL_HSDIV_DISPC)
302-
dsi_wait_dsi1_pll_active();
302+
dsi_wait_pll_hsdiv_dispc_active();
303303

304304
REG_FLD_MOD(DSS_CONTROL, b, 0, 0); /* DISPC_CLK_SWITCH */
305305

@@ -316,7 +316,7 @@ void dss_select_dsi_clk_source(enum dss_clk_source clk_src)
316316
b = clk_src == DSS_CLK_SRC_FCK ? 0 : 1;
317317

318318
if (clk_src == DSS_CLK_SRC_DSI_PLL_HSDIV_DSI)
319-
dsi_wait_dsi2_pll_active();
319+
dsi_wait_pll_hsdiv_dsi_active();
320320

321321
REG_FLD_MOD(DSS_CONTROL, b, 1, 1); /* DSI_CLK_SWITCH */
322322

0 commit comments

Comments
 (0)