Lines Matching defs:ksproc
70 static void keystone_rproc_dsp_reset(struct keystone_rproc *ksproc)
72 reset_control_assert(ksproc->reset);
76 static int keystone_rproc_dsp_boot(struct keystone_rproc *ksproc, u32 boot_addr)
81 dev_err(ksproc->dev, "invalid boot address 0x%x, must be aligned on a 1KB boundary\n",
86 ret = regmap_write(ksproc->dev_ctrl, ksproc->boot_offset, boot_addr);
88 dev_err(ksproc->dev, "regmap_write of boot address failed, status = %d\n",
93 reset_control_deassert(ksproc->reset);
111 struct keystone_rproc *ksproc = dev_id;
113 rproc_report_crash(ksproc->rproc, RPROC_FATAL_ERROR);
143 struct keystone_rproc *ksproc =
146 rproc_vq_interrupt(ksproc->rproc, 0);
147 rproc_vq_interrupt(ksproc->rproc, 1);
155 struct keystone_rproc *ksproc = dev_id;
157 schedule_work(&ksproc->workqueue);
171 struct keystone_rproc *ksproc = rproc->priv;
174 INIT_WORK(&ksproc->workqueue, handle_event);
176 ret = request_irq(ksproc->irq_ring, keystone_rproc_vring_interrupt, 0,
177 dev_name(ksproc->dev), ksproc);
179 dev_err(ksproc->dev, "failed to enable vring interrupt, ret = %d\n",
184 ret = request_irq(ksproc->irq_fault, keystone_rproc_exception_interrupt,
185 0, dev_name(ksproc->dev), ksproc);
187 dev_err(ksproc->dev, "failed to enable exception interrupt, ret = %d\n",
192 ret = keystone_rproc_dsp_boot(ksproc, rproc->bootaddr);
199 free_irq(ksproc->irq_fault, ksproc);
201 free_irq(ksproc->irq_ring, ksproc);
202 flush_work(&ksproc->workqueue);
215 struct keystone_rproc *ksproc = rproc->priv;
217 keystone_rproc_dsp_reset(ksproc);
218 free_irq(ksproc->irq_fault, ksproc);
219 free_irq(ksproc->irq_ring, ksproc);
220 flush_work(&ksproc->workqueue);
233 struct keystone_rproc *ksproc = rproc->priv;
235 if (WARN_ON(ksproc->kick_gpio < 0))
238 gpio_set_value(ksproc->kick_gpio, 1);
251 struct keystone_rproc *ksproc = rproc->priv;
261 for (i = 0; i < ksproc->num_mems; i++) {
262 bus_addr = ksproc->mem[i].bus_addr;
263 dev_addr = ksproc->mem[i].dev_addr;
264 size = ksproc->mem[i].size;
271 va = ksproc->mem[i].cpu_addr + offset;
279 va = ksproc->mem[i].cpu_addr + offset;
296 struct keystone_rproc *ksproc)
305 ksproc->mem = devm_kcalloc(ksproc->dev, num_mems,
306 sizeof(*ksproc->mem), GFP_KERNEL);
307 if (!ksproc->mem)
313 ksproc->mem[i].cpu_addr = devm_ioremap_resource(dev, res);
314 if (IS_ERR(ksproc->mem[i].cpu_addr)) {
317 return PTR_ERR(ksproc->mem[i].cpu_addr);
319 ksproc->mem[i].bus_addr = res->start;
320 ksproc->mem[i].dev_addr =
322 ksproc->mem[i].size = resource_size(res);
325 memset((__force void *)ksproc->mem[i].cpu_addr, 0,
326 ksproc->mem[i].size);
328 ksproc->num_mems = num_mems;
334 struct keystone_rproc *ksproc)
345 ksproc->dev_ctrl =
347 if (IS_ERR(ksproc->dev_ctrl)) {
348 ret = PTR_ERR(ksproc->dev_ctrl);
353 &ksproc->boot_offset)) {
365 struct keystone_rproc *ksproc;
392 sizeof(*ksproc));
397 ksproc = rproc->priv;
398 ksproc->rproc = rproc;
399 ksproc->dev = dev;
401 ret = keystone_rproc_of_get_dev_syscon(pdev, ksproc);
405 ksproc->reset = devm_reset_control_get_exclusive(dev, NULL);
406 if (IS_ERR(ksproc->reset)) {
407 ret = PTR_ERR(ksproc->reset);
420 ret = keystone_rproc_of_get_memories(pdev, ksproc);
424 ksproc->irq_ring = platform_get_irq_byname(pdev, "vring");
425 if (ksproc->irq_ring < 0) {
426 ret = ksproc->irq_ring;
430 ksproc->irq_fault = platform_get_irq_byname(pdev, "exception");
431 if (ksproc->irq_fault < 0) {
432 ret = ksproc->irq_fault;
436 ksproc->kick_gpio = of_get_named_gpio_flags(np, "kick-gpios", 0, NULL);
437 if (ksproc->kick_gpio < 0) {
438 ret = ksproc->kick_gpio;
448 ret = reset_control_status(ksproc->reset);
454 keystone_rproc_dsp_reset(ksproc);
464 platform_set_drvdata(pdev, ksproc);
481 struct keystone_rproc *ksproc = platform_get_drvdata(pdev);
483 rproc_del(ksproc->rproc);
486 rproc_free(ksproc->rproc);