Lines Matching full:scm
192 if (of_device_is_compatible(__scm ? __scm->dev->of_node : NULL, "qcom,scm-sc7180")) { in __get_convention()
223 * Sends a command to the SCM and waits for the command to finish processing.
237 pr_err("Unknown current SCM calling convention.\n"); in qcom_scm_call()
248 * Sends a command to the SCM and waits for the command to finish processing.
262 pr_err("Unknown current SCM calling convention.\n"); in qcom_scm_call_atomic()
347 * Set the Linux entry point for the SCM to transfer control to when coming
353 /* Fallback to old SCM call */ in qcom_scm_set_warm_boot_addr()
366 /* Fallback to old SCM call */ in qcom_scm_set_cold_boot_addr()
483 * During the scm call memory protection will be enabled for the meta in qcom_scm_pas_init_image()
1048 * Return: true iff the SCM calls wrapped by qcom_scm_ice_invalidate_key() and
1065 * doesn't work on these SoCs; only this SCM call does.
1067 * It is assumed that the SoC has only one ICE instance being used, as this SCM
1100 * doesn't work on these SoCs; only this SCM call does.
1102 * It is assumed that the SoC has only one ICE instance being used, as this SCM
1178 * @resp: response buffer passed to SCM
1180 * Write HDCP register(s) through SCM.
1338 * qcom_scm_is_available() - Checks if SCM is available
1373 static int qcom_scm_waitq_wakeup(struct qcom_scm *scm, unsigned int wq_ctx) in qcom_scm_waitq_wakeup() argument
1389 struct qcom_scm *scm = data; in qcom_scm_irq_handler() local
1395 dev_err(scm->dev, "GET_WQ_CTX SMC call failed: %d\n", ret); in qcom_scm_irq_handler()
1401 dev_err(scm->dev, "Invalid flags found for wq_ctx: %u\n", flags); in qcom_scm_irq_handler()
1405 ret = qcom_scm_waitq_wakeup(scm, wq_ctx); in qcom_scm_irq_handler()
1416 struct qcom_scm *scm; in qcom_scm_probe() local
1419 scm = devm_kzalloc(&pdev->dev, sizeof(*scm), GFP_KERNEL); in qcom_scm_probe()
1420 if (!scm) in qcom_scm_probe()
1423 scm->dev = &pdev->dev; in qcom_scm_probe()
1424 ret = qcom_scm_find_dload_address(&pdev->dev, &scm->dload_mode_addr); in qcom_scm_probe()
1428 init_completion(&scm->waitq_comp); in qcom_scm_probe()
1429 mutex_init(&scm->scm_bw_lock); in qcom_scm_probe()
1431 scm->path = devm_of_icc_get(&pdev->dev, NULL); in qcom_scm_probe()
1432 if (IS_ERR(scm->path)) in qcom_scm_probe()
1433 return dev_err_probe(&pdev->dev, PTR_ERR(scm->path), in qcom_scm_probe()
1436 scm->core_clk = devm_clk_get_optional(&pdev->dev, "core"); in qcom_scm_probe()
1437 if (IS_ERR(scm->core_clk)) in qcom_scm_probe()
1438 return PTR_ERR(scm->core_clk); in qcom_scm_probe()
1440 scm->iface_clk = devm_clk_get_optional(&pdev->dev, "iface"); in qcom_scm_probe()
1441 if (IS_ERR(scm->iface_clk)) in qcom_scm_probe()
1442 return PTR_ERR(scm->iface_clk); in qcom_scm_probe()
1444 scm->bus_clk = devm_clk_get_optional(&pdev->dev, "bus"); in qcom_scm_probe()
1445 if (IS_ERR(scm->bus_clk)) in qcom_scm_probe()
1446 return PTR_ERR(scm->bus_clk); in qcom_scm_probe()
1448 scm->reset.ops = &qcom_scm_pas_reset_ops; in qcom_scm_probe()
1449 scm->reset.nr_resets = 1; in qcom_scm_probe()
1450 scm->reset.of_node = pdev->dev.of_node; in qcom_scm_probe()
1451 ret = devm_reset_controller_register(&pdev->dev, &scm->reset); in qcom_scm_probe()
1456 ret = clk_set_rate(scm->core_clk, INT_MAX); in qcom_scm_probe()
1461 smp_store_release(&__scm, scm); in qcom_scm_probe()
1469 IRQF_ONESHOT, "qcom-scm", __scm); in qcom_scm_probe()
1471 return dev_err_probe(scm->dev, ret, "Failed to request qcom-scm irq\n"); in qcom_scm_probe()
1494 { .compatible = "qcom,scm" },
1497 { .compatible = "qcom,scm-apq8064" },
1498 { .compatible = "qcom,scm-apq8084" },
1499 { .compatible = "qcom,scm-ipq4019" },
1500 { .compatible = "qcom,scm-msm8953" },
1501 { .compatible = "qcom,scm-msm8974" },
1502 { .compatible = "qcom,scm-msm8996" },
1523 MODULE_DESCRIPTION("Qualcomm Technologies, Inc. SCM driver");