H A D | knav_qmss_queue.c | 1440 struct knav_pdsp_info *pdsp; knav_queue_init_pdsps() local 1445 pdsp = devm_kzalloc(dev, sizeof(*pdsp), GFP_KERNEL); for_each_child_of_node() 1446 if (!pdsp) { for_each_child_of_node() 1447 dev_err(dev, "out of memory allocating pdsp\n"); for_each_child_of_node() 1450 pdsp->name = knav_queue_find_name(child); for_each_child_of_node() 1452 &pdsp->firmware); for_each_child_of_node() 1453 if (ret < 0 || !pdsp->firmware) { for_each_child_of_node() 1454 dev_err(dev, "unknown firmware for pdsp %s\n", for_each_child_of_node() 1455 pdsp->name); for_each_child_of_node() 1456 devm_kfree(dev, pdsp); for_each_child_of_node() 1459 dev_dbg(dev, "pdsp name %s fw name :%s\n", pdsp->name, for_each_child_of_node() 1460 pdsp->firmware); for_each_child_of_node() 1462 pdsp->iram = for_each_child_of_node() 1465 pdsp->regs = for_each_child_of_node() 1468 pdsp->intd = for_each_child_of_node() 1471 pdsp->command = for_each_child_of_node() 1475 if (IS_ERR(pdsp->command) || IS_ERR(pdsp->iram) || for_each_child_of_node() 1476 IS_ERR(pdsp->regs) || IS_ERR(pdsp->intd)) { for_each_child_of_node() 1477 dev_err(dev, "failed to map pdsp %s regs\n", for_each_child_of_node() 1478 pdsp->name); for_each_child_of_node() 1479 if (!IS_ERR(pdsp->command)) for_each_child_of_node() 1480 devm_iounmap(dev, pdsp->command); for_each_child_of_node() 1481 if (!IS_ERR(pdsp->iram)) for_each_child_of_node() 1482 devm_iounmap(dev, pdsp->iram); for_each_child_of_node() 1483 if (!IS_ERR(pdsp->regs)) for_each_child_of_node() 1484 devm_iounmap(dev, pdsp->regs); for_each_child_of_node() 1485 if (!IS_ERR(pdsp->intd)) for_each_child_of_node() 1486 devm_iounmap(dev, pdsp->intd); for_each_child_of_node() 1487 devm_kfree(dev, pdsp); for_each_child_of_node() 1490 of_property_read_u32(child, "id", &pdsp->id); for_each_child_of_node() 1491 list_add_tail(&pdsp->list, &kdev->pdsps); for_each_child_of_node() 1492 dev_dbg(dev, "added pdsp %s: command %p, iram %p, regs %p, intd %p, firmware %s\n", for_each_child_of_node() 1493 pdsp->name, pdsp->command, pdsp->iram, pdsp->regs, for_each_child_of_node() 1494 pdsp->intd, pdsp->firmware); for_each_child_of_node() 1500 struct knav_pdsp_info *pdsp) knav_queue_stop_pdsp() 1505 val = readl_relaxed(&pdsp->regs->control) & ~PDSP_CTRL_ENABLE; knav_queue_stop_pdsp() 1506 writel_relaxed(val, &pdsp->regs->control); knav_queue_stop_pdsp() 1507 ret = knav_queue_pdsp_wait(&pdsp->regs->control, timeout, knav_queue_stop_pdsp() 1510 dev_err(kdev->dev, "timed out on pdsp %s stop\n", pdsp->name); knav_queue_stop_pdsp() 1517 struct knav_pdsp_info *pdsp) knav_queue_load_pdsp() 1523 ret = request_firmware(&fw, pdsp->firmware, kdev->dev); knav_queue_load_pdsp() 1525 dev_err(kdev->dev, "failed to get firmware %s for pdsp %s\n", knav_queue_load_pdsp() 1526 pdsp->firmware, pdsp->name); knav_queue_load_pdsp() 1529 writel_relaxed(pdsp->id + 1, pdsp->command + 0x18); knav_queue_load_pdsp() 1534 writel_relaxed(be32_to_cpu(fwdata[i]), pdsp->iram + i); knav_queue_load_pdsp() 1541 struct knav_pdsp_info *pdsp) knav_queue_start_pdsp() 1547 writel_relaxed(0xffffffff, pdsp->command); knav_queue_start_pdsp() 1548 while (readl_relaxed(pdsp->command) != 0xffffffff) knav_queue_start_pdsp() 1552 val = readl_relaxed(&pdsp->regs->control); knav_queue_start_pdsp() 1554 writel_relaxed(val, &pdsp->regs->control); knav_queue_start_pdsp() 1556 /* enable pdsp */ knav_queue_start_pdsp() 1557 val = readl_relaxed(&pdsp->regs->control) | PDSP_CTRL_ENABLE; knav_queue_start_pdsp() 1558 writel_relaxed(val, &pdsp->regs->control); knav_queue_start_pdsp() 1561 ret = knav_queue_pdsp_wait(pdsp->command, timeout, 0); knav_queue_start_pdsp() 1564 "timed out on pdsp %s command register wait\n", knav_queue_start_pdsp() 1565 pdsp->name); knav_queue_start_pdsp() 1573 struct knav_pdsp_info *pdsp; knav_queue_stop_pdsps() local 1576 for_each_pdsp(kdev, pdsp) knav_queue_stop_pdsps() 1577 knav_queue_stop_pdsp(kdev, pdsp); knav_queue_stop_pdsps() 1582 struct knav_pdsp_info *pdsp; knav_queue_start_pdsps() local 1587 for_each_pdsp(kdev, pdsp) { for_each_pdsp() 1588 ret = knav_queue_load_pdsp(kdev, pdsp); for_each_pdsp() 1593 for_each_pdsp(kdev, pdsp) { for_each_pdsp() 1594 ret = knav_queue_start_pdsp(kdev, pdsp); for_each_pdsp() 1725 /* get pdsp configuration values from device tree */ knav_queue_probe() 1499 knav_queue_stop_pdsp(struct knav_device *kdev, struct knav_pdsp_info *pdsp) knav_queue_stop_pdsp() argument 1516 knav_queue_load_pdsp(struct knav_device *kdev, struct knav_pdsp_info *pdsp) knav_queue_load_pdsp() argument 1540 knav_queue_start_pdsp(struct knav_device *kdev, struct knav_pdsp_info *pdsp) knav_queue_start_pdsp() argument
|