board_k2g.c 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /*
  2. * K2G EVM : Board initialization
  3. *
  4. * (C) Copyright 2015
  5. * Texas Instruments Incorporated, <www.ti.com>
  6. *
  7. * SPDX-License-Identifier: GPL-2.0+
  8. */
  9. #include <common.h>
  10. #include <asm/arch/clock.h>
  11. #include "mux-k2g.h"
  12. #define SYS_CLK 24000000
  13. unsigned int external_clk[ext_clk_count] = {
  14. [sys_clk] = SYS_CLK,
  15. [pa_clk] = SYS_CLK,
  16. [tetris_clk] = SYS_CLK,
  17. [ddr3a_clk] = SYS_CLK,
  18. [uart_clk] = SYS_CLK,
  19. };
  20. static struct pll_init_data main_pll_config = {MAIN_PLL, 100, 1, 4};
  21. static struct pll_init_data tetris_pll_config = {TETRIS_PLL, 100, 1, 4};
  22. static struct pll_init_data uart_pll_config = {UART_PLL, 64, 1, 4};
  23. static struct pll_init_data nss_pll_config = {NSS_PLL, 250, 3, 2};
  24. static struct pll_init_data ddr3_pll_config = {DDR3A_PLL, 250, 3, 10};
  25. struct pll_init_data *get_pll_init_data(int pll)
  26. {
  27. struct pll_init_data *data = NULL;
  28. switch (pll) {
  29. case MAIN_PLL:
  30. data = &main_pll_config;
  31. break;
  32. case TETRIS_PLL:
  33. data = &tetris_pll_config;
  34. break;
  35. case NSS_PLL:
  36. data = &nss_pll_config;
  37. break;
  38. case UART_PLL:
  39. data = &uart_pll_config;
  40. break;
  41. case DDR3_PLL:
  42. data = &ddr3_pll_config;
  43. break;
  44. default:
  45. data = NULL;
  46. }
  47. return data;
  48. }
  49. s16 divn_val[16] = {
  50. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
  51. };
  52. #ifdef CONFIG_BOARD_EARLY_INIT_F
  53. int board_early_init_f(void)
  54. {
  55. init_plls();
  56. k2g_mux_config();
  57. return 0;
  58. }
  59. #endif
  60. #ifdef CONFIG_SPL_BUILD
  61. void spl_init_keystone_plls(void)
  62. {
  63. init_plls();
  64. }
  65. #endif