123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
- //
- // This file is provided under a dual BSD/GPLv2 license. When using or
- // redistributing this file, you may do so under either license.
- //
- // Copyright(c) 2021 Advanced Micro Devices, Inc.
- //
- // Authors: Ajit Kumar Pandey <[email protected]>
- /*
- * Hardware interface for Audio DSP on Renoir platform
- */
- #include <linux/platform_device.h>
- #include <linux/module.h>
- #include "../ops.h"
- #include "../sof-audio.h"
- #include "acp.h"
- #include "acp-dsp-offset.h"
- #define I2S_BT_INSTANCE 0
- #define I2S_SP_INSTANCE 1
- #define PDM_DMIC_INSTANCE 2
- static struct snd_soc_dai_driver renoir_sof_dai[] = {
- [I2S_BT_INSTANCE] = {
- .id = I2S_BT_INSTANCE,
- .name = "acp-sof-bt",
- .playback = {
- .rates = SNDRV_PCM_RATE_8000_96000,
- .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 |
- SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S32_LE,
- .channels_min = 2,
- .channels_max = 8,
- .rate_min = 8000,
- .rate_max = 96000,
- },
- .capture = {
- .rates = SNDRV_PCM_RATE_8000_48000,
- .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 |
- SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S32_LE,
- /* Supporting only stereo for I2S BT controller capture */
- .channels_min = 2,
- .channels_max = 2,
- .rate_min = 8000,
- .rate_max = 48000,
- },
- .probe = &acp_dai_probe,
- },
- [I2S_SP_INSTANCE] = {
- .id = I2S_SP_INSTANCE,
- .name = "acp-sof-sp",
- .playback = {
- .rates = SNDRV_PCM_RATE_8000_96000,
- .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 |
- SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S32_LE,
- .channels_min = 2,
- .channels_max = 8,
- .rate_min = 8000,
- .rate_max = 96000,
- },
- .capture = {
- .rates = SNDRV_PCM_RATE_8000_48000,
- .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 |
- SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S32_LE,
- /* Supporting only stereo for I2S SP controller capture */
- .channels_min = 2,
- .channels_max = 2,
- .rate_min = 8000,
- .rate_max = 48000,
- },
- .probe = &acp_dai_probe,
- },
- [PDM_DMIC_INSTANCE] = {
- .id = PDM_DMIC_INSTANCE,
- .name = "acp-sof-dmic",
- .capture = {
- .rates = SNDRV_PCM_RATE_8000_48000,
- .formats = SNDRV_PCM_FMTBIT_S32_LE,
- .channels_min = 2,
- .channels_max = 4,
- .rate_min = 8000,
- .rate_max = 48000,
- },
- },
- };
- /* Renoir ops */
- struct snd_sof_dsp_ops sof_renoir_ops;
- EXPORT_SYMBOL_NS(sof_renoir_ops, SND_SOC_SOF_AMD_COMMON);
- int sof_renoir_ops_init(struct snd_sof_dev *sdev)
- {
- /* common defaults */
- memcpy(&sof_renoir_ops, &sof_acp_common_ops, sizeof(struct snd_sof_dsp_ops));
- sof_renoir_ops.drv = renoir_sof_dai;
- sof_renoir_ops.num_drv = ARRAY_SIZE(renoir_sof_dai);
- return 0;
- }
- MODULE_IMPORT_NS(SND_SOC_SOF_AMD_COMMON);
- MODULE_DESCRIPTION("RENOIR SOF Driver");
- MODULE_LICENSE("Dual BSD/GPL");
|