~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/sound/soc/sof/amd/vangogh.c

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
  2 //
  3 // This file is provided under a dual BSD/GPLv2 license. When using or
  4 // redistributing this file, you may do so under either license.
  5 //
  6 // Copyright(c) 2023 Advanced Micro Devices, Inc.
  7 //
  8 // Authors: Venkata Prasad Potturu <venkataprasad.potturu@amd.com>
  9 
 10 /*
 11  * Hardware interface for Audio DSP on Vangogh platform
 12  */
 13 
 14 #include <linux/platform_device.h>
 15 #include <linux/module.h>
 16 
 17 #include "../ops.h"
 18 #include "../sof-audio.h"
 19 #include "acp.h"
 20 #include "acp-dsp-offset.h"
 21 
 22 #define I2S_HS_INSTANCE         0
 23 #define I2S_BT_INSTANCE         1
 24 #define I2S_SP_INSTANCE         2
 25 #define PDM_DMIC_INSTANCE       3
 26 #define I2S_HS_VIRTUAL_INSTANCE 4
 27 
 28 static struct snd_soc_dai_driver vangogh_sof_dai[] = {
 29         [I2S_HS_INSTANCE] = {
 30                 .id = I2S_HS_INSTANCE,
 31                 .name = "acp-sof-hs",
 32                 .playback = {
 33                         .rates = SNDRV_PCM_RATE_8000_96000,
 34                         .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 |
 35                                    SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S32_LE,
 36                         .channels_min = 2,
 37                         .channels_max = 8,
 38                         .rate_min = 8000,
 39                         .rate_max = 96000,
 40                 },
 41                 .capture = {
 42                         .rates = SNDRV_PCM_RATE_8000_48000,
 43                         .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 |
 44                                    SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S32_LE,
 45                         /* Supporting only stereo for I2S HS controller capture */
 46                         .channels_min = 2,
 47                         .channels_max = 2,
 48                         .rate_min = 8000,
 49                         .rate_max = 48000,
 50                 },
 51         },
 52 
 53         [I2S_BT_INSTANCE] = {
 54                 .id = I2S_BT_INSTANCE,
 55                 .name = "acp-sof-bt",
 56                 .playback = {
 57                         .rates = SNDRV_PCM_RATE_8000_96000,
 58                         .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 |
 59                                    SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S32_LE,
 60                         .channels_min = 2,
 61                         .channels_max = 8,
 62                         .rate_min = 8000,
 63                         .rate_max = 96000,
 64                 },
 65                 .capture = {
 66                         .rates = SNDRV_PCM_RATE_8000_48000,
 67                         .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 |
 68                                    SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S32_LE,
 69                         /* Supporting only stereo for I2S BT controller capture */
 70                         .channels_min = 2,
 71                         .channels_max = 2,
 72                         .rate_min = 8000,
 73                         .rate_max = 48000,
 74                 },
 75         },
 76 
 77         [I2S_SP_INSTANCE] = {
 78                 .id = I2S_SP_INSTANCE,
 79                 .name = "acp-sof-sp",
 80                 .playback = {
 81                         .rates = SNDRV_PCM_RATE_8000_96000,
 82                         .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 |
 83                                    SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S32_LE,
 84                         .channels_min = 2,
 85                         .channels_max = 8,
 86                         .rate_min = 8000,
 87                         .rate_max = 96000,
 88                 },
 89                 .capture = {
 90                         .rates = SNDRV_PCM_RATE_8000_48000,
 91                         .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 |
 92                                    SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S32_LE,
 93                         /* Supporting only stereo for I2S SP controller capture */
 94                         .channels_min = 2,
 95                         .channels_max = 2,
 96                         .rate_min = 8000,
 97                         .rate_max = 48000,
 98                 },
 99         },
100 
101         [PDM_DMIC_INSTANCE] = {
102                 .id = PDM_DMIC_INSTANCE,
103                 .name = "acp-sof-dmic",
104                 .capture = {
105                         .rates = SNDRV_PCM_RATE_8000_48000,
106                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
107                         .channels_min = 2,
108                         .channels_max = 4,
109                         .rate_min = 8000,
110                         .rate_max = 48000,
111                 },
112         },
113 
114         [I2S_HS_VIRTUAL_INSTANCE] = {
115                 .id = I2S_HS_VIRTUAL_INSTANCE,
116                 .name = "acp-sof-hs-virtual",
117                 .playback = {
118                         .rates = SNDRV_PCM_RATE_8000_96000,
119                         .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 |
120                                            SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S32_LE,
121                         .channels_min = 2,
122                         .channels_max = 8,
123                         .rate_min = 8000,
124                         .rate_max = 96000,
125                 },
126                 .capture = {
127                         .rates = SNDRV_PCM_RATE_8000_48000,
128                         .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 |
129                                    SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S32_LE,
130                         /* Supporting only stereo for I2S HS-Virtual controller capture */
131                         .channels_min = 2,
132                         .channels_max = 2,
133                         .rate_min = 8000,
134                         .rate_max = 48000,
135                 },
136         },
137 };
138 
139 /* Vangogh ops */
140 struct snd_sof_dsp_ops sof_vangogh_ops;
141 EXPORT_SYMBOL_NS(sof_vangogh_ops, SND_SOC_SOF_AMD_COMMON);
142 
143 int sof_vangogh_ops_init(struct snd_sof_dev *sdev)
144 {
145         const struct dmi_system_id *dmi_id;
146         struct acp_quirk_entry *quirks;
147 
148         /* common defaults */
149         memcpy(&sof_vangogh_ops, &sof_acp_common_ops, sizeof(struct snd_sof_dsp_ops));
150 
151         sof_vangogh_ops.drv = vangogh_sof_dai;
152         sof_vangogh_ops.num_drv = ARRAY_SIZE(vangogh_sof_dai);
153 
154         dmi_id = dmi_first_match(acp_sof_quirk_table);
155         if (dmi_id) {
156                 quirks = dmi_id->driver_data;
157 
158                 if (quirks->signed_fw_image)
159                         sof_vangogh_ops.load_firmware = acp_sof_load_signed_firmware;
160         }
161 
162         return 0;
163 }
164 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php