Lines Matching defs:kproc

112 	struct k3_dsp_rproc *kproc = container_of(client, struct k3_dsp_rproc,
114 struct device *dev = kproc->rproc->dev.parent;
115 const char *name = kproc->rproc->name;
135 if (msg > kproc->rproc->max_notifyid) {
140 if (rproc_vq_interrupt(kproc->rproc, msg) == IRQ_NONE)
153 struct k3_dsp_rproc *kproc = rproc->priv;
159 ret = mbox_send_message(kproc->mbox, (void *)msg);
166 static int k3_dsp_rproc_reset(struct k3_dsp_rproc *kproc)
168 struct device *dev = kproc->dev;
171 ret = reset_control_assert(kproc->reset);
177 if (kproc->data->uses_lreset)
180 ret = kproc->ti_sci->ops.dev_ops.put_device(kproc->ti_sci,
181 kproc->ti_sci_id);
184 if (reset_control_deassert(kproc->reset))
192 static int k3_dsp_rproc_release(struct k3_dsp_rproc *kproc)
194 struct device *dev = kproc->dev;
197 if (kproc->data->uses_lreset)
200 ret = kproc->ti_sci->ops.dev_ops.get_device(kproc->ti_sci,
201 kproc->ti_sci_id);
208 ret = reset_control_deassert(kproc->reset);
211 if (kproc->ti_sci->ops.dev_ops.put_device(kproc->ti_sci,
212 kproc->ti_sci_id))
230 struct k3_dsp_rproc *kproc = rproc->priv;
231 struct device *dev = kproc->dev;
234 ret = kproc->ti_sci->ops.dev_ops.get_device(kproc->ti_sci,
235 kproc->ti_sci_id);
254 struct k3_dsp_rproc *kproc = rproc->priv;
255 struct device *dev = kproc->dev;
258 ret = kproc->ti_sci->ops.dev_ops.put_device(kproc->ti_sci,
259 kproc->ti_sci_id);
275 struct k3_dsp_rproc *kproc = rproc->priv;
276 struct mbox_client *client = &kproc->client;
277 struct device *dev = kproc->dev;
287 kproc->mbox = mbox_request_channel(client, 0);
288 if (IS_ERR(kproc->mbox)) {
291 PTR_ERR(kproc->mbox));
302 ret = mbox_send_message(kproc->mbox, (void *)RP_MBOX_ECHO_REQUEST);
309 if (boot_addr & (kproc->data->boot_align_addr - 1)) {
311 boot_addr, kproc->data->boot_align_addr);
317 ret = ti_sci_proc_set_config(kproc->tsp, boot_addr, 0, 0);
321 ret = k3_dsp_rproc_release(kproc);
328 mbox_free_channel(kproc->mbox);
340 struct k3_dsp_rproc *kproc = rproc->priv;
342 mbox_free_channel(kproc->mbox);
344 k3_dsp_rproc_reset(kproc);
359 struct k3_dsp_rproc *kproc = rproc->priv;
369 for (i = 0; i < kproc->num_mems; i++) {
370 bus_addr = kproc->mem[i].bus_addr;
371 dev_addr = kproc->mem[i].dev_addr;
372 size = kproc->mem[i].size;
379 va = kproc->mem[i].cpu_addr + offset;
387 va = kproc->mem[i].cpu_addr + offset;
394 for (i = 0; i < kproc->num_rmems; i++) {
395 dev_addr = kproc->rmem[i].dev_addr;
396 size = kproc->rmem[i].size;
400 va = kproc->rmem[i].cpu_addr + offset;
416 struct k3_dsp_rproc *kproc)
418 const struct k3_dsp_dev_data *data = kproc->data;
424 num_mems = kproc->data->num_mems;
425 kproc->mem = devm_kcalloc(kproc->dev, num_mems,
426 sizeof(*kproc->mem), GFP_KERNEL);
427 if (!kproc->mem)
446 kproc->mem[i].cpu_addr = devm_ioremap_wc(dev, res->start,
448 if (!kproc->mem[i].cpu_addr) {
453 kproc->mem[i].bus_addr = res->start;
454 kproc->mem[i].dev_addr = data->mems[i].dev_addr;
455 kproc->mem[i].size = resource_size(res);
458 data->mems[i].name, &kproc->mem[i].bus_addr,
459 kproc->mem[i].size, kproc->mem[i].cpu_addr,
460 kproc->mem[i].dev_addr);
462 kproc->num_mems = num_mems;
467 static int k3_dsp_reserved_mem_init(struct k3_dsp_rproc *kproc)
469 struct device *dev = kproc->dev;
498 kproc->rmem = kcalloc(num_rmems, sizeof(*kproc->rmem), GFP_KERNEL);
499 if (!kproc->rmem) {
520 kproc->rmem[i].bus_addr = rmem->base;
522 kproc->rmem[i].dev_addr = (u32)rmem->base;
523 kproc->rmem[i].size = rmem->size;
524 kproc->rmem[i].cpu_addr = ioremap_wc(rmem->base, rmem->size);
525 if (!kproc->rmem[i].cpu_addr) {
533 i + 1, &kproc->rmem[i].bus_addr,
534 kproc->rmem[i].size, kproc->rmem[i].cpu_addr,
535 kproc->rmem[i].dev_addr);
537 kproc->num_rmems = num_rmems;
543 iounmap(kproc->rmem[i].cpu_addr);
544 kfree(kproc->rmem);
546 of_reserved_mem_device_release(kproc->dev);
550 static void k3_dsp_reserved_mem_exit(struct k3_dsp_rproc *kproc)
554 for (i = 0; i < kproc->num_rmems; i++)
555 iounmap(kproc->rmem[i].cpu_addr);
556 kfree(kproc->rmem);
558 of_reserved_mem_device_release(kproc->dev);
592 struct k3_dsp_rproc *kproc;
610 sizeof(*kproc));
620 kproc = rproc->priv;
621 kproc->rproc = rproc;
622 kproc->dev = dev;
623 kproc->data = data;
625 kproc->ti_sci = ti_sci_get_by_phandle(np, "ti,sci");
626 if (IS_ERR(kproc->ti_sci)) {
627 ret = PTR_ERR(kproc->ti_sci);
632 kproc->ti_sci = NULL;
636 ret = of_property_read_u32(np, "ti,sci-dev-id", &kproc->ti_sci_id);
642 kproc->reset = devm_reset_control_get_exclusive(dev, NULL);
643 if (IS_ERR(kproc->reset)) {
644 ret = PTR_ERR(kproc->reset);
649 kproc->tsp = k3_dsp_rproc_of_get_tsp(dev, kproc->ti_sci);
650 if (IS_ERR(kproc->tsp)) {
653 ret = PTR_ERR(kproc->tsp);
657 ret = ti_sci_proc_request(kproc->tsp);
663 ret = k3_dsp_rproc_of_get_memories(pdev, kproc);
667 ret = k3_dsp_reserved_mem_init(kproc);
678 ret = reset_control_status(kproc->reset);
685 k3_dsp_rproc_reset(kproc);
696 platform_set_drvdata(pdev, kproc);
701 k3_dsp_reserved_mem_exit(kproc);
703 ret1 = ti_sci_proc_release(kproc->tsp);
707 kfree(kproc->tsp);
709 ret1 = ti_sci_put_handle(kproc->ti_sci);
719 struct k3_dsp_rproc *kproc = platform_get_drvdata(pdev);
723 rproc_del(kproc->rproc);
725 ret = ti_sci_proc_release(kproc->tsp);
729 kfree(kproc->tsp);
731 ret = ti_sci_put_handle(kproc->ti_sci);
735 k3_dsp_reserved_mem_exit(kproc);
736 rproc_free(kproc->rproc);