sbc_init_3cs.c 1.3 KB

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