Lines Matching refs:adata
111 int acp_machine_select(struct acp_dev_data *adata) in acp_machine_select() argument
116 if (adata->flag == FLAG_AMD_LEGACY_ONLY_DMIC) { in acp_machine_select()
117 platform = adata->platform; in acp_machine_select()
118 adata->mach_dev = platform_device_register_data(adata->dev, "acp-pdm-mach", in acp_machine_select()
122 size = sizeof(*adata->machines); in acp_machine_select()
123 mach = snd_soc_acpi_find_machine(adata->machines); in acp_machine_select()
125 dev_err(adata->dev, "warning: No matching ASoC machine driver found\n"); in acp_machine_select()
128 adata->mach_dev = platform_device_register_data(adata->dev, mach->drv_name, in acp_machine_select()
131 if (IS_ERR(adata->mach_dev)) in acp_machine_select()
132 dev_warn(adata->dev, "Unable to register Machine device\n"); in acp_machine_select()
139 struct acp_dev_data *adata = data; in i2s_irq_handler() local
140 struct acp_resource *rsrc = adata->rsrc; in i2s_irq_handler()
145 if (!adata) in i2s_irq_handler()
148 if (adata->rsrc->no_of_ctrls == 2) in i2s_irq_handler()
149 ext_intr_stat1 = readl(ACP_EXTERNAL_INTR_STAT(adata, (rsrc->irqp_used - 1))); in i2s_irq_handler()
151 ext_intr_stat = readl(ACP_EXTERNAL_INTR_STAT(adata, rsrc->irqp_used)); in i2s_irq_handler()
153 spin_lock(&adata->acp_lock); in i2s_irq_handler()
154 list_for_each_entry(stream, &adata->stream_list, list) { in i2s_irq_handler()
157 ACP_EXTERNAL_INTR_STAT(adata, rsrc->irqp_used)); in i2s_irq_handler()
161 if (adata->rsrc->no_of_ctrls == 2) { in i2s_irq_handler()
163 writel(stream->irq_bit, ACP_EXTERNAL_INTR_STAT(adata, in i2s_irq_handler()
170 spin_unlock(&adata->acp_lock); in i2s_irq_handler()
177 void config_pte_for_stream(struct acp_dev_data *adata, struct acp_stream *stream) in config_pte_for_stream() argument
179 struct acp_resource *rsrc = adata->rsrc; in config_pte_for_stream()
185 writel((reg_val + GRP1_OFFSET) | BIT(31), adata->acp_base + ACPAXI2AXI_ATU_BASE_ADDR_GRP_1); in config_pte_for_stream()
186 writel(PAGE_SIZE_4K_ENABLE, adata->acp_base + ACPAXI2AXI_ATU_PAGE_SIZE_GRP_1); in config_pte_for_stream()
188 writel((reg_val + GRP2_OFFSET) | BIT(31), adata->acp_base + ACPAXI2AXI_ATU_BASE_ADDR_GRP_2); in config_pte_for_stream()
189 writel(PAGE_SIZE_4K_ENABLE, adata->acp_base + ACPAXI2AXI_ATU_PAGE_SIZE_GRP_2); in config_pte_for_stream()
191 writel(reg_val | BIT(31), adata->acp_base + ACPAXI2AXI_ATU_BASE_ADDR_GRP_5); in config_pte_for_stream()
192 writel(PAGE_SIZE_4K_ENABLE, adata->acp_base + ACPAXI2AXI_ATU_PAGE_SIZE_GRP_5); in config_pte_for_stream()
194 writel(0x01, adata->acp_base + ACPAXI2AXI_ATU_CTRL); in config_pte_for_stream()
198 void config_acp_dma(struct acp_dev_data *adata, struct acp_stream *stream, int size) in config_acp_dma() argument
201 struct acp_resource *rsrc = adata->rsrc; in config_acp_dma()
207 switch (adata->platform) { in config_acp_dma()
233 dev_err(adata->dev, "Invalid dai id %x\n", stream->dai_id); in config_acp_dma()
246 writel(low, adata->acp_base + rsrc->scratch_reg_offset + val); in config_acp_dma()
248 writel(high, adata->acp_base + rsrc->scratch_reg_offset + val + 4); in config_acp_dma()
261 struct acp_dev_data *adata = dev_get_drvdata(dev); in acp_dma_open() local
311 writel(1, ACP_EXTERNAL_INTR_ENB(adata)); in acp_dma_open()
313 spin_lock_irq(&adata->acp_lock); in acp_dma_open()
314 list_add_tail(&stream->list, &adata->stream_list); in acp_dma_open()
315 spin_unlock_irq(&adata->acp_lock); in acp_dma_open()
324 struct acp_dev_data *adata = snd_soc_component_get_drvdata(component); in acp_dma_hw_params() local
329 config_pte_for_stream(adata, stream); in acp_dma_hw_params()
330 config_acp_dma(adata, stream, size); in acp_dma_hw_params()
339 struct acp_dev_data *adata = dev_get_drvdata(dev); in acp_dma_pointer() local
347 bytescount = acp_get_byte_count(adata, stream->dai_id, substream->stream); in acp_dma_pointer()
371 struct acp_dev_data *adata = dev_get_drvdata(dev); in acp_dma_close() local
375 spin_lock_irq(&adata->acp_lock); in acp_dma_close()
377 spin_unlock_irq(&adata->acp_lock); in acp_dma_close()
395 struct acp_dev_data *adata = dev_get_drvdata(dev); in acp_platform_register() local
399 status = devm_request_irq(dev, adata->i2s_irq, i2s_irq_handler, in acp_platform_register()
400 IRQF_SHARED, "ACP_I2S_IRQ", adata); in acp_platform_register()
407 adata->dai_driver, in acp_platform_register()
408 adata->num_dai); in acp_platform_register()
414 INIT_LIST_HEAD(&adata->stream_list); in acp_platform_register()
415 spin_lock_init(&adata->acp_lock); in acp_platform_register()
423 struct acp_dev_data *adata = dev_get_drvdata(dev); in acp_platform_unregister() local
425 if (adata->mach_dev) in acp_platform_unregister()
426 platform_device_unregister(adata->mach_dev); in acp_platform_unregister()