Lines Matching defs:ipcc

14 #include <dt-bindings/mailbox/qcom-ipcc.h>
74 struct qcom_ipcc *ipcc = data;
79 hwirq = readl(ipcc->base + IPCC_REG_RECV_ID);
83 virq = irq_find_mapping(ipcc->irq_domain, hwirq);
84 writel(hwirq, ipcc->base + IPCC_REG_RECV_SIGNAL_CLEAR);
93 struct qcom_ipcc *ipcc = irq_data_get_irq_chip_data(irqd);
96 writel(hwirq, ipcc->base + IPCC_REG_RECV_SIGNAL_DISABLE);
101 struct qcom_ipcc *ipcc = irq_data_get_irq_chip_data(irqd);
104 writel(hwirq, ipcc->base + IPCC_REG_RECV_SIGNAL_ENABLE);
108 .name = "ipcc",
117 struct qcom_ipcc *ipcc = d->host_data;
120 irq_set_chip_data(irq, ipcc);
148 struct qcom_ipcc *ipcc = to_qcom_ipcc(chan->mbox);
153 writel(hwirq, ipcc->base + IPCC_REG_SEND_ID);
166 struct qcom_ipcc *ipcc = to_qcom_ipcc(mbox);
172 dev = ipcc->dev;
178 chan = &ipcc->chans[chan_id];
207 static int qcom_ipcc_setup_mbox(struct qcom_ipcc *ipcc,
213 struct device *dev = ipcc->dev;
220 ipcc->num_chans = 0;
231 ipcc->num_chans++;
236 if (!ipcc->num_chans)
239 ipcc->chans = devm_kcalloc(dev, ipcc->num_chans,
241 if (!ipcc->chans)
244 mbox = &ipcc->mbox;
246 mbox->num_chans = ipcc->num_chans;
247 mbox->chans = ipcc->chans;
258 struct qcom_ipcc *ipcc = dev_get_drvdata(dev);
262 hwirq = readl(ipcc->base + IPCC_REG_RECV_ID);
266 virq = irq_find_mapping(ipcc->irq_domain, hwirq);
276 struct qcom_ipcc *ipcc;
281 ipcc = devm_kzalloc(&pdev->dev, sizeof(*ipcc), GFP_KERNEL);
282 if (!ipcc)
285 ipcc->dev = &pdev->dev;
287 ipcc->base = devm_platform_ioremap_resource(pdev, 0);
288 if (IS_ERR(ipcc->base))
289 return PTR_ERR(ipcc->base);
291 ipcc->irq = platform_get_irq(pdev, 0);
292 if (ipcc->irq < 0)
293 return ipcc->irq;
299 ipcc->irq_domain = irq_domain_add_tree(pdev->dev.of_node,
300 &qcom_ipcc_irq_ops, ipcc);
301 if (!ipcc->irq_domain)
304 ret = qcom_ipcc_setup_mbox(ipcc, pdev->dev.of_node);
308 ret = devm_request_irq(&pdev->dev, ipcc->irq, qcom_ipcc_irq_fn,
310 IRQF_NO_THREAD, name, ipcc);
316 platform_set_drvdata(pdev, ipcc);
321 if (ipcc->num_chans)
322 mbox_controller_unregister(&ipcc->mbox);
324 irq_domain_remove(ipcc->irq_domain);
331 struct qcom_ipcc *ipcc = platform_get_drvdata(pdev);
333 disable_irq_wake(ipcc->irq);
334 irq_domain_remove(ipcc->irq_domain);
340 { .compatible = "qcom,ipcc"},
353 .name = "qcom-ipcc",