stv0991_cgu.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * Copyright (C) 2014, STMicroelectronics - All Rights Reserved
  4. * Author(s): Vikas Manocha, <vikas.manocha@st.com> for STMicroelectronics.
  5. */
  6. #ifndef _STV0991_CGU_H
  7. #define _STV0991_CGU_H
  8. struct stv0991_cgu_regs {
  9. u32 cpu_freq; /* offset 0x0 */
  10. u32 icn2_freq; /* offset 0x4 */
  11. u32 dma_freq; /* offset 0x8 */
  12. u32 isp_freq; /* offset 0xc */
  13. u32 h264_freq; /* offset 0x10 */
  14. u32 osif_freq; /* offset 0x14 */
  15. u32 ren_freq; /* offset 0x18 */
  16. u32 tim_freq; /* offset 0x1c */
  17. u32 sai_freq; /* offset 0x20 */
  18. u32 eth_freq; /* offset 0x24 */
  19. u32 i2c_freq; /* offset 0x28 */
  20. u32 spi_freq; /* offset 0x2c */
  21. u32 uart_freq; /* offset 0x30 */
  22. u32 qspi_freq; /* offset 0x34 */
  23. u32 sdio_freq; /* offset 0x38 */
  24. u32 usi_freq; /* offset 0x3c */
  25. u32 can_line_freq; /* offset 0x40 */
  26. u32 debug_freq; /* offset 0x44 */
  27. u32 trace_freq; /* offset 0x48 */
  28. u32 stm_freq; /* offset 0x4c */
  29. u32 eth_ctrl; /* offset 0x50 */
  30. u32 reserved[3]; /* offset 0x54 */
  31. u32 osc_ctrl; /* offset 0x60 */
  32. u32 pll1_ctrl; /* offset 0x64 */
  33. u32 pll1_freq; /* offset 0x68 */
  34. u32 pll1_fract; /* offset 0x6c */
  35. u32 pll1_spread; /* offset 0x70 */
  36. u32 pll1_status; /* offset 0x74 */
  37. u32 pll2_ctrl; /* offset 0x78 */
  38. u32 pll2_freq; /* offset 0x7c */
  39. u32 pll2_fract; /* offset 0x80 */
  40. u32 pll2_spread; /* offset 0x84 */
  41. u32 pll2_status; /* offset 0x88 */
  42. u32 cgu_enable_1; /* offset 0x8c */
  43. u32 cgu_enable_2; /* offset 0x90 */
  44. u32 cgu_isp_pulse; /* offset 0x94 */
  45. u32 cgu_h264_pulse; /* offset 0x98 */
  46. u32 cgu_osif_pulse; /* offset 0x9c */
  47. u32 cgu_ren_pulse; /* offset 0xa0 */
  48. };
  49. /* CGU Timer */
  50. #define CLK_TMR_OSC 0
  51. #define CLK_TMR_MCLK 1
  52. #define CLK_TMR_PLL1 2
  53. #define CLK_TMR_PLL2 3
  54. #define MDIV_SHIFT_TMR 3
  55. #define DIV_SHIFT_TMR 6
  56. #define TIMER1_CLK_CFG (0 << DIV_SHIFT_TMR \
  57. | 0 << MDIV_SHIFT_TMR | CLK_TMR_MCLK)
  58. /* Clock Enable/Disable */
  59. #define TIMER1_CLK_EN (1 << 15)
  60. /* CGU Uart config */
  61. #define CLK_UART_MCLK 0
  62. #define CLK_UART_PLL1 1
  63. #define CLK_UART_PLL2 2
  64. #define MDIV_SHIFT_UART 3
  65. #define DIV_SHIFT_UART 6
  66. #define UART_CLK_CFG (4 << DIV_SHIFT_UART \
  67. | 1 << MDIV_SHIFT_UART | CLK_UART_MCLK)
  68. /* CGU Ethernet clock config */
  69. #define CLK_ETH_MCLK 0
  70. #define CLK_ETH_PLL1 1
  71. #define CLK_ETH_PLL2 2
  72. #define MDIV_SHIFT_ETH 3
  73. #define DIV_SHIFT_ETH 6
  74. #define DIV_ETH_125 9
  75. #define DIV_ETH_50 12
  76. #define DIV_ETH_P2P 15
  77. #define ETH_CLK_CFG (4 << DIV_ETH_P2P | 4 << DIV_ETH_50 \
  78. | 1 << DIV_ETH_125 \
  79. | 0 << DIV_SHIFT_ETH \
  80. | 3 << MDIV_SHIFT_ETH | CLK_ETH_PLL1)
  81. /* CGU Ethernet control */
  82. #define ETH_CLK_TX_EXT_PHY 0
  83. #define ETH_CLK_TX_125M 1
  84. #define ETH_CLK_TX_25M 2
  85. #define ETH_CLK_TX_2M5 3
  86. #define ETH_CLK_TX_DIS 7
  87. #define ETH_CLK_RX_EXT_PHY 0
  88. #define ETH_CLK_RX_25M 1
  89. #define ETH_CLK_RX_2M5 2
  90. #define ETH_CLK_RX_DIS 3
  91. #define RX_CLK_SHIFT 3
  92. #define ETH_CLK_MASK ~(0x1F)
  93. #define ETH_PHY_MODE_GMII 0
  94. #define ETH_PHY_MODE_RMII 1
  95. #define ETH_PHY_CLK_DIS 1
  96. #define ETH_CLK_CTRL (ETH_CLK_RX_EXT_PHY << RX_CLK_SHIFT \
  97. | ETH_CLK_TX_EXT_PHY)
  98. /* CGU qspi clock */
  99. #define DIV_HCLK1_SHIFT 9
  100. #define DIV_CRYP_SHIFT 6
  101. #define MDIV_QSPI_SHIFT 3
  102. #define CLK_QSPI_OSC 0
  103. #define CLK_QSPI_MCLK 1
  104. #define CLK_QSPI_PLL1 2
  105. #define CLK_QSPI_PLL2 3
  106. #define QSPI_CLK_CTRL (3 << DIV_HCLK1_SHIFT \
  107. | 1 << DIV_CRYP_SHIFT \
  108. | 0 << MDIV_QSPI_SHIFT \
  109. | CLK_QSPI_OSC)
  110. #endif