• Home
  • Raw
  • Download

Lines Matching +full:msm8996 +full:- +full:apcs +full:- +full:hmss +full:- +full:global

45 	struct qcom_apcs_ipc *apcs = container_of(chan->mbox,  in qcom_apcs_ipc_send_data()  local
47 unsigned long idx = (unsigned long)chan->con_priv; in qcom_apcs_ipc_send_data()
49 return regmap_write(apcs->regmap, apcs->offset, BIT(idx)); in qcom_apcs_ipc_send_data()
58 struct qcom_apcs_ipc *apcs; in qcom_apcs_ipc_probe() local
66 { .compatible = "qcom,msm8916-apcs-kpss-global", }, in qcom_apcs_ipc_probe()
67 { .compatible = "qcom,qcs404-apcs-apps-global", }, in qcom_apcs_ipc_probe()
71 apcs = devm_kzalloc(&pdev->dev, sizeof(*apcs), GFP_KERNEL); in qcom_apcs_ipc_probe()
72 if (!apcs) in qcom_apcs_ipc_probe()
73 return -ENOMEM; in qcom_apcs_ipc_probe()
76 base = devm_ioremap_resource(&pdev->dev, res); in qcom_apcs_ipc_probe()
80 regmap = devm_regmap_init_mmio(&pdev->dev, base, &apcs_regmap_config); in qcom_apcs_ipc_probe()
84 offset = (unsigned long)of_device_get_match_data(&pdev->dev); in qcom_apcs_ipc_probe()
86 apcs->regmap = regmap; in qcom_apcs_ipc_probe()
87 apcs->offset = offset; in qcom_apcs_ipc_probe()
90 for (i = 0; i < ARRAY_SIZE(apcs->mbox_chans); i++) in qcom_apcs_ipc_probe()
91 apcs->mbox_chans[i].con_priv = (void *)i; in qcom_apcs_ipc_probe()
93 apcs->mbox.dev = &pdev->dev; in qcom_apcs_ipc_probe()
94 apcs->mbox.ops = &qcom_apcs_ipc_ops; in qcom_apcs_ipc_probe()
95 apcs->mbox.chans = apcs->mbox_chans; in qcom_apcs_ipc_probe()
96 apcs->mbox.num_chans = ARRAY_SIZE(apcs->mbox_chans); in qcom_apcs_ipc_probe()
98 ret = mbox_controller_register(&apcs->mbox); in qcom_apcs_ipc_probe()
100 dev_err(&pdev->dev, "failed to register APCS IPC controller\n"); in qcom_apcs_ipc_probe()
104 if (of_match_device(apcs_clk_match_table, &pdev->dev)) { in qcom_apcs_ipc_probe()
105 apcs->clk = platform_device_register_data(&pdev->dev, in qcom_apcs_ipc_probe()
106 "qcom-apcs-msm8916-clk", in qcom_apcs_ipc_probe()
107 -1, NULL, 0); in qcom_apcs_ipc_probe()
108 if (IS_ERR(apcs->clk)) in qcom_apcs_ipc_probe()
109 dev_err(&pdev->dev, "failed to register APCS clk\n"); in qcom_apcs_ipc_probe()
112 platform_set_drvdata(pdev, apcs); in qcom_apcs_ipc_probe()
119 struct qcom_apcs_ipc *apcs = platform_get_drvdata(pdev); in qcom_apcs_ipc_remove() local
120 struct platform_device *clk = apcs->clk; in qcom_apcs_ipc_remove()
122 mbox_controller_unregister(&apcs->mbox); in qcom_apcs_ipc_remove()
128 /* .data is the offset of the ipc register within the global block */
130 { .compatible = "qcom,msm8916-apcs-kpss-global", .data = (void *)8 },
131 { .compatible = "qcom,msm8996-apcs-hmss-global", .data = (void *)16 },
132 { .compatible = "qcom,msm8998-apcs-hmss-global", .data = (void *)8 },
133 { .compatible = "qcom,sdm845-apss-shared", .data = (void *)12 },
160 MODULE_DESCRIPTION("Qualcomm APCS IPC driver");