Lines Matching defs:pdsp
1495 struct knav_pdsp_info *pdsp;
1499 pdsp = devm_kzalloc(dev, sizeof(*pdsp), GFP_KERNEL);
1500 if (!pdsp) {
1501 dev_err(dev, "out of memory allocating pdsp\n");
1504 pdsp->name = knav_queue_find_name(child);
1505 pdsp->iram =
1508 pdsp->regs =
1511 pdsp->intd =
1514 pdsp->command =
1518 if (IS_ERR(pdsp->command) || IS_ERR(pdsp->iram) ||
1519 IS_ERR(pdsp->regs) || IS_ERR(pdsp->intd)) {
1520 dev_err(dev, "failed to map pdsp %s regs\n",
1521 pdsp->name);
1522 if (!IS_ERR(pdsp->command))
1523 devm_iounmap(dev, pdsp->command);
1524 if (!IS_ERR(pdsp->iram))
1525 devm_iounmap(dev, pdsp->iram);
1526 if (!IS_ERR(pdsp->regs))
1527 devm_iounmap(dev, pdsp->regs);
1528 if (!IS_ERR(pdsp->intd))
1529 devm_iounmap(dev, pdsp->intd);
1530 devm_kfree(dev, pdsp);
1533 of_property_read_u32(child, "id", &pdsp->id);
1534 list_add_tail(&pdsp->list, &kdev->pdsps);
1535 dev_dbg(dev, "added pdsp %s: command %p, iram %p, regs %p, intd %p\n",
1536 pdsp->name, pdsp->command, pdsp->iram, pdsp->regs,
1537 pdsp->intd);
1543 struct knav_pdsp_info *pdsp)
1548 val = readl_relaxed(&pdsp->regs->control) & ~PDSP_CTRL_ENABLE;
1549 writel_relaxed(val, &pdsp->regs->control);
1550 ret = knav_queue_pdsp_wait(&pdsp->regs->control, timeout,
1553 dev_err(kdev->dev, "timed out on pdsp %s stop\n", pdsp->name);
1556 pdsp->loaded = false;
1557 pdsp->started = false;
1562 struct knav_pdsp_info *pdsp)
1582 dev_err(kdev->dev, "failed to get firmware for pdsp\n");
1589 writel_relaxed(pdsp->id + 1, pdsp->command + 0x18);
1594 writel_relaxed(be32_to_cpu(fwdata[i]), pdsp->iram + i);
1601 struct knav_pdsp_info *pdsp)
1607 writel_relaxed(0xffffffff, pdsp->command);
1608 while (readl_relaxed(pdsp->command) != 0xffffffff)
1612 val = readl_relaxed(&pdsp->regs->control);
1614 writel_relaxed(val, &pdsp->regs->control);
1616 /* enable pdsp */
1617 val = readl_relaxed(&pdsp->regs->control) | PDSP_CTRL_ENABLE;
1618 writel_relaxed(val, &pdsp->regs->control);
1621 ret = knav_queue_pdsp_wait(pdsp->command, timeout, 0);
1624 "timed out on pdsp %s command register wait\n",
1625 pdsp->name);
1633 struct knav_pdsp_info *pdsp;
1636 for_each_pdsp(kdev, pdsp)
1637 knav_queue_stop_pdsp(kdev, pdsp);
1642 struct knav_pdsp_info *pdsp;
1646 /* now load them all. We return success even if pdsp
1650 * it and init the range only if pdsp is started.
1652 for_each_pdsp(kdev, pdsp) {
1653 ret = knav_queue_load_pdsp(kdev, pdsp);
1655 pdsp->loaded = true;
1658 for_each_pdsp(kdev, pdsp) {
1659 if (pdsp->loaded) {
1660 ret = knav_queue_start_pdsp(kdev, pdsp);
1662 pdsp->started = true;
1812 /* get pdsp configuration values from device tree */