sbc_init_3cs.c 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /*
  2. * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
  3. *
  4. * SPDX-License-Identifier: GPL-2.0+
  5. */
  6. #include <common.h>
  7. #include <linux/io.h>
  8. #include <mach/sbc-regs.h>
  9. #include <mach/sg-regs.h>
  10. void sbc_init(void)
  11. {
  12. u32 tmp;
  13. /* system bus output enable */
  14. tmp = readl(PC0CTRL);
  15. tmp &= 0xfffffcff;
  16. writel(tmp, PC0CTRL);
  17. /* XECS1: sub/boot memory (boot swap = off/on) */
  18. writel(SBCTRL0_SAVEPIN_MEM_VALUE, SBCTRL10);
  19. writel(SBCTRL1_SAVEPIN_MEM_VALUE, SBCTRL11);
  20. writel(SBCTRL2_SAVEPIN_MEM_VALUE, SBCTRL12);
  21. writel(SBCTRL4_SAVEPIN_MEM_VALUE, SBCTRL14);
  22. /* XECS0: boot/sub memory (boot swap = off/on) */
  23. writel(SBCTRL0_SAVEPIN_MEM_VALUE, SBCTRL00);
  24. writel(SBCTRL1_SAVEPIN_MEM_VALUE, SBCTRL01);
  25. writel(SBCTRL2_SAVEPIN_MEM_VALUE, SBCTRL02);
  26. writel(SBCTRL4_SAVEPIN_MEM_VALUE, SBCTRL04);
  27. /* XECS3: peripherals */
  28. writel(SBCTRL0_SAVEPIN_PERI_VALUE, SBCTRL30);
  29. writel(SBCTRL1_SAVEPIN_PERI_VALUE, SBCTRL31);
  30. writel(SBCTRL2_SAVEPIN_PERI_VALUE, SBCTRL32);
  31. writel(SBCTRL4_SAVEPIN_PERI_VALUE, SBCTRL34);
  32. /* base address regsiters */
  33. writel(0x0000bc01, SBBASE0);
  34. writel(0x0400bc01, SBBASE1);
  35. writel(0x0800bf01, SBBASE3);
  36. /* enable access to sub memory when boot swap is on */
  37. if (boot_is_swapped())
  38. sg_set_pinsel(155, 1); /* PORT24 -> XECS0 */
  39. sg_set_pinsel(156, 1); /* PORT25 -> XECS3 */
  40. }