Lines Matching refs:adata
105 struct acp63_dev_data *adata = context; in acp63_irq_thread() local
109 pdev_index = adata->sdw_dma_dev_index; in acp63_irq_thread()
110 sdw_dma_data = dev_get_drvdata(&adata->pdev[pdev_index]->dev); in acp63_irq_thread()
113 if (adata->sdw0_dma_intr_stat[stream_index]) { in acp63_irq_thread()
116 adata->sdw0_dma_intr_stat[stream_index] = 0; in acp63_irq_thread()
120 if (adata->sdw1_dma_intr_stat[stream_index]) { in acp63_irq_thread()
123 adata->sdw1_dma_intr_stat[stream_index] = 0; in acp63_irq_thread()
131 struct acp63_dev_data *adata; in acp63_irq_handler() local
141 adata = dev_id; in acp63_irq_handler()
142 if (!adata) in acp63_irq_handler()
149 ext_intr_stat = readl(adata->acp63_base + ACP_EXTERNAL_INTR_STAT); in acp63_irq_handler()
151 writel(ACP_SDW0_STAT, adata->acp63_base + ACP_EXTERNAL_INTR_STAT); in acp63_irq_handler()
152 pdev_index = adata->sdw0_dev_index; in acp63_irq_handler()
153 amd_manager = dev_get_drvdata(&adata->pdev[pdev_index]->dev); in acp63_irq_handler()
159 ext_intr_stat1 = readl(adata->acp63_base + ACP_EXTERNAL_INTR_STAT1); in acp63_irq_handler()
161 writel(ACP_SDW1_STAT, adata->acp63_base + ACP_EXTERNAL_INTR_STAT1); in acp63_irq_handler()
162 pdev_index = adata->sdw1_dev_index; in acp63_irq_handler()
163 amd_manager = dev_get_drvdata(&adata->pdev[pdev_index]->dev); in acp63_irq_handler()
170 writel(ACP_ERROR_IRQ, adata->acp63_base + ACP_EXTERNAL_INTR_STAT); in acp63_irq_handler()
172 writel(0, adata->acp63_base + ACP_SW0_I2S_ERROR_REASON); in acp63_irq_handler()
173 writel(0, adata->acp63_base + ACP_SW1_I2S_ERROR_REASON); in acp63_irq_handler()
174 writel(0, adata->acp63_base + ACP_ERROR_STATUS); in acp63_irq_handler()
179 pdev_index = adata->pdm_dev_index; in acp63_irq_handler()
180 ps_pdm_data = dev_get_drvdata(&adata->pdev[pdev_index]->dev); in acp63_irq_handler()
181 writel(BIT(PDM_DMA_STAT), adata->acp63_base + ACP_EXTERNAL_INTR_STAT); in acp63_irq_handler()
189 writel(BIT(index), adata->acp63_base + ACP_EXTERNAL_INTR_STAT); in acp63_irq_handler()
211 adata->sdw0_dma_intr_stat[stream_id] = 1; in acp63_irq_handler()
219 adata->acp63_base + ACP_EXTERNAL_INTR_STAT1); in acp63_irq_handler()
220 adata->sdw1_dma_intr_stat[ACP_SDW1_AUDIO1_RX] = 1; in acp63_irq_handler()
226 adata->acp63_base + ACP_EXTERNAL_INTR_STAT1); in acp63_irq_handler()
227 adata->sdw1_dma_intr_stat[ACP_SDW1_AUDIO1_TX] = 1; in acp63_irq_handler()
419 static int create_acp63_platform_devs(struct pci_dev *pci, struct acp63_dev_data *adata, u32 addr) in create_acp63_platform_devs() argument
429 "%s pdev_config:0x%x pdev_count:0x%x\n", __func__, adata->pdev_config, in create_acp63_platform_devs()
430 adata->pdev_count); in create_acp63_platform_devs()
431 if (adata->pdev_config) { in create_acp63_platform_devs()
432 adata->res = devm_kzalloc(&pci->dev, sizeof(struct resource), GFP_KERNEL); in create_acp63_platform_devs()
433 if (!adata->res) { in create_acp63_platform_devs()
437 adata->res->flags = IORESOURCE_MEM; in create_acp63_platform_devs()
438 adata->res->start = addr; in create_acp63_platform_devs()
439 adata->res->end = addr + (ACP63_REG_END - ACP63_REG_START); in create_acp63_platform_devs()
443 switch (adata->pdev_config) { in create_acp63_platform_devs()
445 adata->pdm_dev_index = 0; in create_acp63_platform_devs()
447 0, adata->res, 1, NULL, 0); in create_acp63_platform_devs()
454 if (adata->pdev_count == ACP63_SDW0_MODE_DEVS) { in create_acp63_platform_devs()
463 sdw_pdata->acp_sdw_lock = &adata->acp_lock; in create_acp63_platform_devs()
464 adata->sdw0_dev_index = 0; in create_acp63_platform_devs()
465 adata->sdw_dma_dev_index = 1; in create_acp63_platform_devs()
466 acp63_fill_platform_dev_info(&pdevinfo[0], parent, adata->sdw_fw_node, in create_acp63_platform_devs()
467 "amd_sdw_manager", 0, adata->res, 1, in create_acp63_platform_devs()
470 0, adata->res, 1, NULL, 0); in create_acp63_platform_devs()
471 } else if (adata->pdev_count == ACP63_SDW0_SDW1_MODE_DEVS) { in create_acp63_platform_devs()
481 sdw_pdata[0].acp_sdw_lock = &adata->acp_lock; in create_acp63_platform_devs()
482 sdw_pdata[1].acp_sdw_lock = &adata->acp_lock; in create_acp63_platform_devs()
483 sdw_pdata->acp_sdw_lock = &adata->acp_lock; in create_acp63_platform_devs()
484 adata->sdw0_dev_index = 0; in create_acp63_platform_devs()
485 adata->sdw1_dev_index = 1; in create_acp63_platform_devs()
486 adata->sdw_dma_dev_index = 2; in create_acp63_platform_devs()
487 acp63_fill_platform_dev_info(&pdevinfo[0], parent, adata->sdw_fw_node, in create_acp63_platform_devs()
488 "amd_sdw_manager", 0, adata->res, 1, in create_acp63_platform_devs()
490 acp63_fill_platform_dev_info(&pdevinfo[1], parent, adata->sdw_fw_node, in create_acp63_platform_devs()
491 "amd_sdw_manager", 1, adata->res, 1, in create_acp63_platform_devs()
494 0, adata->res, 1, NULL, 0); in create_acp63_platform_devs()
498 if (adata->pdev_count == ACP63_SDW0_PDM_MODE_DEVS) { in create_acp63_platform_devs()
507 sdw_pdata->acp_sdw_lock = &adata->acp_lock; in create_acp63_platform_devs()
508 adata->pdm_dev_index = 0; in create_acp63_platform_devs()
509 adata->sdw0_dev_index = 1; in create_acp63_platform_devs()
510 adata->sdw_dma_dev_index = 2; in create_acp63_platform_devs()
512 0, adata->res, 1, NULL, 0); in create_acp63_platform_devs()
513 acp63_fill_platform_dev_info(&pdevinfo[1], parent, adata->sdw_fw_node, in create_acp63_platform_devs()
514 "amd_sdw_manager", 0, adata->res, 1, in create_acp63_platform_devs()
517 0, adata->res, 1, NULL, 0); in create_acp63_platform_devs()
520 } else if (adata->pdev_count == ACP63_SDW0_SDW1_PDM_MODE_DEVS) { in create_acp63_platform_devs()
529 sdw_pdata[0].acp_sdw_lock = &adata->acp_lock; in create_acp63_platform_devs()
530 sdw_pdata[1].acp_sdw_lock = &adata->acp_lock; in create_acp63_platform_devs()
531 adata->pdm_dev_index = 0; in create_acp63_platform_devs()
532 adata->sdw0_dev_index = 1; in create_acp63_platform_devs()
533 adata->sdw1_dev_index = 2; in create_acp63_platform_devs()
534 adata->sdw_dma_dev_index = 3; in create_acp63_platform_devs()
536 0, adata->res, 1, NULL, 0); in create_acp63_platform_devs()
537 acp63_fill_platform_dev_info(&pdevinfo[1], parent, adata->sdw_fw_node, in create_acp63_platform_devs()
538 "amd_sdw_manager", 0, adata->res, 1, in create_acp63_platform_devs()
540 acp63_fill_platform_dev_info(&pdevinfo[2], parent, adata->sdw_fw_node, in create_acp63_platform_devs()
541 "amd_sdw_manager", 1, adata->res, 1, in create_acp63_platform_devs()
544 0, adata->res, 1, NULL, 0); in create_acp63_platform_devs()
554 for (index = 0; index < adata->pdev_count; index++) { in create_acp63_platform_devs()
555 adata->pdev[index] = platform_device_register_full(&pdevinfo[index]); in create_acp63_platform_devs()
556 if (IS_ERR(adata->pdev[index])) { in create_acp63_platform_devs()
559 ret = PTR_ERR(adata->pdev[index]); in create_acp63_platform_devs()
566 platform_device_unregister(adata->pdev[index]); in create_acp63_platform_devs()
568 if (acp63_deinit(adata->acp63_base, &pci->dev)) in create_acp63_platform_devs()
576 struct acp63_dev_data *adata; in snd_acp63_probe() local
607 adata = devm_kzalloc(&pci->dev, sizeof(struct acp63_dev_data), in snd_acp63_probe()
609 if (!adata) { in snd_acp63_probe()
615 adata->acp63_base = devm_ioremap(&pci->dev, addr, in snd_acp63_probe()
617 if (!adata->acp63_base) { in snd_acp63_probe()
627 adata->acp_reset = true; in snd_acp63_probe()
629 pci_set_drvdata(pci, adata); in snd_acp63_probe()
630 mutex_init(&adata->acp_lock); in snd_acp63_probe()
631 ret = acp63_init(adata->acp63_base, &pci->dev); in snd_acp63_probe()
635 acp63_irq_thread, irqflags, "ACP_PCI_IRQ", adata); in snd_acp63_probe()
640 val = readl(adata->acp63_base + ACP_PIN_CONFIG); in snd_acp63_probe()
641 ret = get_acp63_device_config(val, pci, adata); in snd_acp63_probe()
647 ret = create_acp63_platform_devs(pci, adata, addr); in snd_acp63_probe()
659 if (acp63_deinit(adata->acp63_base, &pci->dev)) in snd_acp63_probe()
671 struct acp63_dev_data *adata; in snd_acp63_suspend() local
674 adata = dev_get_drvdata(dev); in snd_acp63_suspend()
675 if (adata->acp_reset) { in snd_acp63_suspend()
676 ret = acp63_deinit(adata->acp63_base, dev); in snd_acp63_suspend()
685 struct acp63_dev_data *adata; in snd_acp63_resume() local
688 adata = dev_get_drvdata(dev); in snd_acp63_resume()
689 if (adata->acp_reset) { in snd_acp63_resume()
690 ret = acp63_init(adata->acp63_base, dev); in snd_acp63_resume()
704 struct acp63_dev_data *adata; in snd_acp63_remove() local
707 adata = pci_get_drvdata(pci); in snd_acp63_remove()
708 for (index = 0; index < adata->pdev_count; index++) in snd_acp63_remove()
709 platform_device_unregister(adata->pdev[index]); in snd_acp63_remove()
710 ret = acp63_deinit(adata->acp63_base, &pci->dev); in snd_acp63_remove()