soc.c 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /*
  2. * Copyright (c) 2010 Samsung Electronics.
  3. * Minkyu Kang <mk7.kang@samsung.com>
  4. *
  5. * See file CREDITS for list of people who contributed to this
  6. * project.
  7. *
  8. * This program is free software; you can redistribute it and/or
  9. * modify it under the terms of the GNU General Public License as
  10. * published by the Free Software Foundation; either version 2 of
  11. * the License, or (at your option) any later version.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License
  19. * along with this program; if not, write to the Free Software
  20. * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  21. * MA 02111-1307 USA
  22. */
  23. #include <common.h>
  24. #include <asm/io.h>
  25. #include <asm/system.h>
  26. enum l2_cache_params {
  27. CACHE_TAG_RAM_SETUP = (1 << 9),
  28. CACHE_DATA_RAM_SETUP = (1 << 5),
  29. CACHE_TAG_RAM_LATENCY = (2 << 6),
  30. CACHE_DATA_RAM_LATENCY = (2 << 0)
  31. };
  32. void reset_cpu(ulong addr)
  33. {
  34. writel(0x1, samsung_get_base_swreset());
  35. }
  36. #ifndef CONFIG_SYS_DCACHE_OFF
  37. void enable_caches(void)
  38. {
  39. /* Enable D-cache. I-cache is already enabled in start.S */
  40. dcache_enable();
  41. }
  42. #endif
  43. #ifndef CONFIG_SYS_L2CACHE_OFF
  44. /*
  45. * Set L2 cache parameters
  46. */
  47. static void exynos5_set_l2cache_params(void)
  48. {
  49. unsigned int val = 0;
  50. asm volatile("mrc p15, 1, %0, c9, c0, 2\n" : "=r"(val));
  51. val |= CACHE_TAG_RAM_SETUP |
  52. CACHE_DATA_RAM_SETUP |
  53. CACHE_TAG_RAM_LATENCY |
  54. CACHE_DATA_RAM_LATENCY;
  55. asm volatile("mcr p15, 1, %0, c9, c0, 2\n" : : "r"(val));
  56. }
  57. /*
  58. * Sets L2 cache related parameters before enabling data cache
  59. */
  60. void v7_outer_cache_enable(void)
  61. {
  62. if (cpu_is_exynos5())
  63. exynos5_set_l2cache_params();
  64. }
  65. #endif