cpu.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /*
  2. * (C) Copyright 2010
  3. * Vipin Kumar, ST Micoelectronics, vipin.kumar@st.com.
  4. *
  5. * SPDX-License-Identifier: GPL-2.0+
  6. */
  7. #include <common.h>
  8. #include <asm/io.h>
  9. #include <asm/arch/hardware.h>
  10. #include <asm/arch/spr_misc.h>
  11. int arch_cpu_init(void)
  12. {
  13. struct misc_regs *const misc_p =
  14. (struct misc_regs *)CONFIG_SPEAR_MISCBASE;
  15. u32 periph1_clken, periph_clk_cfg;
  16. periph1_clken = readl(&misc_p->periph1_clken);
  17. #if defined(CONFIG_SPEAR3XX)
  18. periph1_clken |= MISC_GPT2ENB;
  19. #elif defined(CONFIG_SPEAR600)
  20. periph1_clken |= MISC_GPT3ENB;
  21. #endif
  22. #if defined(CONFIG_PL011_SERIAL)
  23. periph1_clken |= MISC_UART0ENB;
  24. periph_clk_cfg = readl(&misc_p->periph_clk_cfg);
  25. periph_clk_cfg &= ~CONFIG_SPEAR_UARTCLKMSK;
  26. periph_clk_cfg |= CONFIG_SPEAR_UART48M;
  27. writel(periph_clk_cfg, &misc_p->periph_clk_cfg);
  28. #endif
  29. #if defined(CONFIG_DESIGNWARE_ETH)
  30. periph1_clken |= MISC_ETHENB;
  31. #endif
  32. #if defined(CONFIG_DW_UDC)
  33. periph1_clken |= MISC_USBDENB;
  34. #endif
  35. #if defined(CONFIG_DW_I2C)
  36. periph1_clken |= MISC_I2CENB;
  37. #endif
  38. #if defined(CONFIG_ST_SMI)
  39. periph1_clken |= MISC_SMIENB;
  40. #endif
  41. #if defined(CONFIG_NAND_FSMC)
  42. periph1_clken |= MISC_FSMCENB;
  43. #endif
  44. writel(periph1_clken, &misc_p->periph1_clken);
  45. return 0;
  46. }
  47. #ifdef CONFIG_DISPLAY_CPUINFO
  48. int print_cpuinfo(void)
  49. {
  50. #ifdef CONFIG_SPEAR300
  51. printf("CPU: SPEAr300\n");
  52. #elif defined(CONFIG_SPEAR310)
  53. printf("CPU: SPEAr310\n");
  54. #elif defined(CONFIG_SPEAR320)
  55. printf("CPU: SPEAr320\n");
  56. #elif defined(CONFIG_SPEAR600)
  57. printf("CPU: SPEAr600\n");
  58. #else
  59. #error CPU not supported in spear platform
  60. #endif
  61. return 0;
  62. }
  63. #endif