005-v6.5-06-mips-ralink-mt7620-remove-clock-related-code.patch 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  1. From 04b153abdfcbaba70ceef5a846067d4447fd0078 Mon Sep 17 00:00:00 2001
  2. From: Sergio Paracuellos <[email protected]>
  3. Date: Mon, 19 Jun 2023 06:09:38 +0200
  4. Subject: [PATCH 6/9] mips: ralink: mt7620: remove clock related code
  5. A proper clock driver for ralink SoCs has been added. Hence there is no
  6. need to have clock related code in 'arch/mips/ralink' folder anymore.
  7. Since this is the last clock related code removal, remove also remaining
  8. prototypes in 'common.h' header file.
  9. Signed-off-by: Sergio Paracuellos <[email protected]>
  10. Signed-off-by: Thomas Bogendoerfer <[email protected]>
  11. ---
  12. arch/mips/include/asm/mach-ralink/mt7620.h | 35 -----
  13. arch/mips/ralink/common.h | 3 -
  14. arch/mips/ralink/mt7620.c | 226 -----------------------------
  15. 3 files changed, 264 deletions(-)
  16. --- a/arch/mips/include/asm/mach-ralink/mt7620.h
  17. +++ b/arch/mips/include/asm/mach-ralink/mt7620.h
  18. @@ -19,52 +19,17 @@
  19. #define SYSC_REG_CHIP_REV 0x0c
  20. #define SYSC_REG_SYSTEM_CONFIG0 0x10
  21. #define SYSC_REG_SYSTEM_CONFIG1 0x14
  22. -#define SYSC_REG_CLKCFG0 0x2c
  23. -#define SYSC_REG_CPU_SYS_CLKCFG 0x3c
  24. -#define SYSC_REG_CPLL_CONFIG0 0x54
  25. -#define SYSC_REG_CPLL_CONFIG1 0x58
  26. #define MT7620_CHIP_NAME0 0x3637544d
  27. #define MT7620_CHIP_NAME1 0x20203032
  28. #define MT7628_CHIP_NAME1 0x20203832
  29. -#define SYSCFG0_XTAL_FREQ_SEL BIT(6)
  30. -
  31. #define CHIP_REV_PKG_MASK 0x1
  32. #define CHIP_REV_PKG_SHIFT 16
  33. #define CHIP_REV_VER_MASK 0xf
  34. #define CHIP_REV_VER_SHIFT 8
  35. #define CHIP_REV_ECO_MASK 0xf
  36. -#define CLKCFG0_PERI_CLK_SEL BIT(4)
  37. -
  38. -#define CPU_SYS_CLKCFG_OCP_RATIO_SHIFT 16
  39. -#define CPU_SYS_CLKCFG_OCP_RATIO_MASK 0xf
  40. -#define CPU_SYS_CLKCFG_OCP_RATIO_1 0 /* 1:1 (Reserved) */
  41. -#define CPU_SYS_CLKCFG_OCP_RATIO_1_5 1 /* 1:1.5 (Reserved) */
  42. -#define CPU_SYS_CLKCFG_OCP_RATIO_2 2 /* 1:2 */
  43. -#define CPU_SYS_CLKCFG_OCP_RATIO_2_5 3 /* 1:2.5 (Reserved) */
  44. -#define CPU_SYS_CLKCFG_OCP_RATIO_3 4 /* 1:3 */
  45. -#define CPU_SYS_CLKCFG_OCP_RATIO_3_5 5 /* 1:3.5 (Reserved) */
  46. -#define CPU_SYS_CLKCFG_OCP_RATIO_4 6 /* 1:4 */
  47. -#define CPU_SYS_CLKCFG_OCP_RATIO_5 7 /* 1:5 */
  48. -#define CPU_SYS_CLKCFG_OCP_RATIO_10 8 /* 1:10 */
  49. -#define CPU_SYS_CLKCFG_CPU_FDIV_SHIFT 8
  50. -#define CPU_SYS_CLKCFG_CPU_FDIV_MASK 0x1f
  51. -#define CPU_SYS_CLKCFG_CPU_FFRAC_SHIFT 0
  52. -#define CPU_SYS_CLKCFG_CPU_FFRAC_MASK 0x1f
  53. -
  54. -#define CPLL_CFG0_SW_CFG BIT(31)
  55. -#define CPLL_CFG0_PLL_MULT_RATIO_SHIFT 16
  56. -#define CPLL_CFG0_PLL_MULT_RATIO_MASK 0x7
  57. -#define CPLL_CFG0_LC_CURFCK BIT(15)
  58. -#define CPLL_CFG0_BYPASS_REF_CLK BIT(14)
  59. -#define CPLL_CFG0_PLL_DIV_RATIO_SHIFT 10
  60. -#define CPLL_CFG0_PLL_DIV_RATIO_MASK 0x3
  61. -
  62. -#define CPLL_CFG1_CPU_AUX1 BIT(25)
  63. -#define CPLL_CFG1_CPU_AUX0 BIT(24)
  64. -
  65. #define SYSCFG0_DRAM_TYPE_MASK 0x3
  66. #define SYSCFG0_DRAM_TYPE_SHIFT 4
  67. #define SYSCFG0_DRAM_TYPE_SDRAM 0
  68. --- a/arch/mips/ralink/common.h
  69. +++ b/arch/mips/ralink/common.h
  70. @@ -23,9 +23,6 @@ extern struct ralink_soc_info soc_info;
  71. extern void ralink_of_remap(void);
  72. -extern void ralink_clk_init(void);
  73. -extern void ralink_clk_add(const char *dev, unsigned long rate);
  74. -
  75. extern void ralink_rst_init(void);
  76. extern void __init prom_soc_init(struct ralink_soc_info *soc_info);
  77. --- a/arch/mips/ralink/mt7620.c
  78. +++ b/arch/mips/ralink/mt7620.c
  79. @@ -34,12 +34,6 @@
  80. #define PMU1_CFG 0x8C
  81. #define DIG_SW_SEL BIT(25)
  82. -/* clock scaling */
  83. -#define CLKCFG_FDIV_MASK 0x1f00
  84. -#define CLKCFG_FDIV_USB_VAL 0x0300
  85. -#define CLKCFG_FFRAC_MASK 0x001f
  86. -#define CLKCFG_FFRAC_USB_VAL 0x0003
  87. -
  88. /* EFUSE bits */
  89. #define EFUSE_MT7688 0x100000
  90. @@ -49,226 +43,6 @@
  91. /* does the board have sdram or ddram */
  92. static int dram_type;
  93. -static __init u32
  94. -mt7620_calc_rate(u32 ref_rate, u32 mul, u32 div)
  95. -{
  96. - u64 t;
  97. -
  98. - t = ref_rate;
  99. - t *= mul;
  100. - do_div(t, div);
  101. -
  102. - return t;
  103. -}
  104. -
  105. -#define MHZ(x) ((x) * 1000 * 1000)
  106. -
  107. -static __init unsigned long
  108. -mt7620_get_xtal_rate(void)
  109. -{
  110. - u32 reg;
  111. -
  112. - reg = rt_sysc_r32(SYSC_REG_SYSTEM_CONFIG0);
  113. - if (reg & SYSCFG0_XTAL_FREQ_SEL)
  114. - return MHZ(40);
  115. -
  116. - return MHZ(20);
  117. -}
  118. -
  119. -static __init unsigned long
  120. -mt7620_get_periph_rate(unsigned long xtal_rate)
  121. -{
  122. - u32 reg;
  123. -
  124. - reg = rt_sysc_r32(SYSC_REG_CLKCFG0);
  125. - if (reg & CLKCFG0_PERI_CLK_SEL)
  126. - return xtal_rate;
  127. -
  128. - return MHZ(40);
  129. -}
  130. -
  131. -static const u32 mt7620_clk_divider[] __initconst = { 2, 3, 4, 8 };
  132. -
  133. -static __init unsigned long
  134. -mt7620_get_cpu_pll_rate(unsigned long xtal_rate)
  135. -{
  136. - u32 reg;
  137. - u32 mul;
  138. - u32 div;
  139. -
  140. - reg = rt_sysc_r32(SYSC_REG_CPLL_CONFIG0);
  141. - if (reg & CPLL_CFG0_BYPASS_REF_CLK)
  142. - return xtal_rate;
  143. -
  144. - if ((reg & CPLL_CFG0_SW_CFG) == 0)
  145. - return MHZ(600);
  146. -
  147. - mul = (reg >> CPLL_CFG0_PLL_MULT_RATIO_SHIFT) &
  148. - CPLL_CFG0_PLL_MULT_RATIO_MASK;
  149. - mul += 24;
  150. - if (reg & CPLL_CFG0_LC_CURFCK)
  151. - mul *= 2;
  152. -
  153. - div = (reg >> CPLL_CFG0_PLL_DIV_RATIO_SHIFT) &
  154. - CPLL_CFG0_PLL_DIV_RATIO_MASK;
  155. -
  156. - WARN_ON(div >= ARRAY_SIZE(mt7620_clk_divider));
  157. -
  158. - return mt7620_calc_rate(xtal_rate, mul, mt7620_clk_divider[div]);
  159. -}
  160. -
  161. -static __init unsigned long
  162. -mt7620_get_pll_rate(unsigned long xtal_rate, unsigned long cpu_pll_rate)
  163. -{
  164. - u32 reg;
  165. -
  166. - reg = rt_sysc_r32(SYSC_REG_CPLL_CONFIG1);
  167. - if (reg & CPLL_CFG1_CPU_AUX1)
  168. - return xtal_rate;
  169. -
  170. - if (reg & CPLL_CFG1_CPU_AUX0)
  171. - return MHZ(480);
  172. -
  173. - return cpu_pll_rate;
  174. -}
  175. -
  176. -static __init unsigned long
  177. -mt7620_get_cpu_rate(unsigned long pll_rate)
  178. -{
  179. - u32 reg;
  180. - u32 mul;
  181. - u32 div;
  182. -
  183. - reg = rt_sysc_r32(SYSC_REG_CPU_SYS_CLKCFG);
  184. -
  185. - mul = reg & CPU_SYS_CLKCFG_CPU_FFRAC_MASK;
  186. - div = (reg >> CPU_SYS_CLKCFG_CPU_FDIV_SHIFT) &
  187. - CPU_SYS_CLKCFG_CPU_FDIV_MASK;
  188. -
  189. - return mt7620_calc_rate(pll_rate, mul, div);
  190. -}
  191. -
  192. -static const u32 mt7620_ocp_dividers[16] __initconst = {
  193. - [CPU_SYS_CLKCFG_OCP_RATIO_2] = 2,
  194. - [CPU_SYS_CLKCFG_OCP_RATIO_3] = 3,
  195. - [CPU_SYS_CLKCFG_OCP_RATIO_4] = 4,
  196. - [CPU_SYS_CLKCFG_OCP_RATIO_5] = 5,
  197. - [CPU_SYS_CLKCFG_OCP_RATIO_10] = 10,
  198. -};
  199. -
  200. -static __init unsigned long
  201. -mt7620_get_dram_rate(unsigned long pll_rate)
  202. -{
  203. - if (dram_type == SYSCFG0_DRAM_TYPE_SDRAM)
  204. - return pll_rate / 4;
  205. -
  206. - return pll_rate / 3;
  207. -}
  208. -
  209. -static __init unsigned long
  210. -mt7620_get_sys_rate(unsigned long cpu_rate)
  211. -{
  212. - u32 reg;
  213. - u32 ocp_ratio;
  214. - u32 div;
  215. -
  216. - reg = rt_sysc_r32(SYSC_REG_CPU_SYS_CLKCFG);
  217. -
  218. - ocp_ratio = (reg >> CPU_SYS_CLKCFG_OCP_RATIO_SHIFT) &
  219. - CPU_SYS_CLKCFG_OCP_RATIO_MASK;
  220. -
  221. - if (WARN_ON(ocp_ratio >= ARRAY_SIZE(mt7620_ocp_dividers)))
  222. - return cpu_rate;
  223. -
  224. - div = mt7620_ocp_dividers[ocp_ratio];
  225. - if (WARN(!div, "invalid divider for OCP ratio %u", ocp_ratio))
  226. - return cpu_rate;
  227. -
  228. - return cpu_rate / div;
  229. -}
  230. -
  231. -void __init ralink_clk_init(void)
  232. -{
  233. - unsigned long xtal_rate;
  234. - unsigned long cpu_pll_rate;
  235. - unsigned long pll_rate;
  236. - unsigned long cpu_rate;
  237. - unsigned long sys_rate;
  238. - unsigned long dram_rate;
  239. - unsigned long periph_rate;
  240. - unsigned long pcmi2s_rate;
  241. -
  242. - xtal_rate = mt7620_get_xtal_rate();
  243. -
  244. -#define RFMT(label) label ":%lu.%03luMHz "
  245. -#define RINT(x) ((x) / 1000000)
  246. -#define RFRAC(x) (((x) / 1000) % 1000)
  247. -
  248. - if (is_mt76x8()) {
  249. - if (xtal_rate == MHZ(40))
  250. - cpu_rate = MHZ(580);
  251. - else
  252. - cpu_rate = MHZ(575);
  253. - dram_rate = sys_rate = cpu_rate / 3;
  254. - periph_rate = MHZ(40);
  255. - pcmi2s_rate = MHZ(480);
  256. -
  257. - ralink_clk_add("10000d00.uartlite", periph_rate);
  258. - ralink_clk_add("10000e00.uartlite", periph_rate);
  259. - } else {
  260. - cpu_pll_rate = mt7620_get_cpu_pll_rate(xtal_rate);
  261. - pll_rate = mt7620_get_pll_rate(xtal_rate, cpu_pll_rate);
  262. -
  263. - cpu_rate = mt7620_get_cpu_rate(pll_rate);
  264. - dram_rate = mt7620_get_dram_rate(pll_rate);
  265. - sys_rate = mt7620_get_sys_rate(cpu_rate);
  266. - periph_rate = mt7620_get_periph_rate(xtal_rate);
  267. - pcmi2s_rate = periph_rate;
  268. -
  269. - pr_debug(RFMT("XTAL") RFMT("CPU_PLL") RFMT("PLL"),
  270. - RINT(xtal_rate), RFRAC(xtal_rate),
  271. - RINT(cpu_pll_rate), RFRAC(cpu_pll_rate),
  272. - RINT(pll_rate), RFRAC(pll_rate));
  273. -
  274. - ralink_clk_add("10000500.uart", periph_rate);
  275. - }
  276. -
  277. - pr_debug(RFMT("CPU") RFMT("DRAM") RFMT("SYS") RFMT("PERIPH"),
  278. - RINT(cpu_rate), RFRAC(cpu_rate),
  279. - RINT(dram_rate), RFRAC(dram_rate),
  280. - RINT(sys_rate), RFRAC(sys_rate),
  281. - RINT(periph_rate), RFRAC(periph_rate));
  282. -#undef RFRAC
  283. -#undef RINT
  284. -#undef RFMT
  285. -
  286. - ralink_clk_add("cpu", cpu_rate);
  287. - ralink_clk_add("10000100.timer", periph_rate);
  288. - ralink_clk_add("10000120.watchdog", periph_rate);
  289. - ralink_clk_add("10000900.i2c", periph_rate);
  290. - ralink_clk_add("10000a00.i2s", pcmi2s_rate);
  291. - ralink_clk_add("10000b00.spi", sys_rate);
  292. - ralink_clk_add("10000b40.spi", sys_rate);
  293. - ralink_clk_add("10000c00.uartlite", periph_rate);
  294. - ralink_clk_add("10000d00.uart1", periph_rate);
  295. - ralink_clk_add("10000e00.uart2", periph_rate);
  296. - ralink_clk_add("10180000.wmac", xtal_rate);
  297. -
  298. - if (IS_ENABLED(CONFIG_USB) && !is_mt76x8()) {
  299. - /*
  300. - * When the CPU goes into sleep mode, the BUS clock will be
  301. - * too low for USB to function properly. Adjust the busses
  302. - * fractional divider to fix this
  303. - */
  304. - u32 val = rt_sysc_r32(SYSC_REG_CPU_SYS_CLKCFG);
  305. -
  306. - val &= ~(CLKCFG_FDIV_MASK | CLKCFG_FFRAC_MASK);
  307. - val |= CLKCFG_FDIV_USB_VAL | CLKCFG_FFRAC_USB_VAL;
  308. -
  309. - rt_sysc_w32(val, SYSC_REG_CPU_SYS_CLKCFG);
  310. - }
  311. -}
  312. -
  313. void __init ralink_of_remap(void)
  314. {
  315. rt_sysc_membase = plat_of_remap_node("ralink,mt7620a-sysc");