brintos

brintos / linux-shallow public Read only

0
0
Text · 4.4 KiB · a840634 Raw
150 lines · c
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 or4// redistributing this file, you may do so under either license.5//6// Copyright(c) 2018 Intel Corporation7//8// Author: Liam Girdwood <liam.r.girdwood@linux.intel.com>9//10 11#include <linux/module.h>12#include <linux/pci.h>13#include <sound/soc-acpi.h>14#include <sound/soc-acpi-intel-match.h>15#include <sound/sof.h>16#include "../ops.h"17#include "../sof-pci-dev.h"18 19/* platform specific devices */20#include "hda.h"21 22static const struct sof_dev_desc cnl_desc = {23	.machines		= snd_soc_acpi_intel_cnl_machines,24	.alt_machines		= snd_soc_acpi_intel_cnl_sdw_machines,25	.use_acpi_target_states	= true,26	.resindex_lpe_base	= 0,27	.resindex_pcicfg_base	= -1,28	.resindex_imr_base	= -1,29	.irqindex_host_ipc	= -1,30	.chip_info = &cnl_chip_info,31	.ipc_supported_mask	= BIT(SOF_IPC_TYPE_3) | BIT(SOF_IPC_TYPE_4),32	.ipc_default		= SOF_IPC_TYPE_3,33	.dspless_mode_supported	= true,		/* Only supported for HDaudio */34	.default_fw_path = {35		[SOF_IPC_TYPE_3] = "intel/sof",36		[SOF_IPC_TYPE_4] = "intel/avs/cnl",37	},38	.default_lib_path = {39		[SOF_IPC_TYPE_4] = "intel/avs-lib/cnl",40	},41	.default_tplg_path = {42		[SOF_IPC_TYPE_3] = "intel/sof-tplg",43		[SOF_IPC_TYPE_4] = "intel/avs-tplg",44	},45	.default_fw_filename = {46		[SOF_IPC_TYPE_3] = "sof-cnl.ri",47		[SOF_IPC_TYPE_4] = "dsp_basefw.bin",48	},49	.nocodec_tplg_filename = "sof-cnl-nocodec.tplg",50	.ops = &sof_cnl_ops,51	.ops_init = sof_cnl_ops_init,52	.ops_free = hda_ops_free,53};54 55static const struct sof_dev_desc cfl_desc = {56	.machines		= snd_soc_acpi_intel_cfl_machines,57	.alt_machines		= snd_soc_acpi_intel_cfl_sdw_machines,58	.use_acpi_target_states	= true,59	.resindex_lpe_base	= 0,60	.resindex_pcicfg_base	= -1,61	.resindex_imr_base	= -1,62	.irqindex_host_ipc	= -1,63	.chip_info = &cnl_chip_info,64	.ipc_supported_mask	= BIT(SOF_IPC_TYPE_3) | BIT(SOF_IPC_TYPE_4),65	.ipc_default		= SOF_IPC_TYPE_3,66	.dspless_mode_supported	= true,		/* Only supported for HDaudio */67	.default_fw_path = {68		[SOF_IPC_TYPE_3] = "intel/sof",69		[SOF_IPC_TYPE_4] = "intel/avs/cnl",70	},71	.default_lib_path = {72		[SOF_IPC_TYPE_4] = "intel/avs-lib/cnl",73	},74	.default_tplg_path = {75		[SOF_IPC_TYPE_3] = "intel/sof-tplg",76		[SOF_IPC_TYPE_4] = "intel/avs-tplg",77	},78	.default_fw_filename = {79		[SOF_IPC_TYPE_3] = "sof-cfl.ri",80		[SOF_IPC_TYPE_4] = "dsp_basefw.bin",81	},82	.nocodec_tplg_filename = "sof-cnl-nocodec.tplg",83	.ops = &sof_cnl_ops,84	.ops_init = sof_cnl_ops_init,85	.ops_free = hda_ops_free,86};87 88static const struct sof_dev_desc cml_desc = {89	.machines		= snd_soc_acpi_intel_cml_machines,90	.alt_machines		= snd_soc_acpi_intel_cml_sdw_machines,91	.use_acpi_target_states	= true,92	.resindex_lpe_base	= 0,93	.resindex_pcicfg_base	= -1,94	.resindex_imr_base	= -1,95	.irqindex_host_ipc	= -1,96	.chip_info = &cnl_chip_info,97	.ipc_supported_mask	= BIT(SOF_IPC_TYPE_3) | BIT(SOF_IPC_TYPE_4),98	.ipc_default		= SOF_IPC_TYPE_3,99	.dspless_mode_supported	= true,		/* Only supported for HDaudio */100	.default_fw_path = {101		[SOF_IPC_TYPE_3] = "intel/sof",102		[SOF_IPC_TYPE_4] = "intel/avs/cnl",103	},104	.default_lib_path = {105		[SOF_IPC_TYPE_4] = "intel/avs-lib/cnl",106	},107	.default_tplg_path = {108		[SOF_IPC_TYPE_3] = "intel/sof-tplg",109		[SOF_IPC_TYPE_4] = "intel/avs-tplg",110	},111	.default_fw_filename = {112		[SOF_IPC_TYPE_3] = "sof-cml.ri",113		[SOF_IPC_TYPE_4] = "dsp_basefw.bin",114	},115	.nocodec_tplg_filename = "sof-cnl-nocodec.tplg",116	.ops = &sof_cnl_ops,117	.ops_init = sof_cnl_ops_init,118	.ops_free = hda_ops_free,119};120 121/* PCI IDs */122static const struct pci_device_id sof_pci_ids[] = {123	{ PCI_DEVICE_DATA(INTEL, HDA_CNL_LP, &cnl_desc) },124	{ PCI_DEVICE_DATA(INTEL, HDA_CNL_H, &cfl_desc) },125	{ PCI_DEVICE_DATA(INTEL, HDA_CML_LP, &cml_desc) },126	{ PCI_DEVICE_DATA(INTEL, HDA_CML_H, &cml_desc) },127	{ PCI_DEVICE_DATA(INTEL, HDA_CML_S, &cml_desc) },128	{ 0, }129};130MODULE_DEVICE_TABLE(pci, sof_pci_ids);131 132/* pci_driver definition */133static struct pci_driver snd_sof_pci_intel_cnl_driver = {134	.name = "sof-audio-pci-intel-cnl",135	.id_table = sof_pci_ids,136	.probe = hda_pci_intel_probe,137	.remove = sof_pci_remove,138	.shutdown = sof_pci_shutdown,139	.driver = {140		.pm = &sof_pci_pm,141	},142};143module_pci_driver(snd_sof_pci_intel_cnl_driver);144 145MODULE_LICENSE("Dual BSD/GPL");146MODULE_DESCRIPTION("SOF support for CannonLake platforms");147MODULE_IMPORT_NS(SND_SOC_SOF_INTEL_HDA_GENERIC);148MODULE_IMPORT_NS(SND_SOC_SOF_INTEL_HDA_COMMON);149MODULE_IMPORT_NS(SND_SOC_SOF_PCI_DEV);150