44 */
55
66#include <linux/clk-provider.h>
7+ #include <linux/interconnect-clk.h>
8+ #include <linux/interconnect-provider.h>
79#include <linux/kernel.h>
810#include <linux/module.h>
911#include <linux/of.h>
1214
1315#include <dt-bindings/clock/qcom,ipq9574-gcc.h>
1416#include <dt-bindings/reset/qcom,ipq9574-gcc.h>
17+ #include <dt-bindings/interconnect/qcom,ipq9574.h>
1518
1619#include "clk-alpha-pll.h"
1720#include "clk-branch.h"
@@ -4377,6 +4380,32 @@ static const struct qcom_reset_map gcc_ipq9574_resets[] = {
43774380 [GCC_WCSS_Q6_TBU_BCR ] = { 0x12054 , 0 },
43784381};
43794382
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+
43804409static const struct of_device_id gcc_ipq9574_match_table [] = {
43814410 { .compatible = "qcom,ipq9574-gcc" },
43824411 { }
@@ -4399,6 +4428,9 @@ static const struct qcom_cc_desc gcc_ipq9574_desc = {
43994428 .num_resets = ARRAY_SIZE (gcc_ipq9574_resets ),
44004429 .clk_hws = gcc_ipq9574_hws ,
44014430 .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 ,
44024434};
44034435
44044436static int gcc_ipq9574_probe (struct platform_device * pdev )
@@ -4411,6 +4443,7 @@ static struct platform_driver gcc_ipq9574_driver = {
44114443 .driver = {
44124444 .name = "qcom,gcc-ipq9574" ,
44134445 .of_match_table = gcc_ipq9574_match_table ,
4446+ .sync_state = icc_sync_state ,
44144447 },
44154448};
44164449
0 commit comments