clk-pro5.c 957 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
  3. *
  4. * SPDX-License-Identifier: GPL-2.0+
  5. */
  6. #include <linux/io.h>
  7. #include "../init.h"
  8. #include "../sc-regs.h"
  9. void uniphier_pro5_clk_init(void)
  10. {
  11. u32 tmp;
  12. /* deassert reset */
  13. tmp = readl(SC_RSTCTRL);
  14. #ifdef CONFIG_USB_XHCI_UNIPHIER
  15. tmp |= SC_RSTCTRL_NRST_USB3B0 | SC_RSTCTRL_NRST_GIO;
  16. #endif
  17. #ifdef CONFIG_NAND_DENALI
  18. tmp |= SC_RSTCTRL_NRST_NAND;
  19. #endif
  20. writel(tmp, SC_RSTCTRL);
  21. readl(SC_RSTCTRL); /* dummy read */
  22. #ifdef CONFIG_USB_XHCI_UNIPHIER
  23. tmp = readl(SC_RSTCTRL2);
  24. tmp |= SC_RSTCTRL2_NRST_USB3B1;
  25. writel(tmp, SC_RSTCTRL2);
  26. readl(SC_RSTCTRL2); /* dummy read */
  27. #endif
  28. /* provide clocks */
  29. tmp = readl(SC_CLKCTRL);
  30. #ifdef CONFIG_USB_XHCI_UNIPHIER
  31. tmp |= SC_CLKCTRL_CEN_USB31 | SC_CLKCTRL_CEN_USB30 |
  32. SC_CLKCTRL_CEN_GIO;
  33. #endif
  34. #ifdef CONFIG_NAND_DENALI
  35. tmp |= SC_CLKCTRL_CEN_NAND;
  36. #endif
  37. writel(tmp, SC_CLKCTRL);
  38. readl(SC_CLKCTRL); /* dummy read */
  39. }