Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ASoC: SOF: Intel: add support for Nova Lake NVL

Add support for Nova Lake (NVL).
The core count for NVL is different compared to NVL-S (4 vs 2)

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Acked-by: Mark Brown <broonie@kernel.org>
Acked-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/20260120193507.14019-3-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Peter Ujfalusi and committed by
Mark Brown
1800bcdc b190870e

+56
+1
sound/soc/sof/intel/hda.h
··· 936 936 extern const struct sof_intel_dsp_desc lnl_chip_info; 937 937 extern const struct sof_intel_dsp_desc ptl_chip_info; 938 938 extern const struct sof_intel_dsp_desc wcl_chip_info; 939 + extern const struct sof_intel_dsp_desc nvl_chip_info; 939 940 extern const struct sof_intel_dsp_desc nvl_s_chip_info; 940 941 941 942 /* Probes support */
+24
sound/soc/sof/intel/nvl.c
··· 26 26 }; 27 27 EXPORT_SYMBOL_NS(sof_nvl_set_ops, "SND_SOC_SOF_INTEL_NVL"); 28 28 29 + const struct sof_intel_dsp_desc nvl_chip_info = { 30 + .cores_num = 4, 31 + .init_core_mask = BIT(0), 32 + .host_managed_cores_mask = BIT(0), 33 + .ipc_req = MTL_DSP_REG_HFIPCXIDR, 34 + .ipc_req_mask = MTL_DSP_REG_HFIPCXIDR_BUSY, 35 + .ipc_ack = MTL_DSP_REG_HFIPCXIDA, 36 + .ipc_ack_mask = MTL_DSP_REG_HFIPCXIDA_DONE, 37 + .ipc_ctl = MTL_DSP_REG_HFIPCXCTL, 38 + .rom_status_reg = LNL_DSP_REG_HFDSC, 39 + .rom_init_timeout = 300, 40 + .ssp_count = MTL_SSP_COUNT, 41 + .d0i3_offset = MTL_HDA_VS_D0I3C, 42 + .read_sdw_lcount = hda_sdw_check_lcount_ext, 43 + .check_sdw_irq = lnl_dsp_check_sdw_irq, 44 + .check_sdw_wakeen_irq = lnl_sdw_check_wakeen_irq, 45 + .sdw_process_wakeen = hda_sdw_process_wakeen_common, 46 + .check_ipc_irq = mtl_dsp_check_ipc_irq, 47 + .cl_init = mtl_dsp_cl_init, 48 + .power_down_dsp = mtl_power_down_dsp, 49 + .disable_interrupts = lnl_dsp_disable_interrupts, 50 + .hw_ip_version = SOF_INTEL_ACE_4_0, 51 + }; 52 + 29 53 const struct sof_intel_dsp_desc nvl_s_chip_info = { 30 54 .cores_num = 2, 31 55 .init_core_mask = BIT(0),
+31
sound/soc/sof/intel/pci-nvl.c
··· 26 26 return sof_nvl_set_ops(sdev, &sof_nvl_ops); 27 27 } 28 28 29 + static const struct sof_dev_desc nvl_desc = { 30 + .use_acpi_target_states = true, 31 + .machines = snd_soc_acpi_intel_nvl_machines, 32 + .alt_machines = snd_soc_acpi_intel_nvl_sdw_machines, 33 + .resindex_lpe_base = 0, 34 + .resindex_pcicfg_base = -1, 35 + .resindex_imr_base = -1, 36 + .irqindex_host_ipc = -1, 37 + .chip_info = &nvl_chip_info, 38 + .ipc_supported_mask = BIT(SOF_IPC_TYPE_4), 39 + .ipc_default = SOF_IPC_TYPE_4, 40 + .dspless_mode_supported = true, 41 + .on_demand_dsp_boot = true, 42 + .default_fw_path = { 43 + [SOF_IPC_TYPE_4] = "intel/sof-ipc4/nvl", 44 + }, 45 + .default_lib_path = { 46 + [SOF_IPC_TYPE_4] = "intel/sof-ipc4-lib/nvl", 47 + }, 48 + .default_tplg_path = { 49 + [SOF_IPC_TYPE_4] = "intel/sof-ipc4-tplg", 50 + }, 51 + .default_fw_filename = { 52 + [SOF_IPC_TYPE_4] = "sof-nvl.ri", 53 + }, 54 + .nocodec_tplg_filename = "sof-nvl-nocodec.tplg", 55 + .ops = &sof_nvl_ops, 56 + .ops_init = sof_nvl_ops_init, 57 + }; 58 + 29 59 static const struct sof_dev_desc nvl_s_desc = { 30 60 .use_acpi_target_states = true, 31 61 .machines = snd_soc_acpi_intel_nvl_machines, ··· 88 58 89 59 /* PCI IDs */ 90 60 static const struct pci_device_id sof_pci_ids[] = { 61 + { PCI_DEVICE_DATA(INTEL, HDA_NVL, &nvl_desc) }, /* NVL */ 91 62 { PCI_DEVICE_DATA(INTEL, HDA_NVL_S, &nvl_s_desc) }, /* NVL-S */ 92 63 { 0, } 93 64 };