hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/clk/qcom/gcc-msm8998.c
....@@ -117,6 +117,17 @@
117117 "core_bi_pll_test_se",
118118 };
119119
120
+static struct clk_fixed_factor xo = {
121
+ .mult = 1,
122
+ .div = 1,
123
+ .hw.init = &(struct clk_init_data){
124
+ .name = "xo",
125
+ .parent_names = (const char *[]){ "xo_board" },
126
+ .num_parents = 1,
127
+ .ops = &clk_fixed_factor_ops,
128
+ },
129
+};
130
+
120131 static struct pll_vco fabia_vco[] = {
121132 { 250000000, 2000000000, 0 },
122133 { 125000000, 1000000000, 1 },
....@@ -1031,7 +1042,7 @@
10311042 .name = "sdcc2_apps_clk_src",
10321043 .parent_names = gcc_parent_names_4,
10331044 .num_parents = 4,
1034
- .ops = &clk_rcg2_ops,
1045
+ .ops = &clk_rcg2_floor_ops,
10351046 },
10361047 };
10371048
....@@ -1055,7 +1066,7 @@
10551066 .name = "sdcc4_apps_clk_src",
10561067 .parent_names = gcc_parent_names_1,
10571068 .num_parents = 3,
1058
- .ops = &clk_rcg2_ops,
1069
+ .ops = &clk_rcg2_floor_ops,
10591070 },
10601071 };
10611072
....@@ -1093,6 +1104,27 @@
10931104 .freq_tbl = ftbl_ufs_axi_clk_src,
10941105 .clkr.hw.init = &(struct clk_init_data){
10951106 .name = "ufs_axi_clk_src",
1107
+ .parent_names = gcc_parent_names_0,
1108
+ .num_parents = 4,
1109
+ .ops = &clk_rcg2_ops,
1110
+ },
1111
+};
1112
+
1113
+static const struct freq_tbl ftbl_ufs_unipro_core_clk_src[] = {
1114
+ F(37500000, P_GPLL0_OUT_MAIN, 16, 0, 0),
1115
+ F(75000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
1116
+ F(150000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
1117
+ { }
1118
+};
1119
+
1120
+static struct clk_rcg2 ufs_unipro_core_clk_src = {
1121
+ .cmd_rcgr = 0x76028,
1122
+ .mnd_width = 8,
1123
+ .hid_width = 5,
1124
+ .parent_map = gcc_parent_map_0,
1125
+ .freq_tbl = ftbl_ufs_unipro_core_clk_src,
1126
+ .clkr.hw.init = &(struct clk_init_data){
1127
+ .name = "ufs_unipro_core_clk_src",
10961128 .parent_names = gcc_parent_names_0,
10971129 .num_parents = 4,
10981130 .ops = &clk_rcg2_ops,
....@@ -1179,6 +1211,7 @@
11791211 "ufs_axi_clk_src",
11801212 },
11811213 .num_parents = 1,
1214
+ .flags = CLK_SET_RATE_PARENT,
11821215 .ops = &clk_branch2_ops,
11831216 },
11841217 },
....@@ -1196,6 +1229,7 @@
11961229 "usb30_master_clk_src",
11971230 },
11981231 .num_parents = 1,
1232
+ .flags = CLK_SET_RATE_PARENT,
11991233 .ops = &clk_branch2_ops,
12001234 },
12011235 },
....@@ -1253,6 +1287,72 @@
12531287 },
12541288 };
12551289
1290
+static struct clk_branch gcc_mss_cfg_ahb_clk = {
1291
+ .halt_reg = 0x8a000,
1292
+ .halt_check = BRANCH_HALT,
1293
+ .clkr = {
1294
+ .enable_reg = 0x8a000,
1295
+ .enable_mask = BIT(0),
1296
+ .hw.init = &(struct clk_init_data){
1297
+ .name = "gcc_mss_cfg_ahb_clk",
1298
+ .ops = &clk_branch2_ops,
1299
+ },
1300
+ },
1301
+};
1302
+
1303
+static struct clk_branch gcc_mss_snoc_axi_clk = {
1304
+ .halt_reg = 0x8a03c,
1305
+ .halt_check = BRANCH_HALT,
1306
+ .clkr = {
1307
+ .enable_reg = 0x8a03c,
1308
+ .enable_mask = BIT(0),
1309
+ .hw.init = &(struct clk_init_data){
1310
+ .name = "gcc_mss_snoc_axi_clk",
1311
+ .ops = &clk_branch2_ops,
1312
+ },
1313
+ },
1314
+};
1315
+
1316
+static struct clk_branch gcc_mss_mnoc_bimc_axi_clk = {
1317
+ .halt_reg = 0x8a004,
1318
+ .halt_check = BRANCH_HALT,
1319
+ .clkr = {
1320
+ .enable_reg = 0x8a004,
1321
+ .enable_mask = BIT(0),
1322
+ .hw.init = &(struct clk_init_data){
1323
+ .name = "gcc_mss_mnoc_bimc_axi_clk",
1324
+ .ops = &clk_branch2_ops,
1325
+ },
1326
+ },
1327
+};
1328
+
1329
+static struct clk_branch gcc_boot_rom_ahb_clk = {
1330
+ .halt_reg = 0x38004,
1331
+ .halt_check = BRANCH_HALT_VOTED,
1332
+ .hwcg_reg = 0x38004,
1333
+ .hwcg_bit = 1,
1334
+ .clkr = {
1335
+ .enable_reg = 0x52004,
1336
+ .enable_mask = BIT(10),
1337
+ .hw.init = &(struct clk_init_data){
1338
+ .name = "gcc_boot_rom_ahb_clk",
1339
+ .ops = &clk_branch2_ops,
1340
+ },
1341
+ },
1342
+};
1343
+
1344
+static struct clk_branch gcc_mss_gpll0_div_clk_src = {
1345
+ .halt_check = BRANCH_HALT_DELAY,
1346
+ .clkr = {
1347
+ .enable_reg = 0x5200c,
1348
+ .enable_mask = BIT(2),
1349
+ .hw.init = &(struct clk_init_data){
1350
+ .name = "gcc_mss_gpll0_div_clk_src",
1351
+ .ops = &clk_branch2_ops,
1352
+ },
1353
+ },
1354
+};
1355
+
12561356 static struct clk_branch gcc_blsp1_ahb_clk = {
12571357 .halt_reg = 0x17004,
12581358 .halt_check = BRANCH_HALT_VOTED,
....@@ -1278,6 +1378,7 @@
12781378 "blsp1_qup1_i2c_apps_clk_src",
12791379 },
12801380 .num_parents = 1,
1381
+ .flags = CLK_SET_RATE_PARENT,
12811382 .ops = &clk_branch2_ops,
12821383 },
12831384 },
....@@ -1295,6 +1396,7 @@
12951396 "blsp1_qup1_spi_apps_clk_src",
12961397 },
12971398 .num_parents = 1,
1399
+ .flags = CLK_SET_RATE_PARENT,
12981400 .ops = &clk_branch2_ops,
12991401 },
13001402 },
....@@ -1312,6 +1414,7 @@
13121414 "blsp1_qup2_i2c_apps_clk_src",
13131415 },
13141416 .num_parents = 1,
1417
+ .flags = CLK_SET_RATE_PARENT,
13151418 .ops = &clk_branch2_ops,
13161419 },
13171420 },
....@@ -1329,6 +1432,7 @@
13291432 "blsp1_qup2_spi_apps_clk_src",
13301433 },
13311434 .num_parents = 1,
1435
+ .flags = CLK_SET_RATE_PARENT,
13321436 .ops = &clk_branch2_ops,
13331437 },
13341438 },
....@@ -1346,6 +1450,7 @@
13461450 "blsp1_qup3_i2c_apps_clk_src",
13471451 },
13481452 .num_parents = 1,
1453
+ .flags = CLK_SET_RATE_PARENT,
13491454 .ops = &clk_branch2_ops,
13501455 },
13511456 },
....@@ -1363,6 +1468,7 @@
13631468 "blsp1_qup3_spi_apps_clk_src",
13641469 },
13651470 .num_parents = 1,
1471
+ .flags = CLK_SET_RATE_PARENT,
13661472 .ops = &clk_branch2_ops,
13671473 },
13681474 },
....@@ -1380,6 +1486,7 @@
13801486 "blsp1_qup4_i2c_apps_clk_src",
13811487 },
13821488 .num_parents = 1,
1489
+ .flags = CLK_SET_RATE_PARENT,
13831490 .ops = &clk_branch2_ops,
13841491 },
13851492 },
....@@ -1397,6 +1504,7 @@
13971504 "blsp1_qup4_spi_apps_clk_src",
13981505 },
13991506 .num_parents = 1,
1507
+ .flags = CLK_SET_RATE_PARENT,
14001508 .ops = &clk_branch2_ops,
14011509 },
14021510 },
....@@ -1414,6 +1522,7 @@
14141522 "blsp1_qup5_i2c_apps_clk_src",
14151523 },
14161524 .num_parents = 1,
1525
+ .flags = CLK_SET_RATE_PARENT,
14171526 .ops = &clk_branch2_ops,
14181527 },
14191528 },
....@@ -1431,6 +1540,7 @@
14311540 "blsp1_qup5_spi_apps_clk_src",
14321541 },
14331542 .num_parents = 1,
1543
+ .flags = CLK_SET_RATE_PARENT,
14341544 .ops = &clk_branch2_ops,
14351545 },
14361546 },
....@@ -1448,6 +1558,7 @@
14481558 "blsp1_qup6_i2c_apps_clk_src",
14491559 },
14501560 .num_parents = 1,
1561
+ .flags = CLK_SET_RATE_PARENT,
14511562 .ops = &clk_branch2_ops,
14521563 },
14531564 },
....@@ -1465,6 +1576,7 @@
14651576 "blsp1_qup6_spi_apps_clk_src",
14661577 },
14671578 .num_parents = 1,
1579
+ .flags = CLK_SET_RATE_PARENT,
14681580 .ops = &clk_branch2_ops,
14691581 },
14701582 },
....@@ -1495,6 +1607,7 @@
14951607 "blsp1_uart1_apps_clk_src",
14961608 },
14971609 .num_parents = 1,
1610
+ .flags = CLK_SET_RATE_PARENT,
14981611 .ops = &clk_branch2_ops,
14991612 },
15001613 },
....@@ -1512,6 +1625,7 @@
15121625 "blsp1_uart2_apps_clk_src",
15131626 },
15141627 .num_parents = 1,
1628
+ .flags = CLK_SET_RATE_PARENT,
15151629 .ops = &clk_branch2_ops,
15161630 },
15171631 },
....@@ -1529,6 +1643,7 @@
15291643 "blsp1_uart3_apps_clk_src",
15301644 },
15311645 .num_parents = 1,
1646
+ .flags = CLK_SET_RATE_PARENT,
15321647 .ops = &clk_branch2_ops,
15331648 },
15341649 },
....@@ -1559,6 +1674,7 @@
15591674 "blsp2_qup1_i2c_apps_clk_src",
15601675 },
15611676 .num_parents = 1,
1677
+ .flags = CLK_SET_RATE_PARENT,
15621678 .ops = &clk_branch2_ops,
15631679 },
15641680 },
....@@ -1576,6 +1692,7 @@
15761692 "blsp2_qup1_spi_apps_clk_src",
15771693 },
15781694 .num_parents = 1,
1695
+ .flags = CLK_SET_RATE_PARENT,
15791696 .ops = &clk_branch2_ops,
15801697 },
15811698 },
....@@ -1593,6 +1710,7 @@
15931710 "blsp2_qup2_i2c_apps_clk_src",
15941711 },
15951712 .num_parents = 1,
1713
+ .flags = CLK_SET_RATE_PARENT,
15961714 .ops = &clk_branch2_ops,
15971715 },
15981716 },
....@@ -1610,6 +1728,7 @@
16101728 "blsp2_qup2_spi_apps_clk_src",
16111729 },
16121730 .num_parents = 1,
1731
+ .flags = CLK_SET_RATE_PARENT,
16131732 .ops = &clk_branch2_ops,
16141733 },
16151734 },
....@@ -1627,6 +1746,7 @@
16271746 "blsp2_qup3_i2c_apps_clk_src",
16281747 },
16291748 .num_parents = 1,
1749
+ .flags = CLK_SET_RATE_PARENT,
16301750 .ops = &clk_branch2_ops,
16311751 },
16321752 },
....@@ -1644,6 +1764,7 @@
16441764 "blsp2_qup3_spi_apps_clk_src",
16451765 },
16461766 .num_parents = 1,
1767
+ .flags = CLK_SET_RATE_PARENT,
16471768 .ops = &clk_branch2_ops,
16481769 },
16491770 },
....@@ -1661,6 +1782,7 @@
16611782 "blsp2_qup4_i2c_apps_clk_src",
16621783 },
16631784 .num_parents = 1,
1785
+ .flags = CLK_SET_RATE_PARENT,
16641786 .ops = &clk_branch2_ops,
16651787 },
16661788 },
....@@ -1678,6 +1800,7 @@
16781800 "blsp2_qup4_spi_apps_clk_src",
16791801 },
16801802 .num_parents = 1,
1803
+ .flags = CLK_SET_RATE_PARENT,
16811804 .ops = &clk_branch2_ops,
16821805 },
16831806 },
....@@ -1695,6 +1818,7 @@
16951818 "blsp2_qup5_i2c_apps_clk_src",
16961819 },
16971820 .num_parents = 1,
1821
+ .flags = CLK_SET_RATE_PARENT,
16981822 .ops = &clk_branch2_ops,
16991823 },
17001824 },
....@@ -1712,6 +1836,7 @@
17121836 "blsp2_qup5_spi_apps_clk_src",
17131837 },
17141838 .num_parents = 1,
1839
+ .flags = CLK_SET_RATE_PARENT,
17151840 .ops = &clk_branch2_ops,
17161841 },
17171842 },
....@@ -1729,6 +1854,7 @@
17291854 "blsp2_qup6_i2c_apps_clk_src",
17301855 },
17311856 .num_parents = 1,
1857
+ .flags = CLK_SET_RATE_PARENT,
17321858 .ops = &clk_branch2_ops,
17331859 },
17341860 },
....@@ -1746,6 +1872,7 @@
17461872 "blsp2_qup6_spi_apps_clk_src",
17471873 },
17481874 .num_parents = 1,
1875
+ .flags = CLK_SET_RATE_PARENT,
17491876 .ops = &clk_branch2_ops,
17501877 },
17511878 },
....@@ -1776,6 +1903,7 @@
17761903 "blsp2_uart1_apps_clk_src",
17771904 },
17781905 .num_parents = 1,
1906
+ .flags = CLK_SET_RATE_PARENT,
17791907 .ops = &clk_branch2_ops,
17801908 },
17811909 },
....@@ -1793,6 +1921,7 @@
17931921 "blsp2_uart2_apps_clk_src",
17941922 },
17951923 .num_parents = 1,
1924
+ .flags = CLK_SET_RATE_PARENT,
17961925 .ops = &clk_branch2_ops,
17971926 },
17981927 },
....@@ -1810,6 +1939,7 @@
18101939 "blsp2_uart3_apps_clk_src",
18111940 },
18121941 .num_parents = 1,
1942
+ .flags = CLK_SET_RATE_PARENT,
18131943 .ops = &clk_branch2_ops,
18141944 },
18151945 },
....@@ -1827,6 +1957,7 @@
18271957 "usb30_master_clk_src",
18281958 },
18291959 .num_parents = 1,
1960
+ .flags = CLK_SET_RATE_PARENT,
18301961 .ops = &clk_branch2_ops,
18311962 },
18321963 },
....@@ -1844,6 +1975,7 @@
18441975 "gp1_clk_src",
18451976 },
18461977 .num_parents = 1,
1978
+ .flags = CLK_SET_RATE_PARENT,
18471979 .ops = &clk_branch2_ops,
18481980 },
18491981 },
....@@ -1861,6 +1993,7 @@
18611993 "gp2_clk_src",
18621994 },
18631995 .num_parents = 1,
1996
+ .flags = CLK_SET_RATE_PARENT,
18641997 .ops = &clk_branch2_ops,
18651998 },
18661999 },
....@@ -1878,6 +2011,20 @@
18782011 "gp3_clk_src",
18792012 },
18802013 .num_parents = 1,
2014
+ .flags = CLK_SET_RATE_PARENT,
2015
+ .ops = &clk_branch2_ops,
2016
+ },
2017
+ },
2018
+};
2019
+
2020
+static struct clk_branch gcc_bimc_gfx_clk = {
2021
+ .halt_reg = 0x46040,
2022
+ .halt_check = BRANCH_HALT,
2023
+ .clkr = {
2024
+ .enable_reg = 0x46040,
2025
+ .enable_mask = BIT(0),
2026
+ .hw.init = &(struct clk_init_data){
2027
+ .name = "gcc_bimc_gfx_clk",
18812028 .ops = &clk_branch2_ops,
18822029 },
18832030 },
....@@ -1947,6 +2094,7 @@
19472094 "hmss_ahb_clk_src",
19482095 },
19492096 .num_parents = 1,
2097
+ .flags = CLK_SET_RATE_PARENT,
19502098 .ops = &clk_branch2_ops,
19512099 },
19522100 },
....@@ -1965,19 +2113,6 @@
19652113 },
19662114 };
19672115
1968
-static struct clk_branch gcc_hmss_dvm_bus_clk = {
1969
- .halt_reg = 0x4808c,
1970
- .halt_check = BRANCH_HALT,
1971
- .clkr = {
1972
- .enable_reg = 0x4808c,
1973
- .enable_mask = BIT(0),
1974
- .hw.init = &(struct clk_init_data){
1975
- .name = "gcc_hmss_dvm_bus_clk",
1976
- .ops = &clk_branch2_ops,
1977
- },
1978
- },
1979
-};
1980
-
19812116 static struct clk_branch gcc_hmss_rbcpr_clk = {
19822117 .halt_reg = 0x48008,
19832118 .halt_check = BRANCH_HALT,
....@@ -1990,6 +2125,7 @@
19902125 "hmss_rbcpr_clk_src",
19912126 },
19922127 .num_parents = 1,
2128
+ .flags = CLK_SET_RATE_PARENT,
19932129 .ops = &clk_branch2_ops,
19942130 },
19952131 },
....@@ -2008,32 +2144,6 @@
20082144 },
20092145 };
20102146
2011
-static struct clk_branch gcc_lpass_at_clk = {
2012
- .halt_reg = 0x47020,
2013
- .halt_check = BRANCH_HALT,
2014
- .clkr = {
2015
- .enable_reg = 0x47020,
2016
- .enable_mask = BIT(0),
2017
- .hw.init = &(struct clk_init_data){
2018
- .name = "gcc_lpass_at_clk",
2019
- .ops = &clk_branch2_ops,
2020
- },
2021
- },
2022
-};
2023
-
2024
-static struct clk_branch gcc_lpass_trig_clk = {
2025
- .halt_reg = 0x4701c,
2026
- .halt_check = BRANCH_HALT,
2027
- .clkr = {
2028
- .enable_reg = 0x4701c,
2029
- .enable_mask = BIT(0),
2030
- .hw.init = &(struct clk_init_data){
2031
- .name = "gcc_lpass_trig_clk",
2032
- .ops = &clk_branch2_ops,
2033
- },
2034
- },
2035
-};
2036
-
20372147 static struct clk_branch gcc_mmss_noc_cfg_ahb_clk = {
20382148 .halt_reg = 0x9004,
20392149 .halt_check = BRANCH_HALT,
....@@ -2043,6 +2153,12 @@
20432153 .hw.init = &(struct clk_init_data){
20442154 .name = "gcc_mmss_noc_cfg_ahb_clk",
20452155 .ops = &clk_branch2_ops,
2156
+ /*
2157
+ * Any access to mmss depends on this clock.
2158
+ * Gating this clock has been shown to crash the system
2159
+ * when mmssnoc_axi_rpm_clk is inited in rpmcc.
2160
+ */
2161
+ .flags = CLK_IS_CRITICAL,
20462162 },
20472163 },
20482164 };
....@@ -2111,6 +2227,7 @@
21112227 "pcie_aux_clk_src",
21122228 },
21132229 .num_parents = 1,
2230
+ .flags = CLK_SET_RATE_PARENT,
21142231 .ops = &clk_branch2_ops,
21152232 },
21162233 },
....@@ -2180,6 +2297,7 @@
21802297 "pcie_aux_clk_src",
21812298 },
21822299 .num_parents = 1,
2300
+ .flags = CLK_SET_RATE_PARENT,
21832301 .ops = &clk_branch2_ops,
21842302 },
21852303 },
....@@ -2197,6 +2315,7 @@
21972315 "pdm2_clk_src",
21982316 },
21992317 .num_parents = 1,
2318
+ .flags = CLK_SET_RATE_PARENT,
22002319 .ops = &clk_branch2_ops,
22012320 },
22022321 },
....@@ -2266,6 +2385,7 @@
22662385 "sdcc2_apps_clk_src",
22672386 },
22682387 .num_parents = 1,
2388
+ .flags = CLK_SET_RATE_PARENT,
22692389 .ops = &clk_branch2_ops,
22702390 },
22712391 },
....@@ -2296,6 +2416,7 @@
22962416 "sdcc4_apps_clk_src",
22972417 },
22982418 .num_parents = 1,
2419
+ .flags = CLK_SET_RATE_PARENT,
22992420 .ops = &clk_branch2_ops,
23002421 },
23012422 },
....@@ -2339,6 +2460,7 @@
23392460 "tsif_ref_clk_src",
23402461 },
23412462 .num_parents = 1,
2463
+ .flags = CLK_SET_RATE_PARENT,
23422464 .ops = &clk_branch2_ops,
23432465 },
23442466 },
....@@ -2369,6 +2491,7 @@
23692491 "ufs_axi_clk_src",
23702492 },
23712493 .num_parents = 1,
2494
+ .flags = CLK_SET_RATE_PARENT,
23722495 .ops = &clk_branch2_ops,
23732496 },
23742497 },
....@@ -2447,6 +2570,11 @@
24472570 .enable_mask = BIT(0),
24482571 .hw.init = &(struct clk_init_data){
24492572 .name = "gcc_ufs_unipro_core_clk",
2573
+ .parent_names = (const char *[]){
2574
+ "ufs_unipro_core_clk_src",
2575
+ },
2576
+ .num_parents = 1,
2577
+ .flags = CLK_SET_RATE_PARENT,
24502578 .ops = &clk_branch2_ops,
24512579 },
24522580 },
....@@ -2464,6 +2592,7 @@
24642592 "usb30_master_clk_src",
24652593 },
24662594 .num_parents = 1,
2595
+ .flags = CLK_SET_RATE_PARENT,
24672596 .ops = &clk_branch2_ops,
24682597 },
24692598 },
....@@ -2481,6 +2610,7 @@
24812610 "usb30_mock_utmi_clk_src",
24822611 },
24832612 .num_parents = 1,
2613
+ .flags = CLK_SET_RATE_PARENT,
24842614 .ops = &clk_branch2_ops,
24852615 },
24862616 },
....@@ -2511,6 +2641,7 @@
25112641 "usb3_phy_aux_clk_src",
25122642 },
25132643 .num_parents = 1,
2644
+ .flags = CLK_SET_RATE_PARENT,
25142645 .ops = &clk_branch2_ops,
25152646 },
25162647 },
....@@ -2518,7 +2649,7 @@
25182649
25192650 static struct clk_branch gcc_usb3_phy_pipe_clk = {
25202651 .halt_reg = 0x50004,
2521
- .halt_check = BRANCH_HALT,
2652
+ .halt_check = BRANCH_HALT_SKIP,
25222653 .clkr = {
25232654 .enable_reg = 0x50004,
25242655 .enable_mask = BIT(0),
....@@ -2537,6 +2668,76 @@
25372668 .enable_mask = BIT(0),
25382669 .hw.init = &(struct clk_init_data){
25392670 .name = "gcc_usb_phy_cfg_ahb2phy_clk",
2671
+ .ops = &clk_branch2_ops,
2672
+ },
2673
+ },
2674
+};
2675
+
2676
+static struct clk_branch gcc_hdmi_clkref_clk = {
2677
+ .halt_reg = 0x88000,
2678
+ .clkr = {
2679
+ .enable_reg = 0x88000,
2680
+ .enable_mask = BIT(0),
2681
+ .hw.init = &(struct clk_init_data){
2682
+ .name = "gcc_hdmi_clkref_clk",
2683
+ .parent_names = (const char *[]){ "xo" },
2684
+ .num_parents = 1,
2685
+ .ops = &clk_branch2_ops,
2686
+ },
2687
+ },
2688
+};
2689
+
2690
+static struct clk_branch gcc_ufs_clkref_clk = {
2691
+ .halt_reg = 0x88004,
2692
+ .clkr = {
2693
+ .enable_reg = 0x88004,
2694
+ .enable_mask = BIT(0),
2695
+ .hw.init = &(struct clk_init_data){
2696
+ .name = "gcc_ufs_clkref_clk",
2697
+ .parent_names = (const char *[]){ "xo" },
2698
+ .num_parents = 1,
2699
+ .ops = &clk_branch2_ops,
2700
+ },
2701
+ },
2702
+};
2703
+
2704
+static struct clk_branch gcc_usb3_clkref_clk = {
2705
+ .halt_reg = 0x88008,
2706
+ .clkr = {
2707
+ .enable_reg = 0x88008,
2708
+ .enable_mask = BIT(0),
2709
+ .hw.init = &(struct clk_init_data){
2710
+ .name = "gcc_usb3_clkref_clk",
2711
+ .parent_names = (const char *[]){ "xo" },
2712
+ .num_parents = 1,
2713
+ .ops = &clk_branch2_ops,
2714
+ },
2715
+ },
2716
+};
2717
+
2718
+static struct clk_branch gcc_pcie_clkref_clk = {
2719
+ .halt_reg = 0x8800c,
2720
+ .clkr = {
2721
+ .enable_reg = 0x8800c,
2722
+ .enable_mask = BIT(0),
2723
+ .hw.init = &(struct clk_init_data){
2724
+ .name = "gcc_pcie_clkref_clk",
2725
+ .parent_names = (const char *[]){ "xo" },
2726
+ .num_parents = 1,
2727
+ .ops = &clk_branch2_ops,
2728
+ },
2729
+ },
2730
+};
2731
+
2732
+static struct clk_branch gcc_rx1_usb2_clkref_clk = {
2733
+ .halt_reg = 0x88014,
2734
+ .clkr = {
2735
+ .enable_reg = 0x88014,
2736
+ .enable_mask = BIT(0),
2737
+ .hw.init = &(struct clk_init_data){
2738
+ .name = "gcc_rx1_usb2_clkref_clk",
2739
+ .parent_names = (const char *[]){ "xo" },
2740
+ .num_parents = 1,
25402741 .ops = &clk_branch2_ops,
25412742 },
25422743 },
....@@ -2648,17 +2849,15 @@
26482849 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
26492850 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
26502851 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
2852
+ [GCC_BIMC_GFX_CLK] = &gcc_bimc_gfx_clk.clkr,
26512853 [GCC_GPU_BIMC_GFX_CLK] = &gcc_gpu_bimc_gfx_clk.clkr,
26522854 [GCC_GPU_BIMC_GFX_SRC_CLK] = &gcc_gpu_bimc_gfx_src_clk.clkr,
26532855 [GCC_GPU_CFG_AHB_CLK] = &gcc_gpu_cfg_ahb_clk.clkr,
26542856 [GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
26552857 [GCC_HMSS_AHB_CLK] = &gcc_hmss_ahb_clk.clkr,
26562858 [GCC_HMSS_AT_CLK] = &gcc_hmss_at_clk.clkr,
2657
- [GCC_HMSS_DVM_BUS_CLK] = &gcc_hmss_dvm_bus_clk.clkr,
26582859 [GCC_HMSS_RBCPR_CLK] = &gcc_hmss_rbcpr_clk.clkr,
26592860 [GCC_HMSS_TRIG_CLK] = &gcc_hmss_trig_clk.clkr,
2660
- [GCC_LPASS_AT_CLK] = &gcc_lpass_at_clk.clkr,
2661
- [GCC_LPASS_TRIG_CLK] = &gcc_lpass_trig_clk.clkr,
26622861 [GCC_MMSS_NOC_CFG_AHB_CLK] = &gcc_mmss_noc_cfg_ahb_clk.clkr,
26632862 [GCC_MMSS_QM_AHB_CLK] = &gcc_mmss_qm_ahb_clk.clkr,
26642863 [GCC_MMSS_QM_CORE_CLK] = &gcc_mmss_qm_core_clk.clkr,
....@@ -2731,9 +2930,20 @@
27312930 [SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr,
27322931 [TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr,
27332932 [UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr,
2933
+ [UFS_UNIPRO_CORE_CLK_SRC] = &ufs_unipro_core_clk_src.clkr,
27342934 [USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr,
27352935 [USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr,
27362936 [USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr,
2937
+ [GCC_HDMI_CLKREF_CLK] = &gcc_hdmi_clkref_clk.clkr,
2938
+ [GCC_UFS_CLKREF_CLK] = &gcc_ufs_clkref_clk.clkr,
2939
+ [GCC_USB3_CLKREF_CLK] = &gcc_usb3_clkref_clk.clkr,
2940
+ [GCC_PCIE_CLKREF_CLK] = &gcc_pcie_clkref_clk.clkr,
2941
+ [GCC_RX1_USB2_CLKREF_CLK] = &gcc_rx1_usb2_clkref_clk.clkr,
2942
+ [GCC_MSS_CFG_AHB_CLK] = &gcc_mss_cfg_ahb_clk.clkr,
2943
+ [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
2944
+ [GCC_MSS_GPLL0_DIV_CLK_SRC] = &gcc_mss_gpll0_div_clk_src.clkr,
2945
+ [GCC_MSS_SNOC_AXI_CLK] = &gcc_mss_snoc_axi_clk.clkr,
2946
+ [GCC_MSS_MNOC_BIMC_AXI_CLK] = &gcc_mss_mnoc_bimc_axi_clk.clkr,
27372947 };
27382948
27392949 static struct gdsc *gcc_msm8998_gdscs[] = {
....@@ -2762,6 +2972,96 @@
27622972 [GCC_TSIF_BCR] = { 0x36000 },
27632973 [GCC_UFS_BCR] = { 0x75000 },
27642974 [GCC_USB_30_BCR] = { 0xf000 },
2975
+ [GCC_SYSTEM_NOC_BCR] = { 0x4000 },
2976
+ [GCC_CONFIG_NOC_BCR] = { 0x5000 },
2977
+ [GCC_AHB2PHY_EAST_BCR] = { 0x7000 },
2978
+ [GCC_IMEM_BCR] = { 0x8000 },
2979
+ [GCC_PIMEM_BCR] = { 0xa000 },
2980
+ [GCC_MMSS_BCR] = { 0xb000 },
2981
+ [GCC_QDSS_BCR] = { 0xc000 },
2982
+ [GCC_WCSS_BCR] = { 0x11000 },
2983
+ [GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 },
2984
+ [GCC_QUSB2PHY_SEC_BCR] = { 0x12004 },
2985
+ [GCC_BLSP1_BCR] = { 0x17000 },
2986
+ [GCC_BLSP1_UART1_BCR] = { 0x1a000 },
2987
+ [GCC_BLSP1_UART2_BCR] = { 0x1c000 },
2988
+ [GCC_BLSP1_UART3_BCR] = { 0x1e000 },
2989
+ [GCC_CM_PHY_REFGEN1_BCR] = { 0x22000 },
2990
+ [GCC_CM_PHY_REFGEN2_BCR] = { 0x24000 },
2991
+ [GCC_BLSP2_BCR] = { 0x25000 },
2992
+ [GCC_BLSP2_UART1_BCR] = { 0x27000 },
2993
+ [GCC_BLSP2_UART2_BCR] = { 0x29000 },
2994
+ [GCC_BLSP2_UART3_BCR] = { 0x2b000 },
2995
+ [GCC_SRAM_SENSOR_BCR] = { 0x2d000 },
2996
+ [GCC_PRNG_BCR] = { 0x34000 },
2997
+ [GCC_TSIF_0_RESET] = { 0x36024 },
2998
+ [GCC_TSIF_1_RESET] = { 0x36028 },
2999
+ [GCC_TCSR_BCR] = { 0x37000 },
3000
+ [GCC_BOOT_ROM_BCR] = { 0x38000 },
3001
+ [GCC_MSG_RAM_BCR] = { 0x39000 },
3002
+ [GCC_TLMM_BCR] = { 0x3a000 },
3003
+ [GCC_MPM_BCR] = { 0x3b000 },
3004
+ [GCC_SEC_CTRL_BCR] = { 0x3d000 },
3005
+ [GCC_SPMI_BCR] = { 0x3f000 },
3006
+ [GCC_SPDM_BCR] = { 0x40000 },
3007
+ [GCC_CE1_BCR] = { 0x41000 },
3008
+ [GCC_BIMC_BCR] = { 0x44000 },
3009
+ [GCC_SNOC_BUS_TIMEOUT0_BCR] = { 0x49000 },
3010
+ [GCC_SNOC_BUS_TIMEOUT1_BCR] = { 0x49008 },
3011
+ [GCC_SNOC_BUS_TIMEOUT3_BCR] = { 0x49010 },
3012
+ [GCC_SNOC_BUS_TIMEOUT_EXTREF_BCR] = { 0x49018 },
3013
+ [GCC_PNOC_BUS_TIMEOUT0_BCR] = { 0x4a000 },
3014
+ [GCC_CNOC_PERIPH_BUS_TIMEOUT1_BCR] = { 0x4a004 },
3015
+ [GCC_CNOC_PERIPH_BUS_TIMEOUT2_BCR] = { 0x4a00c },
3016
+ [GCC_CNOC_BUS_TIMEOUT0_BCR] = { 0x4b000 },
3017
+ [GCC_CNOC_BUS_TIMEOUT1_BCR] = { 0x4b008 },
3018
+ [GCC_CNOC_BUS_TIMEOUT2_BCR] = { 0x4b010 },
3019
+ [GCC_CNOC_BUS_TIMEOUT3_BCR] = { 0x4b018 },
3020
+ [GCC_CNOC_BUS_TIMEOUT4_BCR] = { 0x4b020 },
3021
+ [GCC_CNOC_BUS_TIMEOUT5_BCR] = { 0x4b028 },
3022
+ [GCC_CNOC_BUS_TIMEOUT6_BCR] = { 0x4b030 },
3023
+ [GCC_CNOC_BUS_TIMEOUT7_BCR] = { 0x4b038 },
3024
+ [GCC_APB2JTAG_BCR] = { 0x4c000 },
3025
+ [GCC_RBCPR_CX_BCR] = { 0x4e000 },
3026
+ [GCC_RBCPR_MX_BCR] = { 0x4f000 },
3027
+ [GCC_USB3_PHY_BCR] = { 0x50020 },
3028
+ [GCC_USB3PHY_PHY_BCR] = { 0x50024 },
3029
+ [GCC_USB3_DP_PHY_BCR] = { 0x50028 },
3030
+ [GCC_SSC_BCR] = { 0x63000 },
3031
+ [GCC_SSC_RESET] = { 0x63020 },
3032
+ [GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 },
3033
+ [GCC_PCIE_0_LINK_DOWN_BCR] = { 0x6c014 },
3034
+ [GCC_PCIE_0_PHY_BCR] = { 0x6c01c },
3035
+ [GCC_PCIE_0_NOCSR_COM_PHY_BCR] = { 0x6c020 },
3036
+ [GCC_PCIE_PHY_BCR] = { 0x6f000 },
3037
+ [GCC_PCIE_PHY_NOCSR_COM_PHY_BCR] = { 0x6f00c },
3038
+ [GCC_PCIE_PHY_CFG_AHB_BCR] = { 0x6f010 },
3039
+ [GCC_PCIE_PHY_COM_BCR] = { 0x6f014 },
3040
+ [GCC_GPU_BCR] = { 0x71000 },
3041
+ [GCC_SPSS_BCR] = { 0x72000 },
3042
+ [GCC_OBT_ODT_BCR] = { 0x73000 },
3043
+ [GCC_MSS_RESTART] = { 0x79000 },
3044
+ [GCC_VS_BCR] = { 0x7a000 },
3045
+ [GCC_MSS_VS_RESET] = { 0x7a100 },
3046
+ [GCC_GPU_VS_RESET] = { 0x7a104 },
3047
+ [GCC_APC0_VS_RESET] = { 0x7a108 },
3048
+ [GCC_APC1_VS_RESET] = { 0x7a10c },
3049
+ [GCC_CNOC_BUS_TIMEOUT8_BCR] = { 0x80000 },
3050
+ [GCC_CNOC_BUS_TIMEOUT9_BCR] = { 0x80008 },
3051
+ [GCC_CNOC_BUS_TIMEOUT10_BCR] = { 0x80010 },
3052
+ [GCC_CNOC_BUS_TIMEOUT11_BCR] = { 0x80018 },
3053
+ [GCC_CNOC_BUS_TIMEOUT12_BCR] = { 0x80020 },
3054
+ [GCC_CNOC_BUS_TIMEOUT13_BCR] = { 0x80028 },
3055
+ [GCC_CNOC_BUS_TIMEOUT14_BCR] = { 0x80030 },
3056
+ [GCC_CNOC_BUS_TIMEOUT_EXTREF_BCR] = { 0x80038 },
3057
+ [GCC_AGGRE1_NOC_BCR] = { 0x82000 },
3058
+ [GCC_AGGRE2_NOC_BCR] = { 0x83000 },
3059
+ [GCC_DCC_BCR] = { 0x84000 },
3060
+ [GCC_QREFS_VBG_CAL_BCR] = { 0x88028 },
3061
+ [GCC_IPA_BCR] = { 0x89000 },
3062
+ [GCC_GLM_BCR] = { 0x8b000 },
3063
+ [GCC_SKL_BCR] = { 0x8c000 },
3064
+ [GCC_MSMPU_BCR] = { 0x8d000 },
27653065 };
27663066
27673067 static const struct regmap_config gcc_msm8998_regmap_config = {
....@@ -2772,6 +3072,10 @@
27723072 .fast_io = true,
27733073 };
27743074
3075
+static struct clk_hw *gcc_msm8998_hws[] = {
3076
+ &xo.hw,
3077
+};
3078
+
27753079 static const struct qcom_cc_desc gcc_msm8998_desc = {
27763080 .config = &gcc_msm8998_regmap_config,
27773081 .clks = gcc_msm8998_clocks,
....@@ -2780,6 +3084,8 @@
27803084 .num_resets = ARRAY_SIZE(gcc_msm8998_resets),
27813085 .gdscs = gcc_msm8998_gdscs,
27823086 .num_gdscs = ARRAY_SIZE(gcc_msm8998_gdscs),
3087
+ .clk_hws = gcc_msm8998_hws,
3088
+ .num_clk_hws = ARRAY_SIZE(gcc_msm8998_hws),
27833089 };
27843090
27853091 static int gcc_msm8998_probe(struct platform_device *pdev)
....@@ -2813,6 +3119,7 @@
28133119 .driver = {
28143120 .name = "gcc-msm8998",
28153121 .of_match_table = gcc_msm8998_match_table,
3122
+ .sync_state = clk_sync_state,
28163123 },
28173124 };
28183125