common: Drop image.h from common header
[platform/kernel/u-boot.git] / board / ti / ks2_evm / board_k2l.c
1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * K2L EVM : Board initialization
4  *
5  * (C) Copyright 2014
6  *     Texas Instruments Incorporated, <www.ti.com>
7  */
8
9 #include <common.h>
10 #include <image.h>
11 #include <asm/arch/ddr3.h>
12 #include <asm/arch/hardware.h>
13 #include <asm/ti-common/keystone_net.h>
14
15 unsigned int get_external_clk(u32 clk)
16 {
17         unsigned int clk_freq;
18
19         switch (clk) {
20         case sys_clk:
21                 clk_freq = 122880000;
22                 break;
23         case alt_core_clk:
24                 clk_freq = 100000000;
25                 break;
26         case pa_clk:
27                 clk_freq = 122880000;
28                 break;
29         case tetris_clk:
30                 clk_freq = 122880000;
31                 break;
32         case ddr3a_clk:
33                 clk_freq = 100000000;
34                 break;
35         default:
36                 clk_freq = 0;
37                 break;
38         }
39
40         return clk_freq;
41 }
42
43 static struct pll_init_data core_pll_config[NUM_SPDS] = {
44         [SPD800]        = CORE_PLL_799,
45         [SPD1000]       = CORE_PLL_1000,
46         [SPD1200]       = CORE_PLL_1198,
47 };
48
49 s16 divn_val[16] = {
50         0, 0, 1, 4, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
51 };
52
53 static struct pll_init_data tetris_pll_config[] = {
54         [SPD800]        = TETRIS_PLL_799,
55         [SPD1000]       = TETRIS_PLL_1000,
56         [SPD1200]       = TETRIS_PLL_1198,
57         [SPD1350]       = TETRIS_PLL_1352,
58         [SPD1400]       = TETRIS_PLL_1401,
59 };
60
61 static struct pll_init_data pa_pll_config =
62         PASS_PLL_983;
63
64 struct pll_init_data *get_pll_init_data(int pll)
65 {
66         int speed;
67         struct pll_init_data *data;
68
69         switch (pll) {
70         case MAIN_PLL:
71                 speed = get_max_dev_speed(speeds);
72                 data = &core_pll_config[speed];
73                 break;
74         case TETRIS_PLL:
75                 speed = get_max_arm_speed(speeds);
76                 data = &tetris_pll_config[speed];
77                 break;
78         case PASS_PLL:
79                 data = &pa_pll_config;
80                 break;
81         default:
82                 data = NULL;
83         }
84
85         return data;
86 }
87
88 #ifdef CONFIG_BOARD_EARLY_INIT_F
89 int board_early_init_f(void)
90 {
91         init_plls();
92
93         return 0;
94 }
95 #endif
96
97 #if defined(CONFIG_MULTI_DTB_FIT)
98 int board_fit_config_name_match(const char *name)
99 {
100         if (!strcmp(name, "keystone-k2l-evm"))
101                 return 0;
102
103         return -1;
104 }
105 #endif
106
107 #ifdef CONFIG_SPL_BUILD
108 void spl_init_keystone_plls(void)
109 {
110         init_plls();
111 }
112 #endif