1 // SPDX-License-Identifier: GPL-2.0-only 2 // 3 // Copyright(c) 2021-2022 Intel Corporation 4 // 5 // Authors: Cezary Rojewski <cezary.rojewski@intel.com> 6 // Amadeusz Slawinski <amadeuszx.slawinski@linux.intel.com> 7 // 8 9 #include <linux/device.h> 10 #include <linux/module.h> 11 #include <sound/soc.h> 12 #include <sound/soc-acpi.h> 13 14 SND_SOC_DAILINK_DEF(dummy, DAILINK_COMP_ARRAY(COMP_DUMMY())); 15 SND_SOC_DAILINK_DEF(probe_cp, DAILINK_COMP_ARRAY(COMP_CPU("Probe Extraction CPU DAI"))); 16 SND_SOC_DAILINK_DEF(platform, DAILINK_COMP_ARRAY(COMP_PLATFORM("probe-platform"))); 17 18 static struct snd_soc_dai_link probe_mb_dai_links[] = { 19 { 20 .name = "Compress Probe Capture", 21 .nonatomic = 1, 22 SND_SOC_DAILINK_REG(probe_cp, dummy, platform), 23 }, 24 }; 25 26 static int avs_probe_mb_probe(struct platform_device *pdev) 27 { 28 struct device *dev = &pdev->dev; 29 struct snd_soc_acpi_mach *mach; 30 struct snd_soc_card *card; 31 int ret; 32 33 mach = dev_get_platdata(dev); 34 35 card = devm_kzalloc(dev, sizeof(*card), GFP_KERNEL); 36 if (!card) 37 return -ENOMEM; 38 39 card->driver_name = "avs_probe_mb"; 40 card->long_name = card->name = "AVS PROBE"; 41 card->dev = dev; 42 card->owner = THIS_MODULE; 43 card->dai_link = probe_mb_dai_links; 44 card->num_links = ARRAY_SIZE(probe_mb_dai_links); 45 card->fully_routed = true; 46 47 ret = snd_soc_fixup_dai_links_platform_name(card, mach->mach_params.platform); 48 if (ret) 49 return ret; 50 51 return devm_snd_soc_register_deferrable_card(dev, card); 52 } 53 54 static const struct platform_device_id avs_probe_mb_driver_ids[] = { 55 { 56 .name = "avs_probe_mb", 57 }, 58 {}, 59 }; 60 MODULE_DEVICE_TABLE(platform, avs_probe_mb_driver_ids); 61 62 static struct platform_driver avs_probe_mb_driver = { 63 .probe = avs_probe_mb_probe, 64 .driver = { 65 .name = "avs_probe_mb", 66 .pm = &snd_soc_pm_ops, 67 }, 68 .id_table = avs_probe_mb_driver_ids, 69 }; 70 71 module_platform_driver(avs_probe_mb_driver); 72 73 MODULE_DESCRIPTION("Intel probe machine driver"); 74 MODULE_LICENSE("GPL"); 75