board: ge: bx50v3: Fix screen flickering
cover board: ge: bx50v3: Fix screen flickering
This patchset solves screen flickering observed at bootup on b650v3.
Steps to reproduce:
1) Connect B650 to power.
2) Switch On the Monitor.
3) Observe the display.
Ian Ray (2):
board: ge: bx50v3: correct LDB clock
board: ge: bx50v3: b{4,6}50v3 modeline
board/ge/bx50v3/bx50v3.c | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-)
Signature · 1 line
1.8.3.1
PATCH 1/2 board: ge: bx50v3: correct LDB clock
From: Ian Ray <[email protected]>
Use Video PLL to provide 65MHz for all displays.
Signed-off-by Ian Ray <[email protected]>
Signed-off-by Fabien Lahoudere <[email protected]>
--- board/ge/bx50v3/bx50v3.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-)
board/ge/bx50v3/bx50v3.c +17 -13
@@ -426,14 +426,22 @@ static void enable_videopll(void)setbits_le32 (&ccm->analog_pll_video,BM_ANADIG_PLL_VIDEO_POWERDOWN ); -/* set video pll to 910MHz (24MHz * (37+11/12)) -* video pll post div to 910/4 = 227.5MHz -*/ +/* PLL_VIDEO 455MHz (24MHz * (37+11/12) / 2) +* | +* PLL5 +* | +* CS2CDR[LDB_DI0_CLK_SEL] +* | +* +----> LDB_DI0_SERIAL_CLK_ROOT +* | +* +--> CSCMR2[LDB_DI0_IPU_DIV] --> LDB_DI0_IPU 455 / 7 = 65 MHz +*/ +clrsetbits_le32 (&ccm->analog_pll_video,BM_ANADIG_PLL_VIDEO_DIV_SELECT |BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT ,BF_ANADIG_PLL_VIDEO_DIV_SELECT (37 ) | -BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT (0 )); +BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT (1 ));writel (BF_ANADIG_PLL_VIDEO_NUM_A (11 ), &ccm->analog_pll_video_num);writel (BF_ANADIG_PLL_VIDEO_DENOM_B (12 ), &ccm->analog_pll_video_denom);
@@ -459,8 +467,8 @@ static void setup_display_b850v3(void)enable_videopll (); -/* IPU1 D0 clock is 227.5 / 3.5 = 65MHz */ -clrbits_le32 (&mxc_ccm->cscmr2,MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV ); +/* IPU1 DI0 clock is 455MHz / 7 = 65MHz */ +setbits_le32 (&mxc_ccm->cscmr2,MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV );imx_setup_hdmi ();
@@ -507,7 +515,7 @@ static void setup_display_bx50v3(void)*/ mdelay (200 ); -/* IPU1 DI0 clock is 480/7 = 68.5 MHz */ +/* IPU1 DI0 clock is 455MHz / 7 = 65MHz */ setbits_le32 (&mxc_ccm->cscmr2,MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV );/* Set LDB_DI0 as clock source for IPU_DI0 */
@@ -683,12 +691,8 @@ int board_early_init_f(void)setup_iomux_uart ();#if defined(CONFIG_VIDEO_IPUV3 ) -if (is_b850v3 ()) -/* Set LDB clock to Video PLL */ -select_ldb_di_clock_source (MXC_PLL5_CLK ); -else -/* Set LDB clock to USB PLL */ -select_ldb_di_clock_source (MXC_PLL3_SW_CLK ); +/* Set LDB clock to Video PLL */ +select_ldb_di_clock_source (MXC_PLL5_CLK );#endif return 0 ; }
Signature · 1 line
1.8.3.1
PATCH 2/2 board: ge: bx50v3: b{4,6}50v3 modeline
In reply to Fabien LahoudereFrom: Ian Ray <[email protected]>
The b{4,6}50v3 kernel framebuffer console requires a modeline otherwise the LVDS panel shows garbage.
Signed-off-by Ian Ray <[email protected]>
Signed-off-by Fabien Lahoudere <[email protected]>
--- board/ge/bx50v3/bx50v3.c | 2 ++ 1 file changed, 2 insertions(+)
board/ge/bx50v3/bx50v3.c +2 -0
@@ -809,6 +809,8 @@ int board_late_init(void)if (is_b850v3 ())env_set ("videoargs" ,"video=DP-1:1024x768 at 60 video=HDMI-A-1:1024x768 at 60" ); +else +env_set ("videoargs" ,"video=LVDS-1:1024x768 at 65" );/* board specific pmic init */ pmic_init ();
Signature · 1 line
1.8.3.1