|
21 | 21 | #include <linux/dma-mapping.h>
|
22 | 22 |
|
23 | 23 | #include "amd.h"
|
| 24 | +#include "../mach-config.h" |
| 25 | +#include "acp-mach.h" |
24 | 26 |
|
25 | 27 | #define DRV_NAME "acp_i2s_dma"
|
26 | 28 |
|
@@ -69,20 +71,25 @@ static const struct snd_pcm_hardware acp_pcm_hardware_capture = {
|
69 | 71 | int acp_machine_select(struct acp_dev_data *adata)
|
70 | 72 | {
|
71 | 73 | struct snd_soc_acpi_mach *mach;
|
72 |
| - int size; |
73 |
| - |
74 |
| - size = sizeof(*adata->machines); |
75 |
| - mach = snd_soc_acpi_find_machine(adata->machines); |
76 |
| - if (!mach) { |
77 |
| - dev_err(adata->dev, "warning: No matching ASoC machine driver found\n"); |
78 |
| - return -EINVAL; |
| 74 | + int size, platform; |
| 75 | + |
| 76 | + if (adata->flag == FLAG_AMD_LEGACY_ONLY_DMIC) { |
| 77 | + platform = adata->platform; |
| 78 | + adata->mach_dev = platform_device_register_data(adata->dev, "acp-pdm-mach", |
| 79 | + PLATFORM_DEVID_NONE, &platform, |
| 80 | + sizeof(platform)); |
| 81 | + } else { |
| 82 | + size = sizeof(*adata->machines); |
| 83 | + mach = snd_soc_acpi_find_machine(adata->machines); |
| 84 | + if (!mach) { |
| 85 | + dev_err(adata->dev, "warning: No matching ASoC machine driver found\n"); |
| 86 | + return -EINVAL; |
| 87 | + } |
| 88 | + adata->mach_dev = platform_device_register_data(adata->dev, mach->drv_name, |
| 89 | + PLATFORM_DEVID_NONE, mach, size); |
79 | 90 | }
|
80 |
| - |
81 |
| - adata->mach_dev = platform_device_register_data(adata->dev, mach->drv_name, |
82 |
| - PLATFORM_DEVID_NONE, mach, size); |
83 | 91 | if (IS_ERR(adata->mach_dev))
|
84 | 92 | dev_warn(adata->dev, "Unable to register Machine device\n");
|
85 |
| - |
86 | 93 | return 0;
|
87 | 94 | }
|
88 | 95 | EXPORT_SYMBOL_NS_GPL(acp_machine_select, SND_SOC_ACP_COMMON);
|
|
0 commit comments