Lines Matching refs:pdsp

1497 	struct knav_pdsp_info *pdsp;
1501 pdsp = devm_kzalloc(dev, sizeof(*pdsp), GFP_KERNEL);
1502 if (!pdsp) {
1504 dev_err(dev, "out of memory allocating pdsp\n");
1507 pdsp->name = knav_queue_find_name(child);
1508 pdsp->iram =
1511 pdsp->regs =
1514 pdsp->intd =
1517 pdsp->command =
1521 if (IS_ERR(pdsp->command) || IS_ERR(pdsp->iram) ||
1522 IS_ERR(pdsp->regs) || IS_ERR(pdsp->intd)) {
1523 dev_err(dev, "failed to map pdsp %s regs\n",
1524 pdsp->name);
1525 if (!IS_ERR(pdsp->command))
1526 devm_iounmap(dev, pdsp->command);
1527 if (!IS_ERR(pdsp->iram))
1528 devm_iounmap(dev, pdsp->iram);
1529 if (!IS_ERR(pdsp->regs))
1530 devm_iounmap(dev, pdsp->regs);
1531 if (!IS_ERR(pdsp->intd))
1532 devm_iounmap(dev, pdsp->intd);
1533 devm_kfree(dev, pdsp);
1536 of_property_read_u32(child, "id", &pdsp->id);
1537 list_add_tail(&pdsp->list, &kdev->pdsps);
1538 dev_dbg(dev, "added pdsp %s: command %p, iram %p, regs %p, intd %p\n",
1539 pdsp->name, pdsp->command, pdsp->iram, pdsp->regs,
1540 pdsp->intd);
1546 struct knav_pdsp_info *pdsp)
1551 val = readl_relaxed(&pdsp->regs->control) & ~PDSP_CTRL_ENABLE;
1552 writel_relaxed(val, &pdsp->regs->control);
1553 ret = knav_queue_pdsp_wait(&pdsp->regs->control, timeout,
1556 dev_err(kdev->dev, "timed out on pdsp %s stop\n", pdsp->name);
1559 pdsp->loaded = false;
1560 pdsp->started = false;
1565 struct knav_pdsp_info *pdsp)
1585 dev_err(kdev->dev, "failed to get firmware for pdsp\n");
1592 writel_relaxed(pdsp->id + 1, pdsp->command + 0x18);
1597 writel_relaxed(be32_to_cpu(fwdata[i]), pdsp->iram + i);
1604 struct knav_pdsp_info *pdsp)
1610 writel_relaxed(0xffffffff, pdsp->command);
1611 while (readl_relaxed(pdsp->command) != 0xffffffff)
1615 val = readl_relaxed(&pdsp->regs->control);
1617 writel_relaxed(val, &pdsp->regs->control);
1619 /* enable pdsp */
1620 val = readl_relaxed(&pdsp->regs->control) | PDSP_CTRL_ENABLE;
1621 writel_relaxed(val, &pdsp->regs->control);
1624 ret = knav_queue_pdsp_wait(pdsp->command, timeout, 0);
1627 "timed out on pdsp %s command register wait\n",
1628 pdsp->name);
1636 struct knav_pdsp_info *pdsp;
1639 for_each_pdsp(kdev, pdsp)
1640 knav_queue_stop_pdsp(kdev, pdsp);
1645 struct knav_pdsp_info *pdsp;
1649 /* now load them all. We return success even if pdsp
1653 * it and init the range only if pdsp is started.
1655 for_each_pdsp(kdev, pdsp) {
1656 ret = knav_queue_load_pdsp(kdev, pdsp);
1658 pdsp->loaded = true;
1661 for_each_pdsp(kdev, pdsp) {
1662 if (pdsp->loaded) {
1663 ret = knav_queue_start_pdsp(kdev, pdsp);
1665 pdsp->started = true;
1813 /* get pdsp configuration values from device tree */