clk-pro4.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /*
  2. * Copyright (C) 2011-2015 Panasonic Corporation
  3. * Copyright (C) 2015-2016 Socionext Inc.
  4. * Author: Masahiro Yamada <yamada.masahiro@socionext.com>
  5. *
  6. * SPDX-License-Identifier: GPL-2.0+
  7. */
  8. #include <linux/io.h>
  9. #include "../init.h"
  10. #include "../sc-regs.h"
  11. void uniphier_pro4_clk_init(void)
  12. {
  13. u32 tmp;
  14. /* deassert reset */
  15. tmp = readl(SC_RSTCTRL);
  16. #ifdef CONFIG_USB_XHCI_UNIPHIER
  17. tmp |= SC_RSTCTRL_NRST_USB3B0 | SC_RSTCTRL_NRST_USB3C0 |
  18. SC_RSTCTRL_NRST_GIO;
  19. #endif
  20. #ifdef CONFIG_UNIPHIER_ETH
  21. tmp |= SC_RSTCTRL_NRST_ETHER;
  22. #endif
  23. #ifdef CONFIG_NAND_DENALI
  24. tmp |= SC_RSTCTRL_NRST_NAND;
  25. #endif
  26. writel(tmp, SC_RSTCTRL);
  27. readl(SC_RSTCTRL); /* dummy read */
  28. #ifdef CONFIG_USB_XHCI_UNIPHIER
  29. tmp = readl(SC_RSTCTRL2);
  30. tmp |= SC_RSTCTRL2_NRST_USB3B1 | SC_RSTCTRL2_NRST_USB3C1;
  31. writel(tmp, SC_RSTCTRL2);
  32. readl(SC_RSTCTRL2); /* dummy read */
  33. #endif
  34. /* provide clocks */
  35. tmp = readl(SC_CLKCTRL);
  36. #ifdef CONFIG_USB_XHCI_UNIPHIER
  37. tmp |= SC_CLKCTRL_CEN_USB31 | SC_CLKCTRL_CEN_USB30 |
  38. SC_CLKCTRL_CEN_GIO;
  39. #endif
  40. #ifdef CONFIG_UNIPHIER_ETH
  41. tmp |= SC_CLKCTRL_CEN_ETHER;
  42. #endif
  43. #ifdef CONFIG_USB_EHCI
  44. tmp |= SC_CLKCTRL_CEN_MIO | SC_CLKCTRL_CEN_STDMAC;
  45. #endif
  46. #ifdef CONFIG_NAND_DENALI
  47. tmp |= SC_CLKCTRL_CEN_NAND;
  48. #endif
  49. writel(tmp, SC_CLKCTRL);
  50. readl(SC_CLKCTRL); /* dummy read */
  51. }