@ -82,7 +82,8 @@ static int exynos_get_pll_clk(int pllreg, unsigned int r, unsigned int k)
* VPLL_CON : MIDV [ 24 : 16 ]
* BPLL_CON : MIDV [ 25 : 16 ] : Exynos5
*/
if ( pllreg = = APLL | | pllreg = = MPLL | | pllreg = = BPLL )
if ( pllreg = = APLL | | pllreg = = MPLL | | pllreg = = BPLL | |
pllreg = = SPLL )
mask = 0x3ff ;
else
mask = 0x1ff ;
@ -391,6 +392,9 @@ static unsigned long exynos5420_get_pll_clk(int pllreg)
r = readl ( & clk - > rpll_con0 ) ;
k = readl ( & clk - > rpll_con1 ) ;
break ;
case SPLL :
r = readl ( & clk - > spll_con0 ) ;
break ;
default :
printf ( " Unsupported PLL (%d) \n " , pllreg ) ;
return 0 ;
@ -1027,6 +1031,40 @@ static unsigned long exynos5_get_lcd_clk(void)
return pclk ;
}
static unsigned long exynos5420_get_lcd_clk ( void )
{
struct exynos5420_clock * clk =
( struct exynos5420_clock * ) samsung_get_base_clock ( ) ;
unsigned long pclk , sclk ;
unsigned int sel ;
unsigned int ratio ;
/*
* CLK_SRC_DISP10
* FIMD1_SEL [ 4 ]
* 0 : SCLK_RPLL
* 1 : SCLK_SPLL
*/
sel = readl ( & clk - > src_disp10 ) ;
sel & = ( 1 < < 4 ) ;
if ( sel )
sclk = get_pll_clk ( SPLL ) ;
else
sclk = get_pll_clk ( RPLL ) ;
/*
* CLK_DIV_DISP10
* FIMD1_RATIO [ 3 : 0 ]
*/
ratio = readl ( & clk - > div_disp10 ) ;
ratio = ratio & 0xf ;
pclk = sclk / ( ratio + 1 ) ;
return pclk ;
}
void exynos4_set_lcd_clk ( void )
{
struct exynos4_clock * clk =
@ -1131,6 +1169,33 @@ void exynos5_set_lcd_clk(void)
clrsetbits_le32 ( & clk - > div_disp1_0 , 0xf , 0x0 ) ;
}
void exynos5420_set_lcd_clk ( void )
{
struct exynos5420_clock * clk =
( struct exynos5420_clock * ) samsung_get_base_clock ( ) ;
unsigned int cfg ;
/*
* CLK_SRC_DISP10
* FIMD1_SEL [ 4 ]
* 0 : SCLK_RPLL
* 1 : SCLK_SPLL
*/
cfg = readl ( & clk - > src_disp10 ) ;
cfg & = ~ ( 0x1 < < 4 ) ;
cfg | = ( 0 < < 4 ) ;
writel ( cfg , & clk - > src_disp10 ) ;
/*
* CLK_DIV_DISP10
* FIMD1_RATIO [ 3 : 0 ]
*/
cfg = readl ( & clk - > div_disp10 ) ;
cfg & = ~ ( 0xf < < 0 ) ;
cfg | = ( 0 < < 0 ) ;
writel ( cfg , & clk - > div_disp10 ) ;
}
void exynos4_set_mipi_clk ( void )
{
struct exynos4_clock * clk =
@ -1602,16 +1667,24 @@ unsigned long get_lcd_clk(void)
{
if ( cpu_is_exynos4 ( ) )
return exynos4_get_lcd_clk ( ) ;
else {
if ( proid_is_exynos5420 ( ) )
return exynos5420_get_lcd_clk ( ) ;
else
return exynos5_get_lcd_clk ( ) ;
}
}
void set_lcd_clk ( void )
{
if ( cpu_is_exynos4 ( ) )
exynos4_set_lcd_clk ( ) ;
else
else {
if ( proid_is_exynos5250 ( ) )
exynos5_set_lcd_clk ( ) ;
else if ( proid_is_exynos5420 ( ) )
exynos5420_set_lcd_clk ( ) ;
}
}
void set_mipi_clk ( void )