4
4
*/
5
5
6
6
#include <linux/clk-provider.h>
7
+ #include <linux/interconnect-clk.h>
8
+ #include <linux/interconnect-provider.h>
7
9
#include <linux/kernel.h>
8
10
#include <linux/module.h>
9
11
#include <linux/of.h>
12
14
13
15
#include <dt-bindings/clock/qcom,ipq9574-gcc.h>
14
16
#include <dt-bindings/reset/qcom,ipq9574-gcc.h>
17
+ #include <dt-bindings/interconnect/qcom,ipq9574.h>
15
18
16
19
#include "clk-alpha-pll.h"
17
20
#include "clk-branch.h"
@@ -4377,6 +4380,32 @@ static const struct qcom_reset_map gcc_ipq9574_resets[] = {
4377
4380
[GCC_WCSS_Q6_TBU_BCR ] = { 0x12054 , 0 },
4378
4381
};
4379
4382
4383
+ #define IPQ_APPS_ID 9574 /* some unique value */
4384
+
4385
+ static struct qcom_icc_hws_data icc_ipq9574_hws [] = {
4386
+ { MASTER_ANOC_PCIE0 , SLAVE_ANOC_PCIE0 , GCC_ANOC_PCIE0_1LANE_M_CLK },
4387
+ { MASTER_SNOC_PCIE0 , SLAVE_SNOC_PCIE0 , GCC_SNOC_PCIE0_1LANE_S_CLK },
4388
+ { MASTER_ANOC_PCIE1 , SLAVE_ANOC_PCIE1 , GCC_ANOC_PCIE1_1LANE_M_CLK },
4389
+ { MASTER_SNOC_PCIE1 , SLAVE_SNOC_PCIE1 , GCC_SNOC_PCIE1_1LANE_S_CLK },
4390
+ { MASTER_ANOC_PCIE2 , SLAVE_ANOC_PCIE2 , GCC_ANOC_PCIE2_2LANE_M_CLK },
4391
+ { MASTER_SNOC_PCIE2 , SLAVE_SNOC_PCIE2 , GCC_SNOC_PCIE2_2LANE_S_CLK },
4392
+ { MASTER_ANOC_PCIE3 , SLAVE_ANOC_PCIE3 , GCC_ANOC_PCIE3_2LANE_M_CLK },
4393
+ { MASTER_SNOC_PCIE3 , SLAVE_SNOC_PCIE3 , GCC_SNOC_PCIE3_2LANE_S_CLK },
4394
+ { MASTER_USB , SLAVE_USB , GCC_SNOC_USB_CLK },
4395
+ { MASTER_USB_AXI , SLAVE_USB_AXI , GCC_ANOC_USB_AXI_CLK },
4396
+ { MASTER_NSSNOC_NSSCC , SLAVE_NSSNOC_NSSCC , GCC_NSSNOC_NSSCC_CLK },
4397
+ { MASTER_NSSNOC_SNOC_0 , SLAVE_NSSNOC_SNOC_0 , GCC_NSSNOC_SNOC_CLK },
4398
+ { MASTER_NSSNOC_SNOC_1 , SLAVE_NSSNOC_SNOC_1 , GCC_NSSNOC_SNOC_1_CLK },
4399
+ { MASTER_NSSNOC_PCNOC_1 , SLAVE_NSSNOC_PCNOC_1 , GCC_NSSNOC_PCNOC_1_CLK },
4400
+ { MASTER_NSSNOC_QOSGEN_REF , SLAVE_NSSNOC_QOSGEN_REF , GCC_NSSNOC_QOSGEN_REF_CLK },
4401
+ { MASTER_NSSNOC_TIMEOUT_REF , SLAVE_NSSNOC_TIMEOUT_REF , GCC_NSSNOC_TIMEOUT_REF_CLK },
4402
+ { MASTER_NSSNOC_XO_DCD , SLAVE_NSSNOC_XO_DCD , GCC_NSSNOC_XO_DCD_CLK },
4403
+ { MASTER_NSSNOC_ATB , SLAVE_NSSNOC_ATB , GCC_NSSNOC_ATB_CLK },
4404
+ { MASTER_MEM_NOC_NSSNOC , SLAVE_MEM_NOC_NSSNOC , GCC_MEM_NOC_NSSNOC_CLK },
4405
+ { MASTER_NSSNOC_MEMNOC , SLAVE_NSSNOC_MEMNOC , GCC_NSSNOC_MEMNOC_CLK },
4406
+ { MASTER_NSSNOC_MEM_NOC_1 , SLAVE_NSSNOC_MEM_NOC_1 , GCC_NSSNOC_MEM_NOC_1_CLK },
4407
+ };
4408
+
4380
4409
static const struct of_device_id gcc_ipq9574_match_table [] = {
4381
4410
{ .compatible = "qcom,ipq9574-gcc" },
4382
4411
{ }
@@ -4399,6 +4428,9 @@ static const struct qcom_cc_desc gcc_ipq9574_desc = {
4399
4428
.num_resets = ARRAY_SIZE (gcc_ipq9574_resets ),
4400
4429
.clk_hws = gcc_ipq9574_hws ,
4401
4430
.num_clk_hws = ARRAY_SIZE (gcc_ipq9574_hws ),
4431
+ .icc_hws = icc_ipq9574_hws ,
4432
+ .num_icc_hws = ARRAY_SIZE (icc_ipq9574_hws ),
4433
+ .icc_first_node_id = IPQ_APPS_ID ,
4402
4434
};
4403
4435
4404
4436
static int gcc_ipq9574_probe (struct platform_device * pdev )
@@ -4411,6 +4443,7 @@ static struct platform_driver gcc_ipq9574_driver = {
4411
4443
.driver = {
4412
4444
.name = "qcom,gcc-ipq9574" ,
4413
4445
.of_match_table = gcc_ipq9574_match_table ,
4446
+ .sync_state = icc_sync_state ,
4414
4447
},
4415
4448
};
4416
4449
0 commit comments