Lines Matching refs:pdsp
1495 struct knav_pdsp_info *pdsp; in knav_queue_init_pdsps() local
1499 pdsp = devm_kzalloc(dev, sizeof(*pdsp), GFP_KERNEL); in knav_queue_init_pdsps()
1500 if (!pdsp) { in knav_queue_init_pdsps()
1505 pdsp->name = knav_queue_find_name(child); in knav_queue_init_pdsps()
1506 pdsp->iram = in knav_queue_init_pdsps()
1509 pdsp->regs = in knav_queue_init_pdsps()
1512 pdsp->intd = in knav_queue_init_pdsps()
1515 pdsp->command = in knav_queue_init_pdsps()
1519 if (IS_ERR(pdsp->command) || IS_ERR(pdsp->iram) || in knav_queue_init_pdsps()
1520 IS_ERR(pdsp->regs) || IS_ERR(pdsp->intd)) { in knav_queue_init_pdsps()
1522 pdsp->name); in knav_queue_init_pdsps()
1523 if (!IS_ERR(pdsp->command)) in knav_queue_init_pdsps()
1524 devm_iounmap(dev, pdsp->command); in knav_queue_init_pdsps()
1525 if (!IS_ERR(pdsp->iram)) in knav_queue_init_pdsps()
1526 devm_iounmap(dev, pdsp->iram); in knav_queue_init_pdsps()
1527 if (!IS_ERR(pdsp->regs)) in knav_queue_init_pdsps()
1528 devm_iounmap(dev, pdsp->regs); in knav_queue_init_pdsps()
1529 if (!IS_ERR(pdsp->intd)) in knav_queue_init_pdsps()
1530 devm_iounmap(dev, pdsp->intd); in knav_queue_init_pdsps()
1531 devm_kfree(dev, pdsp); in knav_queue_init_pdsps()
1534 of_property_read_u32(child, "id", &pdsp->id); in knav_queue_init_pdsps()
1535 list_add_tail(&pdsp->list, &kdev->pdsps); in knav_queue_init_pdsps()
1537 pdsp->name, pdsp->command, pdsp->iram, pdsp->regs, in knav_queue_init_pdsps()
1538 pdsp->intd); in knav_queue_init_pdsps()
1544 struct knav_pdsp_info *pdsp) in knav_queue_stop_pdsp() argument
1549 val = readl_relaxed(&pdsp->regs->control) & ~PDSP_CTRL_ENABLE; in knav_queue_stop_pdsp()
1550 writel_relaxed(val, &pdsp->regs->control); in knav_queue_stop_pdsp()
1551 ret = knav_queue_pdsp_wait(&pdsp->regs->control, timeout, in knav_queue_stop_pdsp()
1554 dev_err(kdev->dev, "timed out on pdsp %s stop\n", pdsp->name); in knav_queue_stop_pdsp()
1557 pdsp->loaded = false; in knav_queue_stop_pdsp()
1558 pdsp->started = false; in knav_queue_stop_pdsp()
1563 struct knav_pdsp_info *pdsp) in knav_queue_load_pdsp() argument
1590 writel_relaxed(pdsp->id + 1, pdsp->command + 0x18); in knav_queue_load_pdsp()
1595 writel_relaxed(be32_to_cpu(fwdata[i]), pdsp->iram + i); in knav_queue_load_pdsp()
1602 struct knav_pdsp_info *pdsp) in knav_queue_start_pdsp() argument
1608 writel_relaxed(0xffffffff, pdsp->command); in knav_queue_start_pdsp()
1609 while (readl_relaxed(pdsp->command) != 0xffffffff) in knav_queue_start_pdsp()
1613 val = readl_relaxed(&pdsp->regs->control); in knav_queue_start_pdsp()
1615 writel_relaxed(val, &pdsp->regs->control); in knav_queue_start_pdsp()
1618 val = readl_relaxed(&pdsp->regs->control) | PDSP_CTRL_ENABLE; in knav_queue_start_pdsp()
1619 writel_relaxed(val, &pdsp->regs->control); in knav_queue_start_pdsp()
1622 ret = knav_queue_pdsp_wait(pdsp->command, timeout, 0); in knav_queue_start_pdsp()
1626 pdsp->name); in knav_queue_start_pdsp()
1634 struct knav_pdsp_info *pdsp; in knav_queue_stop_pdsps() local
1637 for_each_pdsp(kdev, pdsp) in knav_queue_stop_pdsps()
1638 knav_queue_stop_pdsp(kdev, pdsp); in knav_queue_stop_pdsps()
1643 struct knav_pdsp_info *pdsp; in knav_queue_start_pdsps() local
1653 for_each_pdsp(kdev, pdsp) { in knav_queue_start_pdsps()
1654 ret = knav_queue_load_pdsp(kdev, pdsp); in knav_queue_start_pdsps()
1656 pdsp->loaded = true; in knav_queue_start_pdsps()
1659 for_each_pdsp(kdev, pdsp) { in knav_queue_start_pdsps()
1660 if (pdsp->loaded) { in knav_queue_start_pdsps()
1661 ret = knav_queue_start_pdsp(kdev, pdsp); in knav_queue_start_pdsps()
1663 pdsp->started = true; in knav_queue_start_pdsps()