diff options
Diffstat (limited to 'sound/soc/sof/intel/hda.c')
| -rw-r--r-- | sound/soc/sof/intel/hda.c | 25 | 
1 files changed, 16 insertions, 9 deletions
diff --git a/sound/soc/sof/intel/hda.c b/sound/soc/sof/intel/hda.c index 06e84679087b..91bd88fddac7 100644 --- a/sound/soc/sof/intel/hda.c +++ b/sound/soc/sof/intel/hda.c @@ -32,9 +32,6 @@  /* platform specific devices */  #include "shim.h" -#define IS_CFL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa348) -#define IS_CNL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9dc8) -  #define EXCEPT_MAX_HDR_SIZE	0x400  /* @@ -56,6 +53,11 @@ MODULE_PARM_DESC(use_msi, "SOF HDA use PCI MSI mode");  static int hda_dmic_num = -1;  module_param_named(dmic_num, hda_dmic_num, int, 0444);  MODULE_PARM_DESC(dmic_num, "SOF HDA DMIC number"); + +static bool hda_codec_use_common_hdmi = +	IS_ENABLED(CONFIG_SND_SOC_SOF_HDA_COMMON_HDMI_CODEC); +module_param_named(use_common_hdmi, hda_codec_use_common_hdmi, bool, 0444); +MODULE_PARM_DESC(use_common_hdmi, "SOF HDA use common HDMI codec driver");  #endif  static const struct hda_dsp_msg_code hda_dsp_rom_msg[] = { @@ -262,12 +264,9 @@ static int hda_init(struct snd_sof_dev *sdev)  	/* HDA bus init */  	sof_hda_bus_init(bus, &pci->dev); -	/* Workaround for a communication error on CFL (bko#199007) and CNL */ -	if (IS_CFL(pci) || IS_CNL(pci)) -		bus->polling_mode = 1; -  	bus->use_posbuf = 1;  	bus->bdl_pos_adj = 0; +	bus->sync_write = 1;  	mutex_init(&hbus->prepare_mutex);  	hbus->pci = pci; @@ -416,9 +415,16 @@ static int hda_init_caps(struct snd_sof_dev *sdev)  			pdata->tplg_filename =  				hda_mach->sof_tplg_filename; -			/* firmware: pick the first in machine list */ +			/* +			 * firmware: pick the first in machine list, +			 * or use nocodec firmware name if list is empty +			 */  			mach = pdata->desc->machines; -			pdata->fw_filename = mach->sof_fw_filename; +			if (mach->id[0]) +				pdata->fw_filename = mach->sof_fw_filename; +			else +				pdata->fw_filename = +					pdata->desc->nocodec_fw_filename;  			dev_info(bus->dev, "using HDA machine driver %s now\n",  				 hda_mach->drv_name); @@ -465,6 +471,7 @@ static int hda_init_caps(struct snd_sof_dev *sdev)  			&pdata->machine->mach_params;  		mach_params->codec_mask = bus->codec_mask;  		mach_params->platform = dev_name(sdev->dev); +		mach_params->common_hdmi_codec_drv = hda_codec_use_common_hdmi;  	}  	/* create codec instances */  |