* [PATCH 1/5] OMAPDSS: HDMI: fix PLL GO bit handling
@ 2014-10-22 8:39 Tomi Valkeinen
2014-10-22 8:39 ` [PATCH 2/5] OMAPDSS: HDMI: fix regsd write Tomi Valkeinen
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Tomi Valkeinen @ 2014-10-22 8:39 UTC (permalink / raw)
To: linux-omap, linux-fbdev; +Cc: Tomi Valkeinen
The PLL settings are committed by setting GO bit, which is then cleared
by the HW when the settings have been taken into use.
The current PLL code handles this wrong: instead of waiting for the bit
to be cleared, it waits for the bit to be set. Usually, the bit is
always set, as the CPU has just set it before. However, if the CPU takes
enough time between setting the GO bit and checking it, the HW may
already have cleared the bit and this leads to timeout error.
Fix the wait to check the bit properly.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
drivers/video/fbdev/omap2/dss/hdmi_pll.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/video/fbdev/omap2/dss/hdmi_pll.c b/drivers/video/fbdev/omap2/dss/hdmi_pll.c
index 54df12a8d744..d4ec815ba42e 100644
--- a/drivers/video/fbdev/omap2/dss/hdmi_pll.c
+++ b/drivers/video/fbdev/omap2/dss/hdmi_pll.c
@@ -144,8 +144,8 @@ static int hdmi_pll_config(struct hdmi_pll_data *pll)
/* wait for bit change */
if (hdmi_wait_for_bit_change(pll->base, PLLCTRL_PLL_GO,
- 0, 0, 1) != 1) {
- DSSERR("PLL GO bit not set\n");
+ 0, 0, 0) != 0) {
+ DSSERR("PLL GO bit not clearing\n");
return -ETIMEDOUT;
}
--
2.1.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/5] OMAPDSS: HDMI: fix regsd write
2014-10-22 8:39 [PATCH 1/5] OMAPDSS: HDMI: fix PLL GO bit handling Tomi Valkeinen
@ 2014-10-22 8:39 ` Tomi Valkeinen
2014-10-22 8:39 ` [PATCH 3/5] OMAPDSS: DISPC: fix mflag offset Tomi Valkeinen
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Tomi Valkeinen @ 2014-10-22 8:39 UTC (permalink / raw)
To: linux-omap, linux-fbdev; +Cc: Tomi Valkeinen
HDMI PLL's REGSD field is only set by the driver if the PLL's output
clock is over 1GHz. This is clearly an error, as REGSD should be set
always.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
drivers/video/fbdev/omap2/dss/hdmi_pll.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/video/fbdev/omap2/dss/hdmi_pll.c b/drivers/video/fbdev/omap2/dss/hdmi_pll.c
index d4ec815ba42e..6d92bb32fe51 100644
--- a/drivers/video/fbdev/omap2/dss/hdmi_pll.c
+++ b/drivers/video/fbdev/omap2/dss/hdmi_pll.c
@@ -124,16 +124,15 @@ static int hdmi_pll_config(struct hdmi_pll_data *pll)
r = FLD_MOD(r, 0x0, 14, 14); /* PHY_CLKINEN de-assert during locking */
r = FLD_MOD(r, fmt->refsel, 22, 21); /* REFSEL */
- if (fmt->dcofreq) {
- /* divider programming for frequency beyond 1000Mhz */
- REG_FLD_MOD(pll->base, PLLCTRL_CFG3, fmt->regsd, 17, 10);
+ if (fmt->dcofreq)
r = FLD_MOD(r, 0x4, 3, 1); /* 1000MHz and 2000MHz */
- } else {
+ else
r = FLD_MOD(r, 0x2, 3, 1); /* 500MHz and 1000MHz */
- }
hdmi_write_reg(pll->base, PLLCTRL_CFG2, r);
+ REG_FLD_MOD(pll->base, PLLCTRL_CFG3, fmt->regsd, 17, 10);
+
r = hdmi_read_reg(pll->base, PLLCTRL_CFG4);
r = FLD_MOD(r, fmt->regm2, 24, 18);
r = FLD_MOD(r, fmt->regmf, 17, 0);
--
2.1.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/5] OMAPDSS: DISPC: fix mflag offset
2014-10-22 8:39 [PATCH 1/5] OMAPDSS: HDMI: fix PLL GO bit handling Tomi Valkeinen
2014-10-22 8:39 ` [PATCH 2/5] OMAPDSS: HDMI: fix regsd write Tomi Valkeinen
@ 2014-10-22 8:39 ` Tomi Valkeinen
2014-10-22 8:39 ` [PATCH 4/5] OMAPDSS: fix dispc register dump for preload & mflag Tomi Valkeinen
2014-10-22 8:39 ` [PATCH 5/5] OMAPDSS: DSI: Fix PLL_SELFEQDCO field width Tomi Valkeinen
3 siblings, 0 replies; 5+ messages in thread
From: Tomi Valkeinen @ 2014-10-22 8:39 UTC (permalink / raw)
To: linux-omap, linux-fbdev; +Cc: Tomi Valkeinen
The register offset for DISPC_OVL_MFLAG_THRESHOLD is wrong, fix it.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
drivers/video/fbdev/omap2/dss/dispc.h | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/video/fbdev/omap2/dss/dispc.h b/drivers/video/fbdev/omap2/dss/dispc.h
index 78edb449c763..3043d6e0a5f9 100644
--- a/drivers/video/fbdev/omap2/dss/dispc.h
+++ b/drivers/video/fbdev/omap2/dss/dispc.h
@@ -101,8 +101,7 @@
DISPC_FIR_COEF_V2_OFFSET(n, i))
#define DISPC_OVL_PRELOAD(n) (DISPC_OVL_BASE(n) + \
DISPC_PRELOAD_OFFSET(n))
-#define DISPC_OVL_MFLAG_THRESHOLD(n) (DISPC_OVL_BASE(n) + \
- DISPC_MFLAG_THRESHOLD_OFFSET(n))
+#define DISPC_OVL_MFLAG_THRESHOLD(n) DISPC_MFLAG_THRESHOLD_OFFSET(n)
/* DISPC up/downsampling FIR filter coefficient structure */
struct dispc_coef {
--
2.1.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 4/5] OMAPDSS: fix dispc register dump for preload & mflag
2014-10-22 8:39 [PATCH 1/5] OMAPDSS: HDMI: fix PLL GO bit handling Tomi Valkeinen
2014-10-22 8:39 ` [PATCH 2/5] OMAPDSS: HDMI: fix regsd write Tomi Valkeinen
2014-10-22 8:39 ` [PATCH 3/5] OMAPDSS: DISPC: fix mflag offset Tomi Valkeinen
@ 2014-10-22 8:39 ` Tomi Valkeinen
2014-10-22 8:39 ` [PATCH 5/5] OMAPDSS: DSI: Fix PLL_SELFEQDCO field width Tomi Valkeinen
3 siblings, 0 replies; 5+ messages in thread
From: Tomi Valkeinen @ 2014-10-22 8:39 UTC (permalink / raw)
To: linux-omap, linux-fbdev; +Cc: Tomi Valkeinen
Preload register is dumped twice for video overlays and mflag register
is not dumped for GFX.
Fix the register dump.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
drivers/video/fbdev/omap2/dss/dispc.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/video/fbdev/omap2/dss/dispc.c b/drivers/video/fbdev/omap2/dss/dispc.c
index e67976bd0627..0e9a74bb9fc2 100644
--- a/drivers/video/fbdev/omap2/dss/dispc.c
+++ b/drivers/video/fbdev/omap2/dss/dispc.c
@@ -3290,8 +3290,11 @@ static void dispc_dump_regs(struct seq_file *s)
DUMPREG(i, DISPC_OVL_FIFO_SIZE_STATUS);
DUMPREG(i, DISPC_OVL_ROW_INC);
DUMPREG(i, DISPC_OVL_PIXEL_INC);
+
if (dss_has_feature(FEAT_PRELOAD))
DUMPREG(i, DISPC_OVL_PRELOAD);
+ if (dss_has_feature(FEAT_MFLAG))
+ DUMPREG(i, DISPC_OVL_MFLAG_THRESHOLD);
if (i = OMAP_DSS_GFX) {
DUMPREG(i, DISPC_OVL_WINDOW_SKIP);
@@ -3312,10 +3315,6 @@ static void dispc_dump_regs(struct seq_file *s)
}
if (dss_has_feature(FEAT_ATTR2))
DUMPREG(i, DISPC_OVL_ATTRIBUTES2);
- if (dss_has_feature(FEAT_PRELOAD))
- DUMPREG(i, DISPC_OVL_PRELOAD);
- if (dss_has_feature(FEAT_MFLAG))
- DUMPREG(i, DISPC_OVL_MFLAG_THRESHOLD);
}
#undef DISPC_REG
--
2.1.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 5/5] OMAPDSS: DSI: Fix PLL_SELFEQDCO field width
2014-10-22 8:39 [PATCH 1/5] OMAPDSS: HDMI: fix PLL GO bit handling Tomi Valkeinen
` (2 preceding siblings ...)
2014-10-22 8:39 ` [PATCH 4/5] OMAPDSS: fix dispc register dump for preload & mflag Tomi Valkeinen
@ 2014-10-22 8:39 ` Tomi Valkeinen
3 siblings, 0 replies; 5+ messages in thread
From: Tomi Valkeinen @ 2014-10-22 8:39 UTC (permalink / raw)
To: linux-omap, linux-fbdev; +Cc: Tomi Valkeinen
PLL_SELFREQDCO bitfield is from bit 3 to 1, but the driver writes bits
from 4 to 1. The bit 4 is 'reserved', so this probably should not cause
any issues, but it's better to fix it.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
drivers/video/fbdev/omap2/dss/dsi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/fbdev/omap2/dss/dsi.c b/drivers/video/fbdev/omap2/dss/dsi.c
index 947bd7b93375..0793bc67a275 100644
--- a/drivers/video/fbdev/omap2/dss/dsi.c
+++ b/drivers/video/fbdev/omap2/dss/dsi.c
@@ -1603,7 +1603,7 @@ int dsi_pll_set_clock_div(struct platform_device *dsidev,
} else if (dss_has_feature(FEAT_DSI_PLL_SELFREQDCO)) {
f = cinfo->clkin4ddr < 1000000000 ? 0x2 : 0x4;
- l = FLD_MOD(l, f, 4, 1); /* PLL_SELFREQDCO */
+ l = FLD_MOD(l, f, 3, 1); /* PLL_SELFREQDCO */
}
l = FLD_MOD(l, 1, 13, 13); /* DSI_PLL_REFEN */
--
2.1.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-10-22 8:39 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-10-22 8:39 [PATCH 1/5] OMAPDSS: HDMI: fix PLL GO bit handling Tomi Valkeinen
2014-10-22 8:39 ` [PATCH 2/5] OMAPDSS: HDMI: fix regsd write Tomi Valkeinen
2014-10-22 8:39 ` [PATCH 3/5] OMAPDSS: DISPC: fix mflag offset Tomi Valkeinen
2014-10-22 8:39 ` [PATCH 4/5] OMAPDSS: fix dispc register dump for preload & mflag Tomi Valkeinen
2014-10-22 8:39 ` [PATCH 5/5] OMAPDSS: DSI: Fix PLL_SELFEQDCO field width Tomi Valkeinen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).