dpll-sld8.c 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. * Copyright (C) 2013-2014 Panasonic Corporation
  3. * Copyright (C) 2015-2016 Socionext Inc.
  4. *
  5. * SPDX-License-Identifier: GPL-2.0+
  6. */
  7. #include <common.h>
  8. #include <linux/io.h>
  9. #include "../init.h"
  10. #include "../sc-regs.h"
  11. int uniphier_sld8_dpll_init(const struct uniphier_board_data *bd)
  12. {
  13. u32 tmp;
  14. /*
  15. * Set DPLL SSC parameters for DPLLCTRL3
  16. * [23] DIVN_TEST 0x1
  17. * [22:16] DIVN 0x50
  18. * [10] FREFSEL_TEST 0x1
  19. * [9:8] FREFSEL 0x2
  20. * [4] ICPD_TEST 0x1
  21. * [3:0] ICPD 0xb
  22. */
  23. tmp = readl(SC_DPLLCTRL3);
  24. tmp &= ~0x00ff0717;
  25. tmp |= 0x00d0061b;
  26. writel(tmp, SC_DPLLCTRL3);
  27. /*
  28. * Set DPLL SSC parameters for DPLLCTRL
  29. * <-1%> <-2%>
  30. * [29:20] SSC_UPCNT 132 (0x084) 132 (0x084)
  31. * [14:0] SSC_dK 6335(0x18bf) 12710(0x31a6)
  32. */
  33. tmp = readl(SC_DPLLCTRL);
  34. tmp &= ~0x3ff07fff;
  35. #ifdef DPLL_SSC_RATE_1PER
  36. tmp |= 0x084018bf;
  37. #else
  38. tmp |= 0x084031a6;
  39. #endif
  40. writel(tmp, SC_DPLLCTRL);
  41. /*
  42. * Set DPLL SSC parameters for DPLLCTRL2
  43. * [31:29] SSC_STEP 0
  44. * [27] SSC_REG_REF 1
  45. * [26:20] SSC_M 79 (0x4f)
  46. * [19:0] SSC_K 964689 (0xeb851)
  47. */
  48. tmp = readl(SC_DPLLCTRL2);
  49. tmp &= ~0xefffffff;
  50. tmp |= 0x0cfeb851;
  51. writel(tmp, SC_DPLLCTRL2);
  52. /* Wait 500 usec until dpll gets stable */
  53. udelay(500);
  54. return 0;
  55. }