18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * linux/sound/arm/pxa2xx-pcm.c -- ALSA PCM interface for the Intel PXA2xx chip 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Author: Nicolas Pitre 68c2ecf20Sopenharmony_ci * Created: Nov 30, 2004 78c2ecf20Sopenharmony_ci * Copyright: (C) 2004 MontaVista Software, Inc. 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#include <linux/dma-mapping.h> 118c2ecf20Sopenharmony_ci#include <linux/module.h> 128c2ecf20Sopenharmony_ci#include <linux/dmaengine.h> 138c2ecf20Sopenharmony_ci#include <linux/of.h> 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci#include <sound/core.h> 168c2ecf20Sopenharmony_ci#include <sound/soc.h> 178c2ecf20Sopenharmony_ci#include <sound/pxa2xx-lib.h> 188c2ecf20Sopenharmony_ci#include <sound/dmaengine_pcm.h> 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_cistatic const struct snd_soc_component_driver pxa2xx_soc_platform = { 218c2ecf20Sopenharmony_ci .pcm_construct = pxa2xx_soc_pcm_new, 228c2ecf20Sopenharmony_ci .pcm_destruct = pxa2xx_soc_pcm_free, 238c2ecf20Sopenharmony_ci .open = pxa2xx_soc_pcm_open, 248c2ecf20Sopenharmony_ci .close = pxa2xx_soc_pcm_close, 258c2ecf20Sopenharmony_ci .hw_params = pxa2xx_soc_pcm_hw_params, 268c2ecf20Sopenharmony_ci .hw_free = pxa2xx_soc_pcm_hw_free, 278c2ecf20Sopenharmony_ci .prepare = pxa2xx_soc_pcm_prepare, 288c2ecf20Sopenharmony_ci .trigger = pxa2xx_soc_pcm_trigger, 298c2ecf20Sopenharmony_ci .pointer = pxa2xx_soc_pcm_pointer, 308c2ecf20Sopenharmony_ci .mmap = pxa2xx_soc_pcm_mmap, 318c2ecf20Sopenharmony_ci}; 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_cistatic int pxa2xx_soc_platform_probe(struct platform_device *pdev) 348c2ecf20Sopenharmony_ci{ 358c2ecf20Sopenharmony_ci return devm_snd_soc_register_component(&pdev->dev, &pxa2xx_soc_platform, 368c2ecf20Sopenharmony_ci NULL, 0); 378c2ecf20Sopenharmony_ci} 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_cistatic struct platform_driver pxa_pcm_driver = { 408c2ecf20Sopenharmony_ci .driver = { 418c2ecf20Sopenharmony_ci .name = "pxa-pcm-audio", 428c2ecf20Sopenharmony_ci }, 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ci .probe = pxa2xx_soc_platform_probe, 458c2ecf20Sopenharmony_ci}; 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_cimodule_platform_driver(pxa_pcm_driver); 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ciMODULE_AUTHOR("Nicolas Pitre"); 508c2ecf20Sopenharmony_ciMODULE_DESCRIPTION("Intel PXA2xx PCM DMA module"); 518c2ecf20Sopenharmony_ciMODULE_LICENSE("GPL"); 528c2ecf20Sopenharmony_ciMODULE_ALIAS("platform:pxa-pcm-audio"); 53