qmp 961 drivers/phy/qualcomm/phy-qcom-qmp.c struct qcom_qmp *qmp; qmp 1300 drivers/phy/qualcomm/phy-qcom-qmp.c struct qcom_qmp *qmp = qphy->qmp; qmp 1301 drivers/phy/qualcomm/phy-qcom-qmp.c const struct qmp_phy_cfg *cfg = qmp->cfg; qmp 1302 drivers/phy/qualcomm/phy-qcom-qmp.c void __iomem *serdes = qmp->serdes; qmp 1304 drivers/phy/qualcomm/phy-qcom-qmp.c void __iomem *dp_com = qmp->dp_com; qmp 1307 drivers/phy/qualcomm/phy-qcom-qmp.c mutex_lock(&qmp->phy_mutex); qmp 1308 drivers/phy/qualcomm/phy-qcom-qmp.c if (qmp->init_count++) { qmp 1309 drivers/phy/qualcomm/phy-qcom-qmp.c mutex_unlock(&qmp->phy_mutex); qmp 1314 drivers/phy/qualcomm/phy-qcom-qmp.c ret = regulator_bulk_enable(cfg->num_vregs, qmp->vregs); qmp 1316 drivers/phy/qualcomm/phy-qcom-qmp.c dev_err(qmp->dev, "failed to enable regulators, err=%d\n", ret); qmp 1321 drivers/phy/qualcomm/phy-qcom-qmp.c ret = reset_control_assert(qmp->resets[i]); qmp 1323 drivers/phy/qualcomm/phy-qcom-qmp.c dev_err(qmp->dev, "%s reset assert failed\n", qmp 1330 drivers/phy/qualcomm/phy-qcom-qmp.c ret = reset_control_deassert(qmp->resets[i]); qmp 1332 drivers/phy/qualcomm/phy-qcom-qmp.c dev_err(qmp->dev, "%s reset deassert failed\n", qmp 1333 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->cfg->reset_list[i]); qmp 1338 drivers/phy/qualcomm/phy-qcom-qmp.c ret = clk_bulk_prepare_enable(cfg->num_clks, qmp->clks); qmp 1340 drivers/phy/qualcomm/phy-qcom-qmp.c dev_err(qmp->dev, "failed to enable clks, err=%d\n", ret); qmp 1385 drivers/phy/qualcomm/phy-qcom-qmp.c dev_err(qmp->dev, qmp 1391 drivers/phy/qualcomm/phy-qcom-qmp.c mutex_unlock(&qmp->phy_mutex); qmp 1396 drivers/phy/qualcomm/phy-qcom-qmp.c clk_bulk_disable_unprepare(cfg->num_clks, qmp->clks); qmp 1399 drivers/phy/qualcomm/phy-qcom-qmp.c reset_control_assert(qmp->resets[i]); qmp 1401 drivers/phy/qualcomm/phy-qcom-qmp.c regulator_bulk_disable(cfg->num_vregs, qmp->vregs); qmp 1403 drivers/phy/qualcomm/phy-qcom-qmp.c mutex_unlock(&qmp->phy_mutex); qmp 1408 drivers/phy/qualcomm/phy-qcom-qmp.c static int qcom_qmp_phy_com_exit(struct qcom_qmp *qmp) qmp 1410 drivers/phy/qualcomm/phy-qcom-qmp.c const struct qmp_phy_cfg *cfg = qmp->cfg; qmp 1411 drivers/phy/qualcomm/phy-qcom-qmp.c void __iomem *serdes = qmp->serdes; qmp 1414 drivers/phy/qualcomm/phy-qcom-qmp.c mutex_lock(&qmp->phy_mutex); qmp 1415 drivers/phy/qualcomm/phy-qcom-qmp.c if (--qmp->init_count) { qmp 1416 drivers/phy/qualcomm/phy-qcom-qmp.c mutex_unlock(&qmp->phy_mutex); qmp 1420 drivers/phy/qualcomm/phy-qcom-qmp.c reset_control_assert(qmp->ufs_reset); qmp 1431 drivers/phy/qualcomm/phy-qcom-qmp.c reset_control_assert(qmp->resets[i]); qmp 1433 drivers/phy/qualcomm/phy-qcom-qmp.c clk_bulk_disable_unprepare(cfg->num_clks, qmp->clks); qmp 1435 drivers/phy/qualcomm/phy-qcom-qmp.c regulator_bulk_disable(cfg->num_vregs, qmp->vregs); qmp 1437 drivers/phy/qualcomm/phy-qcom-qmp.c mutex_unlock(&qmp->phy_mutex); qmp 1445 drivers/phy/qualcomm/phy-qcom-qmp.c struct qcom_qmp *qmp = qphy->qmp; qmp 1446 drivers/phy/qualcomm/phy-qcom-qmp.c const struct qmp_phy_cfg *cfg = qmp->cfg; qmp 1450 drivers/phy/qualcomm/phy-qcom-qmp.c void __iomem *dp_com = qmp->dp_com; qmp 1455 drivers/phy/qualcomm/phy-qcom-qmp.c dev_vdbg(qmp->dev, "Initializing QMP phy\n"); qmp 1463 drivers/phy/qualcomm/phy-qcom-qmp.c if (!qmp->ufs_reset) { qmp 1464 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->ufs_reset = qmp 1465 drivers/phy/qualcomm/phy-qcom-qmp.c devm_reset_control_get_exclusive(qmp->dev, qmp 1468 drivers/phy/qualcomm/phy-qcom-qmp.c if (IS_ERR(qmp->ufs_reset)) { qmp 1469 drivers/phy/qualcomm/phy-qcom-qmp.c ret = PTR_ERR(qmp->ufs_reset); qmp 1470 drivers/phy/qualcomm/phy-qcom-qmp.c dev_err(qmp->dev, qmp 1474 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->ufs_reset = NULL; qmp 1479 drivers/phy/qualcomm/phy-qcom-qmp.c ret = reset_control_assert(qmp->ufs_reset); qmp 1491 drivers/phy/qualcomm/phy-qcom-qmp.c dev_err(qmp->dev, "lane%d reset deassert failed\n", qmp 1499 drivers/phy/qualcomm/phy-qcom-qmp.c dev_err(qmp->dev, "pipe_clk enable failed err=%d\n", ret); qmp 1516 drivers/phy/qualcomm/phy-qcom-qmp.c ret = reset_control_deassert(qmp->ufs_reset); qmp 1553 drivers/phy/qualcomm/phy-qcom-qmp.c dev_err(qmp->dev, "phy initialization timed-out\n"); qmp 1556 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->phy_initialized = true; qmp 1560 drivers/phy/qualcomm/phy-qcom-qmp.c reset_control_assert(qmp->ufs_reset); qmp 1566 drivers/phy/qualcomm/phy-qcom-qmp.c qcom_qmp_phy_com_exit(qmp); qmp 1574 drivers/phy/qualcomm/phy-qcom-qmp.c struct qcom_qmp *qmp = qphy->qmp; qmp 1575 drivers/phy/qualcomm/phy-qcom-qmp.c const struct qmp_phy_cfg *cfg = qmp->cfg; qmp 1592 drivers/phy/qualcomm/phy-qcom-qmp.c qcom_qmp_phy_com_exit(qmp); qmp 1594 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->phy_initialized = false; qmp 1603 drivers/phy/qualcomm/phy-qcom-qmp.c struct qcom_qmp *qmp = qphy->qmp; qmp 1605 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->mode = mode; qmp 1612 drivers/phy/qualcomm/phy-qcom-qmp.c struct qcom_qmp *qmp = qphy->qmp; qmp 1613 drivers/phy/qualcomm/phy-qcom-qmp.c const struct qmp_phy_cfg *cfg = qmp->cfg; qmp 1618 drivers/phy/qualcomm/phy-qcom-qmp.c if (qmp->mode == PHY_MODE_USB_HOST_SS || qmp 1619 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->mode == PHY_MODE_USB_DEVICE_SS) qmp 1642 drivers/phy/qualcomm/phy-qcom-qmp.c struct qcom_qmp *qmp = qphy->qmp; qmp 1643 drivers/phy/qualcomm/phy-qcom-qmp.c const struct qmp_phy_cfg *cfg = qmp->cfg; qmp 1661 drivers/phy/qualcomm/phy-qcom-qmp.c struct qcom_qmp *qmp = dev_get_drvdata(dev); qmp 1662 drivers/phy/qualcomm/phy-qcom-qmp.c struct qmp_phy *qphy = qmp->phys[0]; qmp 1663 drivers/phy/qualcomm/phy-qcom-qmp.c const struct qmp_phy_cfg *cfg = qmp->cfg; qmp 1665 drivers/phy/qualcomm/phy-qcom-qmp.c dev_vdbg(dev, "Suspending QMP phy, mode:%d\n", qmp->mode); qmp 1671 drivers/phy/qualcomm/phy-qcom-qmp.c if (!qmp->phy_initialized) { qmp 1679 drivers/phy/qualcomm/phy-qcom-qmp.c clk_bulk_disable_unprepare(cfg->num_clks, qmp->clks); qmp 1686 drivers/phy/qualcomm/phy-qcom-qmp.c struct qcom_qmp *qmp = dev_get_drvdata(dev); qmp 1687 drivers/phy/qualcomm/phy-qcom-qmp.c struct qmp_phy *qphy = qmp->phys[0]; qmp 1688 drivers/phy/qualcomm/phy-qcom-qmp.c const struct qmp_phy_cfg *cfg = qmp->cfg; qmp 1691 drivers/phy/qualcomm/phy-qcom-qmp.c dev_vdbg(dev, "Resuming QMP phy, mode:%d\n", qmp->mode); qmp 1697 drivers/phy/qualcomm/phy-qcom-qmp.c if (!qmp->phy_initialized) { qmp 1702 drivers/phy/qualcomm/phy-qcom-qmp.c ret = clk_bulk_prepare_enable(cfg->num_clks, qmp->clks); qmp 1704 drivers/phy/qualcomm/phy-qcom-qmp.c dev_err(qmp->dev, "failed to enable clks, err=%d\n", ret); qmp 1711 drivers/phy/qualcomm/phy-qcom-qmp.c clk_bulk_disable_unprepare(cfg->num_clks, qmp->clks); qmp 1722 drivers/phy/qualcomm/phy-qcom-qmp.c struct qcom_qmp *qmp = dev_get_drvdata(dev); qmp 1723 drivers/phy/qualcomm/phy-qcom-qmp.c int num = qmp->cfg->num_vregs; qmp 1726 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->vregs = devm_kcalloc(dev, num, sizeof(*qmp->vregs), GFP_KERNEL); qmp 1727 drivers/phy/qualcomm/phy-qcom-qmp.c if (!qmp->vregs) qmp 1731 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->vregs[i].supply = qmp->cfg->vreg_list[i]; qmp 1733 drivers/phy/qualcomm/phy-qcom-qmp.c return devm_regulator_bulk_get(dev, num, qmp->vregs); qmp 1738 drivers/phy/qualcomm/phy-qcom-qmp.c struct qcom_qmp *qmp = dev_get_drvdata(dev); qmp 1741 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->resets = devm_kcalloc(dev, qmp->cfg->num_resets, qmp 1742 drivers/phy/qualcomm/phy-qcom-qmp.c sizeof(*qmp->resets), GFP_KERNEL); qmp 1743 drivers/phy/qualcomm/phy-qcom-qmp.c if (!qmp->resets) qmp 1746 drivers/phy/qualcomm/phy-qcom-qmp.c for (i = 0; i < qmp->cfg->num_resets; i++) { qmp 1748 drivers/phy/qualcomm/phy-qcom-qmp.c const char *name = qmp->cfg->reset_list[i]; qmp 1755 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->resets[i] = rst; qmp 1763 drivers/phy/qualcomm/phy-qcom-qmp.c struct qcom_qmp *qmp = dev_get_drvdata(dev); qmp 1764 drivers/phy/qualcomm/phy-qcom-qmp.c int num = qmp->cfg->num_clks; qmp 1767 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->clks = devm_kcalloc(dev, num, sizeof(*qmp->clks), GFP_KERNEL); qmp 1768 drivers/phy/qualcomm/phy-qcom-qmp.c if (!qmp->clks) qmp 1772 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->clks[i].id = qmp->cfg->clk_list[i]; qmp 1774 drivers/phy/qualcomm/phy-qcom-qmp.c return devm_clk_bulk_get(dev, num, qmp->clks); qmp 1800 drivers/phy/qualcomm/phy-qcom-qmp.c static int phy_pipe_clk_register(struct qcom_qmp *qmp, struct device_node *np) qmp 1806 drivers/phy/qualcomm/phy-qcom-qmp.c if ((qmp->cfg->type != PHY_TYPE_USB3) && qmp 1807 drivers/phy/qualcomm/phy-qcom-qmp.c (qmp->cfg->type != PHY_TYPE_PCIE)) { qmp 1814 drivers/phy/qualcomm/phy-qcom-qmp.c dev_err(qmp->dev, "%pOFn: No clock-output-names\n", np); qmp 1818 drivers/phy/qualcomm/phy-qcom-qmp.c fixed = devm_kzalloc(qmp->dev, sizeof(*fixed), GFP_KERNEL); qmp 1828 drivers/phy/qualcomm/phy-qcom-qmp.c ret = devm_clk_hw_register(qmp->dev, &fixed->hw); qmp 1840 drivers/phy/qualcomm/phy-qcom-qmp.c ret = devm_add_action(qmp->dev, phy_pipe_clk_release_provider, np); qmp 1864 drivers/phy/qualcomm/phy-qcom-qmp.c struct qcom_qmp *qmp = dev_get_drvdata(dev); qmp 1899 drivers/phy/qualcomm/phy-qcom-qmp.c if (qmp->cfg->is_dual_lane_phy) { qmp 1932 drivers/phy/qualcomm/phy-qcom-qmp.c if (qmp->cfg->type == PHY_TYPE_PCIE || qmp 1933 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->cfg->type == PHY_TYPE_USB3) { qmp 1945 drivers/phy/qualcomm/phy-qcom-qmp.c if (qmp->cfg->has_lane_rst) { qmp 1954 drivers/phy/qualcomm/phy-qcom-qmp.c if (qmp->cfg->type == PHY_TYPE_UFS) qmp 1966 drivers/phy/qualcomm/phy-qcom-qmp.c qphy->qmp = qmp; qmp 1967 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->phys[id] = qphy; qmp 2013 drivers/phy/qualcomm/phy-qcom-qmp.c struct qcom_qmp *qmp; qmp 2022 drivers/phy/qualcomm/phy-qcom-qmp.c qmp = devm_kzalloc(dev, sizeof(*qmp), GFP_KERNEL); qmp 2023 drivers/phy/qualcomm/phy-qcom-qmp.c if (!qmp) qmp 2026 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->dev = dev; qmp 2027 drivers/phy/qualcomm/phy-qcom-qmp.c dev_set_drvdata(dev, qmp); qmp 2030 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->cfg = of_device_get_match_data(dev); qmp 2031 drivers/phy/qualcomm/phy-qcom-qmp.c if (!qmp->cfg) qmp 2040 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->serdes = base; qmp 2043 drivers/phy/qualcomm/phy-qcom-qmp.c if (qmp->cfg->has_phy_dp_com_ctrl) { qmp 2050 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->dp_com = base; qmp 2053 drivers/phy/qualcomm/phy-qcom-qmp.c mutex_init(&qmp->phy_mutex); qmp 2073 drivers/phy/qualcomm/phy-qcom-qmp.c if (num > qmp->cfg->nlanes) qmp 2076 drivers/phy/qualcomm/phy-qcom-qmp.c qmp->phys = devm_kcalloc(dev, num, sizeof(*qmp->phys), GFP_KERNEL); qmp 2077 drivers/phy/qualcomm/phy-qcom-qmp.c if (!qmp->phys) qmp 2102 drivers/phy/qualcomm/phy-qcom-qmp.c ret = phy_pipe_clk_register(qmp, child); qmp 2104 drivers/phy/qualcomm/phy-qcom-qmp.c dev_err(qmp->dev, qmp 51 drivers/soc/qcom/qcom_aoss.c struct qmp *qmp; qmp 89 drivers/soc/qcom/qcom_aoss.c struct qmp *qmp; qmp 95 drivers/soc/qcom/qcom_aoss.c static void qmp_kick(struct qmp *qmp) qmp 97 drivers/soc/qcom/qcom_aoss.c mbox_send_message(qmp->mbox_chan, NULL); qmp 98 drivers/soc/qcom/qcom_aoss.c mbox_client_txdone(qmp->mbox_chan, 0); qmp 101 drivers/soc/qcom/qcom_aoss.c static bool qmp_magic_valid(struct qmp *qmp) qmp 103 drivers/soc/qcom/qcom_aoss.c return readl(qmp->msgram + QMP_DESC_MAGIC) == QMP_MAGIC; qmp 106 drivers/soc/qcom/qcom_aoss.c static bool qmp_link_acked(struct qmp *qmp) qmp 108 drivers/soc/qcom/qcom_aoss.c return readl(qmp->msgram + QMP_DESC_MCORE_LINK_STATE_ACK) == QMP_STATE_UP; qmp 111 drivers/soc/qcom/qcom_aoss.c static bool qmp_mcore_channel_acked(struct qmp *qmp) qmp 113 drivers/soc/qcom/qcom_aoss.c return readl(qmp->msgram + QMP_DESC_MCORE_CH_STATE_ACK) == QMP_STATE_UP; qmp 116 drivers/soc/qcom/qcom_aoss.c static bool qmp_ucore_channel_up(struct qmp *qmp) qmp 118 drivers/soc/qcom/qcom_aoss.c return readl(qmp->msgram + QMP_DESC_UCORE_CH_STATE) == QMP_STATE_UP; qmp 121 drivers/soc/qcom/qcom_aoss.c static int qmp_open(struct qmp *qmp) qmp 126 drivers/soc/qcom/qcom_aoss.c if (!qmp_magic_valid(qmp)) { qmp 127 drivers/soc/qcom/qcom_aoss.c dev_err(qmp->dev, "QMP magic doesn't match\n"); qmp 131 drivers/soc/qcom/qcom_aoss.c val = readl(qmp->msgram + QMP_DESC_VERSION); qmp 133 drivers/soc/qcom/qcom_aoss.c dev_err(qmp->dev, "unsupported QMP version %d\n", val); qmp 137 drivers/soc/qcom/qcom_aoss.c qmp->offset = readl(qmp->msgram + QMP_DESC_MCORE_MBOX_OFFSET); qmp 138 drivers/soc/qcom/qcom_aoss.c qmp->size = readl(qmp->msgram + QMP_DESC_MCORE_MBOX_SIZE); qmp 139 drivers/soc/qcom/qcom_aoss.c if (!qmp->size) { qmp 140 drivers/soc/qcom/qcom_aoss.c dev_err(qmp->dev, "invalid mailbox size\n"); qmp 145 drivers/soc/qcom/qcom_aoss.c val = readl(qmp->msgram + QMP_DESC_UCORE_LINK_STATE); qmp 146 drivers/soc/qcom/qcom_aoss.c writel(val, qmp->msgram + QMP_DESC_UCORE_LINK_STATE_ACK); qmp 149 drivers/soc/qcom/qcom_aoss.c writel(QMP_STATE_UP, qmp->msgram + QMP_DESC_MCORE_LINK_STATE); qmp 151 drivers/soc/qcom/qcom_aoss.c qmp_kick(qmp); qmp 153 drivers/soc/qcom/qcom_aoss.c ret = wait_event_timeout(qmp->event, qmp_link_acked(qmp), HZ); qmp 155 drivers/soc/qcom/qcom_aoss.c dev_err(qmp->dev, "ucore didn't ack link\n"); qmp 159 drivers/soc/qcom/qcom_aoss.c writel(QMP_STATE_UP, qmp->msgram + QMP_DESC_MCORE_CH_STATE); qmp 161 drivers/soc/qcom/qcom_aoss.c qmp_kick(qmp); qmp 163 drivers/soc/qcom/qcom_aoss.c ret = wait_event_timeout(qmp->event, qmp_ucore_channel_up(qmp), HZ); qmp 165 drivers/soc/qcom/qcom_aoss.c dev_err(qmp->dev, "ucore didn't open channel\n"); qmp 170 drivers/soc/qcom/qcom_aoss.c writel(QMP_STATE_UP, qmp->msgram + QMP_DESC_UCORE_CH_STATE_ACK); qmp 172 drivers/soc/qcom/qcom_aoss.c qmp_kick(qmp); qmp 174 drivers/soc/qcom/qcom_aoss.c ret = wait_event_timeout(qmp->event, qmp_mcore_channel_acked(qmp), HZ); qmp 176 drivers/soc/qcom/qcom_aoss.c dev_err(qmp->dev, "ucore didn't ack channel\n"); qmp 183 drivers/soc/qcom/qcom_aoss.c writel(QMP_STATE_DOWN, qmp->msgram + QMP_DESC_MCORE_CH_STATE); qmp 186 drivers/soc/qcom/qcom_aoss.c writel(QMP_STATE_DOWN, qmp->msgram + QMP_DESC_MCORE_LINK_STATE); qmp 187 drivers/soc/qcom/qcom_aoss.c qmp_kick(qmp); qmp 192 drivers/soc/qcom/qcom_aoss.c static void qmp_close(struct qmp *qmp) qmp 194 drivers/soc/qcom/qcom_aoss.c writel(QMP_STATE_DOWN, qmp->msgram + QMP_DESC_MCORE_CH_STATE); qmp 195 drivers/soc/qcom/qcom_aoss.c writel(QMP_STATE_DOWN, qmp->msgram + QMP_DESC_MCORE_LINK_STATE); qmp 196 drivers/soc/qcom/qcom_aoss.c qmp_kick(qmp); qmp 201 drivers/soc/qcom/qcom_aoss.c struct qmp *qmp = data; qmp 203 drivers/soc/qcom/qcom_aoss.c wake_up_interruptible_all(&qmp->event); qmp 208 drivers/soc/qcom/qcom_aoss.c static bool qmp_message_empty(struct qmp *qmp) qmp 210 drivers/soc/qcom/qcom_aoss.c return readl(qmp->msgram + qmp->offset) == 0; qmp 225 drivers/soc/qcom/qcom_aoss.c static int qmp_send(struct qmp *qmp, const void *data, size_t len) qmp 230 drivers/soc/qcom/qcom_aoss.c if (WARN_ON(len + sizeof(u32) > qmp->size)) qmp 236 drivers/soc/qcom/qcom_aoss.c mutex_lock(&qmp->tx_lock); qmp 239 drivers/soc/qcom/qcom_aoss.c __iowrite32_copy(qmp->msgram + qmp->offset + sizeof(u32), qmp 241 drivers/soc/qcom/qcom_aoss.c writel(len, qmp->msgram + qmp->offset); qmp 242 drivers/soc/qcom/qcom_aoss.c qmp_kick(qmp); qmp 244 drivers/soc/qcom/qcom_aoss.c time_left = wait_event_interruptible_timeout(qmp->event, qmp 245 drivers/soc/qcom/qcom_aoss.c qmp_message_empty(qmp), HZ); qmp 247 drivers/soc/qcom/qcom_aoss.c dev_err(qmp->dev, "ucore did not ack channel\n"); qmp 251 drivers/soc/qcom/qcom_aoss.c writel(0, qmp->msgram + qmp->offset); qmp 256 drivers/soc/qcom/qcom_aoss.c mutex_unlock(&qmp->tx_lock); qmp 264 drivers/soc/qcom/qcom_aoss.c struct qmp *qmp = container_of(hw, struct qmp, qdss_clk); qmp 266 drivers/soc/qcom/qcom_aoss.c return qmp_send(qmp, buf, sizeof(buf)); qmp 272 drivers/soc/qcom/qcom_aoss.c struct qmp *qmp = container_of(hw, struct qmp, qdss_clk); qmp 274 drivers/soc/qcom/qcom_aoss.c qmp_send(qmp, buf, sizeof(buf)); qmp 282 drivers/soc/qcom/qcom_aoss.c static int qmp_qdss_clk_add(struct qmp *qmp) qmp 290 drivers/soc/qcom/qcom_aoss.c qmp->qdss_clk.init = &qdss_init; qmp 291 drivers/soc/qcom/qcom_aoss.c ret = clk_hw_register(qmp->dev, &qmp->qdss_clk); qmp 293 drivers/soc/qcom/qcom_aoss.c dev_err(qmp->dev, "failed to register qdss clock\n"); qmp 297 drivers/soc/qcom/qcom_aoss.c ret = of_clk_add_hw_provider(qmp->dev->of_node, of_clk_hw_simple_get, qmp 298 drivers/soc/qcom/qcom_aoss.c &qmp->qdss_clk); qmp 300 drivers/soc/qcom/qcom_aoss.c dev_err(qmp->dev, "unable to register of clk hw provider\n"); qmp 301 drivers/soc/qcom/qcom_aoss.c clk_hw_unregister(&qmp->qdss_clk); qmp 307 drivers/soc/qcom/qcom_aoss.c static void qmp_qdss_clk_remove(struct qmp *qmp) qmp 309 drivers/soc/qcom/qcom_aoss.c of_clk_del_provider(qmp->dev->of_node); qmp 310 drivers/soc/qcom/qcom_aoss.c clk_hw_unregister(&qmp->qdss_clk); qmp 320 drivers/soc/qcom/qcom_aoss.c return qmp_send(res->qmp, buf, sizeof(buf)); qmp 342 drivers/soc/qcom/qcom_aoss.c static int qmp_pd_add(struct qmp *qmp) qmp 344 drivers/soc/qcom/qcom_aoss.c struct genpd_onecell_data *data = &qmp->pd_data; qmp 345 drivers/soc/qcom/qcom_aoss.c struct device *dev = qmp->dev; qmp 361 drivers/soc/qcom/qcom_aoss.c res[i].qmp = qmp; qmp 390 drivers/soc/qcom/qcom_aoss.c static void qmp_pd_remove(struct qmp *qmp) qmp 392 drivers/soc/qcom/qcom_aoss.c struct genpd_onecell_data *data = &qmp->pd_data; qmp 393 drivers/soc/qcom/qcom_aoss.c struct device *dev = qmp->dev; qmp 437 drivers/soc/qcom/qcom_aoss.c ret = qmp_send(qmp_cdev->qmp, buf, sizeof(buf)); qmp 451 drivers/soc/qcom/qcom_aoss.c static int qmp_cooling_device_add(struct qmp *qmp, qmp 457 drivers/soc/qcom/qcom_aoss.c qmp_cdev->qmp = qmp; qmp 461 drivers/soc/qcom/qcom_aoss.c (qmp->dev, node, qmp 466 drivers/soc/qcom/qcom_aoss.c dev_err(qmp->dev, "unable to register %s cooling device\n", qmp 472 drivers/soc/qcom/qcom_aoss.c static int qmp_cooling_devices_register(struct qmp *qmp) qmp 478 drivers/soc/qcom/qcom_aoss.c np = qmp->dev->of_node; qmp 480 drivers/soc/qcom/qcom_aoss.c qmp->cooling_devs = devm_kcalloc(qmp->dev, count, qmp 481 drivers/soc/qcom/qcom_aoss.c sizeof(*qmp->cooling_devs), qmp 484 drivers/soc/qcom/qcom_aoss.c if (!qmp->cooling_devs) qmp 490 drivers/soc/qcom/qcom_aoss.c ret = qmp_cooling_device_add(qmp, &qmp->cooling_devs[count++], qmp 501 drivers/soc/qcom/qcom_aoss.c (qmp->cooling_devs[count].cdev); qmp 506 drivers/soc/qcom/qcom_aoss.c static void qmp_cooling_devices_remove(struct qmp *qmp) qmp 511 drivers/soc/qcom/qcom_aoss.c thermal_cooling_device_unregister(qmp->cooling_devs[i].cdev); qmp 517 drivers/soc/qcom/qcom_aoss.c struct qmp *qmp; qmp 521 drivers/soc/qcom/qcom_aoss.c qmp = devm_kzalloc(&pdev->dev, sizeof(*qmp), GFP_KERNEL); qmp 522 drivers/soc/qcom/qcom_aoss.c if (!qmp) qmp 525 drivers/soc/qcom/qcom_aoss.c qmp->dev = &pdev->dev; qmp 526 drivers/soc/qcom/qcom_aoss.c init_waitqueue_head(&qmp->event); qmp 527 drivers/soc/qcom/qcom_aoss.c mutex_init(&qmp->tx_lock); qmp 530 drivers/soc/qcom/qcom_aoss.c qmp->msgram = devm_ioremap_resource(&pdev->dev, res); qmp 531 drivers/soc/qcom/qcom_aoss.c if (IS_ERR(qmp->msgram)) qmp 532 drivers/soc/qcom/qcom_aoss.c return PTR_ERR(qmp->msgram); qmp 534 drivers/soc/qcom/qcom_aoss.c qmp->mbox_client.dev = &pdev->dev; qmp 535 drivers/soc/qcom/qcom_aoss.c qmp->mbox_client.knows_txdone = true; qmp 536 drivers/soc/qcom/qcom_aoss.c qmp->mbox_chan = mbox_request_channel(&qmp->mbox_client, 0); qmp 537 drivers/soc/qcom/qcom_aoss.c if (IS_ERR(qmp->mbox_chan)) { qmp 539 drivers/soc/qcom/qcom_aoss.c return PTR_ERR(qmp->mbox_chan); qmp 544 drivers/soc/qcom/qcom_aoss.c "aoss-qmp", qmp); qmp 550 drivers/soc/qcom/qcom_aoss.c ret = qmp_open(qmp); qmp 554 drivers/soc/qcom/qcom_aoss.c ret = qmp_qdss_clk_add(qmp); qmp 558 drivers/soc/qcom/qcom_aoss.c ret = qmp_pd_add(qmp); qmp 562 drivers/soc/qcom/qcom_aoss.c ret = qmp_cooling_devices_register(qmp); qmp 566 drivers/soc/qcom/qcom_aoss.c platform_set_drvdata(pdev, qmp); qmp 571 drivers/soc/qcom/qcom_aoss.c qmp_qdss_clk_remove(qmp); qmp 573 drivers/soc/qcom/qcom_aoss.c qmp_close(qmp); qmp 575 drivers/soc/qcom/qcom_aoss.c mbox_free_channel(qmp->mbox_chan); qmp 582 drivers/soc/qcom/qcom_aoss.c struct qmp *qmp = platform_get_drvdata(pdev); qmp 584 drivers/soc/qcom/qcom_aoss.c qmp_qdss_clk_remove(qmp); qmp 585 drivers/soc/qcom/qcom_aoss.c qmp_pd_remove(qmp); qmp 586 drivers/soc/qcom/qcom_aoss.c qmp_cooling_devices_remove(qmp); qmp 588 drivers/soc/qcom/qcom_aoss.c qmp_close(qmp); qmp 589 drivers/soc/qcom/qcom_aoss.c mbox_free_channel(qmp->mbox_chan);