smp2p 92 drivers/soc/qcom/smp2p.c struct qcom_smp2p *smp2p; smp2p 151 drivers/soc/qcom/smp2p.c static void qcom_smp2p_kick(struct qcom_smp2p *smp2p) smp2p 156 drivers/soc/qcom/smp2p.c if (smp2p->mbox_chan) { smp2p 157 drivers/soc/qcom/smp2p.c mbox_send_message(smp2p->mbox_chan, NULL); smp2p 158 drivers/soc/qcom/smp2p.c mbox_client_txdone(smp2p->mbox_chan, 0); smp2p 160 drivers/soc/qcom/smp2p.c regmap_write(smp2p->ipc_regmap, smp2p->ipc_offset, BIT(smp2p->ipc_bit)); smp2p 176 drivers/soc/qcom/smp2p.c struct qcom_smp2p *smp2p = data; smp2p 177 drivers/soc/qcom/smp2p.c unsigned smem_id = smp2p->smem_items[SMP2P_INBOUND]; smp2p 178 drivers/soc/qcom/smp2p.c unsigned pid = smp2p->remote_pid; smp2p 186 drivers/soc/qcom/smp2p.c in = smp2p->in; smp2p 192 drivers/soc/qcom/smp2p.c dev_err(smp2p->dev, smp2p 197 drivers/soc/qcom/smp2p.c smp2p->in = in; smp2p 201 drivers/soc/qcom/smp2p.c for (i = smp2p->valid_entries; i < in->valid_entries; i++) { smp2p 202 drivers/soc/qcom/smp2p.c list_for_each_entry(entry, &smp2p->inbound, node) { smp2p 210 drivers/soc/qcom/smp2p.c smp2p->valid_entries = i; smp2p 213 drivers/soc/qcom/smp2p.c list_for_each_entry(entry, &smp2p->inbound, node) { smp2p 305 drivers/soc/qcom/smp2p.c static int qcom_smp2p_inbound_entry(struct qcom_smp2p *smp2p, smp2p 311 drivers/soc/qcom/smp2p.c dev_err(smp2p->dev, "failed to add irq_domain\n"); smp2p 332 drivers/soc/qcom/smp2p.c qcom_smp2p_kick(entry->smp2p); smp2p 341 drivers/soc/qcom/smp2p.c static int qcom_smp2p_outbound_entry(struct qcom_smp2p *smp2p, smp2p 345 drivers/soc/qcom/smp2p.c struct smp2p_smem_item *out = smp2p->out; smp2p 359 drivers/soc/qcom/smp2p.c dev_err(smp2p->dev, "failed to register qcom_smem_state\n"); smp2p 366 drivers/soc/qcom/smp2p.c static int qcom_smp2p_alloc_outbound_item(struct qcom_smp2p *smp2p) smp2p 369 drivers/soc/qcom/smp2p.c unsigned smem_id = smp2p->smem_items[SMP2P_OUTBOUND]; smp2p 370 drivers/soc/qcom/smp2p.c unsigned pid = smp2p->remote_pid; smp2p 376 drivers/soc/qcom/smp2p.c dev_err(smp2p->dev, smp2p 383 drivers/soc/qcom/smp2p.c dev_err(smp2p->dev, "Unable to acquire local smp2p item\n"); smp2p 389 drivers/soc/qcom/smp2p.c out->local_pid = smp2p->local_pid; smp2p 390 drivers/soc/qcom/smp2p.c out->remote_pid = smp2p->remote_pid; smp2p 401 drivers/soc/qcom/smp2p.c qcom_smp2p_kick(smp2p); smp2p 403 drivers/soc/qcom/smp2p.c smp2p->out = out; smp2p 408 drivers/soc/qcom/smp2p.c static int smp2p_parse_ipc(struct qcom_smp2p *smp2p) smp2p 411 drivers/soc/qcom/smp2p.c struct device *dev = smp2p->dev; smp2p 421 drivers/soc/qcom/smp2p.c smp2p->ipc_regmap = syscon_node_to_regmap(syscon); smp2p 422 drivers/soc/qcom/smp2p.c if (IS_ERR(smp2p->ipc_regmap)) smp2p 423 drivers/soc/qcom/smp2p.c return PTR_ERR(smp2p->ipc_regmap); smp2p 426 drivers/soc/qcom/smp2p.c ret = of_property_read_u32_index(dev->of_node, key, 1, &smp2p->ipc_offset); smp2p 432 drivers/soc/qcom/smp2p.c ret = of_property_read_u32_index(dev->of_node, key, 2, &smp2p->ipc_bit); smp2p 445 drivers/soc/qcom/smp2p.c struct qcom_smp2p *smp2p; smp2p 450 drivers/soc/qcom/smp2p.c smp2p = devm_kzalloc(&pdev->dev, sizeof(*smp2p), GFP_KERNEL); smp2p 451 drivers/soc/qcom/smp2p.c if (!smp2p) smp2p 454 drivers/soc/qcom/smp2p.c smp2p->dev = &pdev->dev; smp2p 455 drivers/soc/qcom/smp2p.c INIT_LIST_HEAD(&smp2p->inbound); smp2p 456 drivers/soc/qcom/smp2p.c INIT_LIST_HEAD(&smp2p->outbound); smp2p 458 drivers/soc/qcom/smp2p.c platform_set_drvdata(pdev, smp2p); smp2p 462 drivers/soc/qcom/smp2p.c smp2p->smem_items, 2); smp2p 467 drivers/soc/qcom/smp2p.c ret = of_property_read_u32(pdev->dev.of_node, key, &smp2p->local_pid); smp2p 472 drivers/soc/qcom/smp2p.c ret = of_property_read_u32(pdev->dev.of_node, key, &smp2p->remote_pid); smp2p 482 drivers/soc/qcom/smp2p.c smp2p->mbox_client.dev = &pdev->dev; smp2p 483 drivers/soc/qcom/smp2p.c smp2p->mbox_client.knows_txdone = true; smp2p 484 drivers/soc/qcom/smp2p.c smp2p->mbox_chan = mbox_request_channel(&smp2p->mbox_client, 0); smp2p 485 drivers/soc/qcom/smp2p.c if (IS_ERR(smp2p->mbox_chan)) { smp2p 486 drivers/soc/qcom/smp2p.c if (PTR_ERR(smp2p->mbox_chan) != -ENODEV) smp2p 487 drivers/soc/qcom/smp2p.c return PTR_ERR(smp2p->mbox_chan); smp2p 489 drivers/soc/qcom/smp2p.c smp2p->mbox_chan = NULL; smp2p 491 drivers/soc/qcom/smp2p.c ret = smp2p_parse_ipc(smp2p); smp2p 496 drivers/soc/qcom/smp2p.c ret = qcom_smp2p_alloc_outbound_item(smp2p); smp2p 507 drivers/soc/qcom/smp2p.c entry->smp2p = smp2p; smp2p 515 drivers/soc/qcom/smp2p.c ret = qcom_smp2p_inbound_entry(smp2p, entry, node); smp2p 519 drivers/soc/qcom/smp2p.c list_add(&entry->node, &smp2p->inbound); smp2p 521 drivers/soc/qcom/smp2p.c ret = qcom_smp2p_outbound_entry(smp2p, entry, node); smp2p 525 drivers/soc/qcom/smp2p.c list_add(&entry->node, &smp2p->outbound); smp2p 530 drivers/soc/qcom/smp2p.c qcom_smp2p_kick(smp2p); smp2p 535 drivers/soc/qcom/smp2p.c "smp2p", (void *)smp2p); smp2p 545 drivers/soc/qcom/smp2p.c list_for_each_entry(entry, &smp2p->inbound, node) smp2p 548 drivers/soc/qcom/smp2p.c list_for_each_entry(entry, &smp2p->outbound, node) smp2p 551 drivers/soc/qcom/smp2p.c smp2p->out->valid_entries = 0; smp2p 554 drivers/soc/qcom/smp2p.c mbox_free_channel(smp2p->mbox_chan); smp2p 565 drivers/soc/qcom/smp2p.c struct qcom_smp2p *smp2p = platform_get_drvdata(pdev); smp2p 568 drivers/soc/qcom/smp2p.c list_for_each_entry(entry, &smp2p->inbound, node) smp2p 571 drivers/soc/qcom/smp2p.c list_for_each_entry(entry, &smp2p->outbound, node) smp2p 574 drivers/soc/qcom/smp2p.c mbox_free_channel(smp2p->mbox_chan); smp2p 576 drivers/soc/qcom/smp2p.c smp2p->out->valid_entries = 0;