1*8d4ba1beSPierre-Louis Bossart // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) 2*8d4ba1beSPierre-Louis Bossart // 3*8d4ba1beSPierre-Louis Bossart // This file is provided under a dual BSD/GPLv2 license. When using or 4*8d4ba1beSPierre-Louis Bossart // redistributing this file, you may do so under either license. 5*8d4ba1beSPierre-Louis Bossart // 6*8d4ba1beSPierre-Louis Bossart // Copyright(c) 2018-2021 Intel Corporation. All rights reserved. 7*8d4ba1beSPierre-Louis Bossart // 8*8d4ba1beSPierre-Louis Bossart // Author: Liam Girdwood <liam.r.girdwood@linux.intel.com> 9*8d4ba1beSPierre-Louis Bossart // 10*8d4ba1beSPierre-Louis Bossart 11*8d4ba1beSPierre-Louis Bossart #include <linux/module.h> 12*8d4ba1beSPierre-Louis Bossart #include <linux/pci.h> 13*8d4ba1beSPierre-Louis Bossart #include <sound/soc-acpi.h> 14*8d4ba1beSPierre-Louis Bossart #include <sound/soc-acpi-intel-match.h> 15*8d4ba1beSPierre-Louis Bossart #include <sound/sof.h> 16*8d4ba1beSPierre-Louis Bossart #include "../ops.h" 17*8d4ba1beSPierre-Louis Bossart #include "../sof-pci-dev.h" 18*8d4ba1beSPierre-Louis Bossart 19*8d4ba1beSPierre-Louis Bossart /* platform specific devices */ 20*8d4ba1beSPierre-Louis Bossart #include "hda.h" 21*8d4ba1beSPierre-Louis Bossart 22*8d4ba1beSPierre-Louis Bossart static const struct sof_dev_desc bxt_desc = { 23*8d4ba1beSPierre-Louis Bossart .machines = snd_soc_acpi_intel_bxt_machines, 24*8d4ba1beSPierre-Louis Bossart .use_acpi_target_states = true, 25*8d4ba1beSPierre-Louis Bossart .resindex_lpe_base = 0, 26*8d4ba1beSPierre-Louis Bossart .resindex_pcicfg_base = -1, 27*8d4ba1beSPierre-Louis Bossart .resindex_imr_base = -1, 28*8d4ba1beSPierre-Louis Bossart .irqindex_host_ipc = -1, 29*8d4ba1beSPierre-Louis Bossart .resindex_dma_base = -1, 30*8d4ba1beSPierre-Louis Bossart .chip_info = &apl_chip_info, 31*8d4ba1beSPierre-Louis Bossart .default_fw_path = "intel/sof", 32*8d4ba1beSPierre-Louis Bossart .default_tplg_path = "intel/sof-tplg", 33*8d4ba1beSPierre-Louis Bossart .default_fw_filename = "sof-apl.ri", 34*8d4ba1beSPierre-Louis Bossart .nocodec_tplg_filename = "sof-apl-nocodec.tplg", 35*8d4ba1beSPierre-Louis Bossart .ops = &sof_apl_ops, 36*8d4ba1beSPierre-Louis Bossart }; 37*8d4ba1beSPierre-Louis Bossart 38*8d4ba1beSPierre-Louis Bossart static const struct sof_dev_desc glk_desc = { 39*8d4ba1beSPierre-Louis Bossart .machines = snd_soc_acpi_intel_glk_machines, 40*8d4ba1beSPierre-Louis Bossart .use_acpi_target_states = true, 41*8d4ba1beSPierre-Louis Bossart .resindex_lpe_base = 0, 42*8d4ba1beSPierre-Louis Bossart .resindex_pcicfg_base = -1, 43*8d4ba1beSPierre-Louis Bossart .resindex_imr_base = -1, 44*8d4ba1beSPierre-Louis Bossart .irqindex_host_ipc = -1, 45*8d4ba1beSPierre-Louis Bossart .resindex_dma_base = -1, 46*8d4ba1beSPierre-Louis Bossart .chip_info = &apl_chip_info, 47*8d4ba1beSPierre-Louis Bossart .default_fw_path = "intel/sof", 48*8d4ba1beSPierre-Louis Bossart .default_tplg_path = "intel/sof-tplg", 49*8d4ba1beSPierre-Louis Bossart .default_fw_filename = "sof-glk.ri", 50*8d4ba1beSPierre-Louis Bossart .nocodec_tplg_filename = "sof-glk-nocodec.tplg", 51*8d4ba1beSPierre-Louis Bossart .ops = &sof_apl_ops, 52*8d4ba1beSPierre-Louis Bossart }; 53*8d4ba1beSPierre-Louis Bossart 54*8d4ba1beSPierre-Louis Bossart /* PCI IDs */ 55*8d4ba1beSPierre-Louis Bossart static const struct pci_device_id sof_pci_ids[] = { 56*8d4ba1beSPierre-Louis Bossart { PCI_DEVICE(0x8086, 0x5a98), /* BXT-P (ApolloLake) */ 57*8d4ba1beSPierre-Louis Bossart .driver_data = (unsigned long)&bxt_desc}, 58*8d4ba1beSPierre-Louis Bossart { PCI_DEVICE(0x8086, 0x1a98),/* BXT-T */ 59*8d4ba1beSPierre-Louis Bossart .driver_data = (unsigned long)&bxt_desc}, 60*8d4ba1beSPierre-Louis Bossart { PCI_DEVICE(0x8086, 0x3198), /* GeminiLake */ 61*8d4ba1beSPierre-Louis Bossart .driver_data = (unsigned long)&glk_desc}, 62*8d4ba1beSPierre-Louis Bossart { 0, } 63*8d4ba1beSPierre-Louis Bossart }; 64*8d4ba1beSPierre-Louis Bossart MODULE_DEVICE_TABLE(pci, sof_pci_ids); 65*8d4ba1beSPierre-Louis Bossart 66*8d4ba1beSPierre-Louis Bossart /* pci_driver definition */ 67*8d4ba1beSPierre-Louis Bossart static struct pci_driver snd_sof_pci_intel_apl_driver = { 68*8d4ba1beSPierre-Louis Bossart .name = "sof-audio-pci-intel-apl", 69*8d4ba1beSPierre-Louis Bossart .id_table = sof_pci_ids, 70*8d4ba1beSPierre-Louis Bossart .probe = sof_pci_probe, 71*8d4ba1beSPierre-Louis Bossart .remove = sof_pci_remove, 72*8d4ba1beSPierre-Louis Bossart .shutdown = sof_pci_shutdown, 73*8d4ba1beSPierre-Louis Bossart .driver = { 74*8d4ba1beSPierre-Louis Bossart .pm = &sof_pci_pm, 75*8d4ba1beSPierre-Louis Bossart }, 76*8d4ba1beSPierre-Louis Bossart }; 77*8d4ba1beSPierre-Louis Bossart module_pci_driver(snd_sof_pci_intel_apl_driver); 78*8d4ba1beSPierre-Louis Bossart 79*8d4ba1beSPierre-Louis Bossart MODULE_LICENSE("Dual BSD/GPL"); 80*8d4ba1beSPierre-Louis Bossart MODULE_IMPORT_NS(SND_SOC_SOF_INTEL_HDA_COMMON); 81*8d4ba1beSPierre-Louis Bossart MODULE_IMPORT_NS(SND_SOC_SOF_PCI_DEV); 82