Skip to content
Snippets Groups Projects
Commit 94069301 authored by Lokesh Vutla's avatar Lokesh Vutla Committed by Tom Rini
Browse files

ARM: keystone2: Cleanup init_pll definition


This is just a cosmetic change that makes
the calling of pll init code looks much cleaner.

Reviewed-by: default avatarTom Rini <trini@konsulko.com>
Reviewed-by: default avatarVitaly Andrianov <vitalya@ti.com>
Signed-off-by: default avatarLokesh Vutla <lokeshvutla@ti.com>
parent 74af583e
No related branches found
No related tags found
No related merge requests found
...@@ -211,12 +211,16 @@ void init_pll(const struct pll_init_data *data) ...@@ -211,12 +211,16 @@ void init_pll(const struct pll_init_data *data)
sdelay(210000); sdelay(210000);
} }
void init_plls(int num_pll, struct pll_init_data *config) void init_plls(void)
{ {
int i; struct pll_init_data *data;
int pll;
for (i = 0; i < num_pll; i++) for (pll = MAIN_PLL; pll < MAX_PLL_COUNT; pll++) {
init_pll(&config[i]); data = get_pll_init_data(pll);
if (data)
init_pll(data);
}
} }
static int get_max_speed(u32 val, u32 speed_supported) static int get_max_speed(u32 val, u32 speed_supported)
......
...@@ -76,8 +76,9 @@ extern const struct keystone_pll_regs keystone_pll_regs[]; ...@@ -76,8 +76,9 @@ extern const struct keystone_pll_regs keystone_pll_regs[];
extern s16 divn_val[]; extern s16 divn_val[];
extern int speeds[]; extern int speeds[];
void init_plls(int num_pll, struct pll_init_data *config); void init_plls(void);
void init_pll(const struct pll_init_data *data); void init_pll(const struct pll_init_data *data);
struct pll_init_data *get_pll_init_data(int pll);
unsigned long clk_get_rate(unsigned int clk); unsigned long clk_get_rate(unsigned int clk);
unsigned long clk_round_rate(unsigned int clk, unsigned long hz); unsigned long clk_round_rate(unsigned int clk, unsigned long hz);
int clk_set_rate(unsigned int clk, unsigned long hz); int clk_set_rate(unsigned int clk, unsigned long hz);
......
...@@ -59,6 +59,26 @@ s16 divn_val[16] = { ...@@ -59,6 +59,26 @@ s16 divn_val[16] = {
static struct pll_init_data pa_pll_config = static struct pll_init_data pa_pll_config =
PASS_PLL_1000; PASS_PLL_1000;
struct pll_init_data *get_pll_init_data(int pll)
{
int speed;
struct pll_init_data *data;
switch (pll) {
case MAIN_PLL:
speed = get_max_dev_speed();
data = &core_pll_config[speed];
break;
case PASS_PLL:
data = &pa_pll_config;
break;
default:
data = NULL;
}
return data;
}
#ifdef CONFIG_DRIVER_TI_KEYSTONE_NET #ifdef CONFIG_DRIVER_TI_KEYSTONE_NET
struct eth_priv_t eth_priv_cfg[] = { struct eth_priv_t eth_priv_cfg[] = {
{ {
...@@ -128,24 +148,15 @@ int get_num_eth_ports(void) ...@@ -128,24 +148,15 @@ int get_num_eth_ports(void)
#if defined(CONFIG_BOARD_EARLY_INIT_F) #if defined(CONFIG_BOARD_EARLY_INIT_F)
int board_early_init_f(void) int board_early_init_f(void)
{ {
int speed; init_plls();
speed = get_max_dev_speed();
init_pll(&core_pll_config[speed]);
init_pll(&pa_pll_config);
return 0; return 0;
} }
#endif #endif
#ifdef CONFIG_SPL_BUILD #ifdef CONFIG_SPL_BUILD
static struct pll_init_data spl_pll_config[] = {
CORE_PLL_800,
};
void spl_init_keystone_plls(void) void spl_init_keystone_plls(void)
{ {
init_plls(ARRAY_SIZE(spl_pll_config), spl_pll_config); init_plls();
} }
#endif #endif
...@@ -50,6 +50,30 @@ static struct pll_init_data tetris_pll_config[] = { ...@@ -50,6 +50,30 @@ static struct pll_init_data tetris_pll_config[] = {
static struct pll_init_data pa_pll_config = static struct pll_init_data pa_pll_config =
PASS_PLL_983; PASS_PLL_983;
struct pll_init_data *get_pll_init_data(int pll)
{
int speed;
struct pll_init_data *data;
switch (pll) {
case MAIN_PLL:
speed = get_max_dev_speed();
data = &core_pll_config[speed];
break;
case TETRIS_PLL:
speed = get_max_arm_speed();
data = &tetris_pll_config[speed];
break;
case PASS_PLL:
data = &pa_pll_config;
break;
default:
data = NULL;
}
return data;
}
#ifdef CONFIG_DRIVER_TI_KEYSTONE_NET #ifdef CONFIG_DRIVER_TI_KEYSTONE_NET
struct eth_priv_t eth_priv_cfg[] = { struct eth_priv_t eth_priv_cfg[] = {
{ {
...@@ -91,28 +115,15 @@ int get_num_eth_ports(void) ...@@ -91,28 +115,15 @@ int get_num_eth_ports(void)
#ifdef CONFIG_BOARD_EARLY_INIT_F #ifdef CONFIG_BOARD_EARLY_INIT_F
int board_early_init_f(void) int board_early_init_f(void)
{ {
int speed; init_plls();
speed = get_max_dev_speed();
init_pll(&core_pll_config[speed]);
init_pll(&pa_pll_config);
speed = get_max_arm_speed();
init_pll(&tetris_pll_config[speed]);
return 0; return 0;
} }
#endif #endif
#ifdef CONFIG_SPL_BUILD #ifdef CONFIG_SPL_BUILD
static struct pll_init_data spl_pll_config[] = {
CORE_PLL_799,
TETRIS_PLL_500,
};
void spl_init_keystone_plls(void) void spl_init_keystone_plls(void)
{ {
init_plls(ARRAY_SIZE(spl_pll_config), spl_pll_config); init_plls();
} }
#endif #endif
...@@ -46,6 +46,30 @@ static struct pll_init_data tetris_pll_config[] = { ...@@ -46,6 +46,30 @@ static struct pll_init_data tetris_pll_config[] = {
static struct pll_init_data pa_pll_config = static struct pll_init_data pa_pll_config =
PASS_PLL_983; PASS_PLL_983;
struct pll_init_data *get_pll_init_data(int pll)
{
int speed;
struct pll_init_data *data;
switch (pll) {
case MAIN_PLL:
speed = get_max_dev_speed();
data = &core_pll_config[speed];
break;
case TETRIS_PLL:
speed = get_max_arm_speed();
data = &tetris_pll_config[speed];
break;
case PASS_PLL:
data = &pa_pll_config;
break;
default:
data = NULL;
}
return data;
}
#ifdef CONFIG_DRIVER_TI_KEYSTONE_NET #ifdef CONFIG_DRIVER_TI_KEYSTONE_NET
struct eth_priv_t eth_priv_cfg[] = { struct eth_priv_t eth_priv_cfg[] = {
{ {
...@@ -87,28 +111,15 @@ int get_num_eth_ports(void) ...@@ -87,28 +111,15 @@ int get_num_eth_ports(void)
#ifdef CONFIG_BOARD_EARLY_INIT_F #ifdef CONFIG_BOARD_EARLY_INIT_F
int board_early_init_f(void) int board_early_init_f(void)
{ {
int speed; init_plls();
speed = get_max_dev_speed();
init_pll(&core_pll_config[speed]);
init_pll(&pa_pll_config);
speed = get_max_arm_speed();
init_pll(&tetris_pll_config[speed]);
return 0; return 0;
} }
#endif #endif
#ifdef CONFIG_SPL_BUILD #ifdef CONFIG_SPL_BUILD
static struct pll_init_data spl_pll_config[] = {
CORE_PLL_799,
TETRIS_PLL_491,
};
void spl_init_keystone_plls(void) void spl_init_keystone_plls(void)
{ {
init_plls(ARRAY_SIZE(spl_pll_config), spl_pll_config); init_plls();
} }
#endif #endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment