Lines Matching +full:board +full:- +full:id
1 // SPDX-License-Identifier: GPL-2.0-only
3 // Copyright(c) 2021-2022 Intel Corporation. All rights reserved.
16 #include <sound/intel-nhlt.h>
17 #include <sound/soc-acpi.h>
18 #include <sound/soc-component.h>
23 MODULE_PARM_DESC(i2s_test, "Probe I2S test-board and skip all other I2S boards");
57 if (mach->quirk_data == NULL) in dmi_match_quirk()
60 dmi_table = (struct dmi_system_id *)mach->quirk_data; in dmi_match_quirk()
72 /* supported I2S board codec configurations */
75 .id = "INT343A",
80 .tplg_filename = "rt286-tplg.bin",
83 .id = "10508825",
88 .tplg_filename = "nau8825-tplg.bin",
91 .id = "INT343B",
96 .tplg_filename = "ssm4567-tplg.bin",
99 .id = "MX98357A",
104 .tplg_filename = "max98357a-tplg.bin",
111 .id = "INT343A",
118 .tplg_filename = "rt286-tplg.bin",
121 .id = "INT343A",
128 .tplg_filename = "rt298-tplg.bin",
131 .id = "MX98927",
136 .tplg_filename = "max98927-tplg.bin",
139 .id = "10EC5663",
144 .tplg_filename = "rt5663-tplg.bin",
147 .id = "MX98373",
152 .tplg_filename = "max98373-tplg.bin",
155 .id = "MX98357A",
160 .tplg_filename = "max98357a-tplg.bin",
163 .id = "DLGS7219",
168 .tplg_filename = "da7219-tplg.bin",
171 .id = "ESSX8336",
176 .tplg_filename = "es8336-tplg.bin",
183 .id = "INT343A",
188 .tplg_filename = "rt298-tplg.bin",
191 .id = "INT34C3",
197 .tplg_filename = "tdf8532-tplg.bin",
200 .id = "MX98357A",
205 .tplg_filename = "max98357a-tplg.bin",
208 .id = "DLGS7219",
213 .tplg_filename = "da7219-tplg.bin",
220 .id = "INT343A",
225 .tplg_filename = "rt298-tplg.bin",
236 .tplg_filename = "i2s-test-tplg.bin",
243 .tplg_filename = "i2s-test-tplg.bin",
250 .tplg_filename = "i2s-test-tplg.bin",
257 .tplg_filename = "i2s-test-tplg.bin",
264 .tplg_filename = "i2s-test-tplg.bin",
271 .tplg_filename = "i2s-test-tplg.bin",
273 /* no NULL terminator, as we depend on ARRAY SIZE due to .id == NULL */
277 int id; member
282 { .id = PCI_DEVICE_ID_INTEL_##_id, .machs = (_mach), }
295 int id, i; in avs_get_i2s_boards() local
297 id = adev->base.pci->device; in avs_get_i2s_boards()
299 if (i2s_boards[i].id == id) in avs_get_i2s_boards()
312 struct platform_device *board; in avs_register_probe_board() local
316 ret = avs_probe_platform_register(adev, "probe-platform"); in avs_register_probe_board()
320 mach.mach_params.platform = "probe-platform"; in avs_register_probe_board()
322 board = platform_device_register_data(NULL, "avs_probe_mb", PLATFORM_DEVID_NONE, in avs_register_probe_board()
324 if (IS_ERR(board)) { in avs_register_probe_board()
325 dev_err(adev->dev, "probe board register failed\n"); in avs_register_probe_board()
326 return PTR_ERR(board); in avs_register_probe_board()
329 ret = devm_add_action(adev->dev, board_pdev_unregister, board); in avs_register_probe_board()
331 platform_device_unregister(board); in avs_register_probe_board()
339 struct platform_device *codec, *board; in avs_register_dmic_board() local
343 if (!adev->nhlt || in avs_register_dmic_board()
344 !intel_nhlt_has_endpoint_type(adev->nhlt, NHLT_LINK_DMIC)) { in avs_register_dmic_board()
345 dev_dbg(adev->dev, "no DMIC endpoints present\n"); in avs_register_dmic_board()
349 codec = platform_device_register_simple("dmic-codec", PLATFORM_DEVID_NONE, NULL, 0); in avs_register_dmic_board()
351 dev_err(adev->dev, "dmic codec register failed\n"); in avs_register_dmic_board()
355 ret = devm_add_action(adev->dev, board_pdev_unregister, codec); in avs_register_dmic_board()
361 ret = avs_dmic_platform_register(adev, "dmic-platform"); in avs_register_dmic_board()
365 mach.tplg_filename = "dmic-tplg.bin"; in avs_register_dmic_board()
366 mach.mach_params.platform = "dmic-platform"; in avs_register_dmic_board()
368 board = platform_device_register_data(NULL, "avs_dmic", PLATFORM_DEVID_NONE, in avs_register_dmic_board()
370 if (IS_ERR(board)) { in avs_register_dmic_board()
371 dev_err(adev->dev, "dmic board register failed\n"); in avs_register_dmic_board()
372 return PTR_ERR(board); in avs_register_dmic_board()
375 ret = devm_add_action(adev->dev, board_pdev_unregister, board); in avs_register_dmic_board()
377 platform_device_unregister(board); in avs_register_dmic_board()
386 struct platform_device *board; in avs_register_i2s_board() local
391 num_ssps = adev->hw_cfg.i2s_caps.ctrl_count; in avs_register_i2s_board()
392 if (fls(mach->mach_params.i2s_link_mask) > num_ssps) { in avs_register_i2s_board()
393 dev_err(adev->dev, "Platform supports %d SSPs but board %s requires SSP%ld\n", in avs_register_i2s_board()
394 num_ssps, mach->drv_name, in avs_register_i2s_board()
395 (unsigned long)__fls(mach->mach_params.i2s_link_mask)); in avs_register_i2s_board()
396 return -ENODEV; in avs_register_i2s_board()
399 name = devm_kasprintf(adev->dev, GFP_KERNEL, "%s.%d-platform", mach->drv_name, in avs_register_i2s_board()
400 mach->mach_params.i2s_link_mask); in avs_register_i2s_board()
402 return -ENOMEM; in avs_register_i2s_board()
404 ret = avs_i2s_platform_register(adev, name, mach->mach_params.i2s_link_mask, mach->pdata); in avs_register_i2s_board()
408 mach->mach_params.platform = name; in avs_register_i2s_board()
410 board = platform_device_register_data(NULL, mach->drv_name, mach->mach_params.i2s_link_mask, in avs_register_i2s_board()
412 if (IS_ERR(board)) { in avs_register_i2s_board()
413 dev_err(adev->dev, "ssp board register failed\n"); in avs_register_i2s_board()
414 return PTR_ERR(board); in avs_register_i2s_board()
417 ret = devm_add_action(adev->dev, board_pdev_unregister, board); in avs_register_i2s_board()
419 platform_device_unregister(board); in avs_register_i2s_board()
432 if (!adev->nhlt || !intel_nhlt_has_endpoint_type(adev->nhlt, NHLT_LINK_SSP)) { in avs_register_i2s_boards()
433 dev_dbg(adev->dev, "no I2S endpoints present\n"); in avs_register_i2s_boards()
440 num_ssps = adev->hw_cfg.i2s_caps.ctrl_count; in avs_register_i2s_boards()
449 dev_warn(adev->dev, "register i2s %s failed: %d\n", mach->drv_name, in avs_register_i2s_boards()
457 dev_dbg(adev->dev, "no I2S endpoints supported\n"); in avs_register_i2s_boards()
461 for (mach = boards->machs; mach->id[0]; mach++) { in avs_register_i2s_boards()
462 if (!acpi_dev_present(mach->id, mach->uid, -1)) in avs_register_i2s_boards()
465 if (mach->machine_quirk) in avs_register_i2s_boards()
466 if (!mach->machine_quirk(mach)) in avs_register_i2s_boards()
471 dev_warn(adev->dev, "register i2s %s failed: %d\n", mach->drv_name, ret); in avs_register_i2s_boards()
480 struct platform_device *board; in avs_register_hda_board() local
481 struct hdac_device *hdev = &codec->core; in avs_register_hda_board()
483 int ret, id; in avs_register_hda_board() local
485 pname = devm_kasprintf(adev->dev, GFP_KERNEL, "%s-platform", dev_name(&hdev->dev)); in avs_register_hda_board()
487 return -ENOMEM; in avs_register_hda_board()
495 mach.tplg_filename = devm_kasprintf(adev->dev, GFP_KERNEL, "hda-%08x-tplg.bin", in avs_register_hda_board()
496 hdev->vendor_id); in avs_register_hda_board()
498 return -ENOMEM; in avs_register_hda_board()
500 id = adev->base.core.idx * HDA_MAX_CODECS + hdev->addr; in avs_register_hda_board()
501 board = platform_device_register_data(NULL, "avs_hdaudio", id, (const void *)&mach, in avs_register_hda_board()
503 if (IS_ERR(board)) { in avs_register_hda_board()
504 dev_err(adev->dev, "hda board register failed\n"); in avs_register_hda_board()
505 return PTR_ERR(board); in avs_register_hda_board()
508 ret = devm_add_action(adev->dev, board_pdev_unregister, board); in avs_register_hda_board()
510 platform_device_unregister(board); in avs_register_hda_board()
519 struct hdac_bus *bus = &adev->base.core; in avs_register_hda_boards()
523 if (!bus->num_codecs) { in avs_register_hda_boards()
524 dev_dbg(adev->dev, "no HDA endpoints present\n"); in avs_register_hda_boards()
528 list_for_each_entry(hdev, &bus->codec_list, list) { in avs_register_hda_boards()
531 codec = dev_to_hda_codec(&hdev->dev); in avs_register_hda_boards()
535 dev_warn(adev->dev, "register hda-%08x failed: %d\n", in avs_register_hda_boards()
536 codec->core.vendor_id, ret); in avs_register_hda_boards()
549 dev_warn(adev->dev, "enumerate PROBE endpoints failed: %d\n", ret); in avs_register_all_boards()
554 dev_warn(adev->dev, "enumerate DMIC endpoints failed: %d\n", in avs_register_all_boards()
559 dev_warn(adev->dev, "enumerate I2S endpoints failed: %d\n", in avs_register_all_boards()
564 dev_warn(adev->dev, "enumerate HDA endpoints failed: %d\n", in avs_register_all_boards()
572 snd_soc_unregister_component(adev->dev); in avs_unregister_all_boards()