From 620a33f1c85d0b9534592e51e2d13918c406c120 Mon Sep 17 00:00:00 2001 From: Jeremy Compostella Date: Thu, 26 Feb 2026 09:17:08 -0800 Subject: [PATCH] soc/intel/pantherlake: Use common SoundWire driver Migrate Panther Lake to use the common SoundWire driver implementation from the Intel common feature code. This change eliminates platform- specific code by leveraging the shared soundwire.c driver. This commit: - Selects SOC_INTEL_COMMON_FEATURE_SOUNDWIRE Kconfig - Removes src/soc/intel/pantherlake/soundwire.c - Updates Makefile to remove soundwire.c compilation Panther Lake uses the default values (4 SoundWire master links with ACPI address 0x40000000). TEST=Build and boot to the OS on a Fatcat device Change-Id: Iaebb27ddc44da536c8e6a6aece1dfee3a4ac7bac Signed-off-by: Jeremy Compostella Reviewed-on: https://review.coreboot.org/c/coreboot/+/91279 Tested-by: build bot (Jenkins) Reviewed-by: Huang, Cliff --- src/soc/intel/pantherlake/Kconfig | 1 + src/soc/intel/pantherlake/Makefile.mk | 1 - src/soc/intel/pantherlake/soundwire.c | 72 --------------------------- 3 files changed, 1 insertion(+), 73 deletions(-) delete mode 100644 src/soc/intel/pantherlake/soundwire.c diff --git a/src/soc/intel/pantherlake/Kconfig b/src/soc/intel/pantherlake/Kconfig index 33a592cb07..243b9fa41f 100644 --- a/src/soc/intel/pantherlake/Kconfig +++ b/src/soc/intel/pantherlake/Kconfig @@ -98,6 +98,7 @@ config SOC_INTEL_PANTHERLAKE_BASE select SOC_INTEL_COMMON_BLOCK_XHCI_ELOG select SOC_INTEL_COMMON_FEATURE select SOC_INTEL_COMMON_FEATURE_GSPI_DEVFN + select SOC_INTEL_COMMON_FEATURE_SOUNDWIRE select SOC_INTEL_COMMON_FEATURE_SPI_DEVFN select SOC_INTEL_COMMON_FEATURE_SPI_DEVFN_PSF select SOC_INTEL_COMMON_FEATURE_I2C_DEVFN diff --git a/src/soc/intel/pantherlake/Makefile.mk b/src/soc/intel/pantherlake/Makefile.mk index 857e7ab648..361b583839 100644 --- a/src/soc/intel/pantherlake/Makefile.mk +++ b/src/soc/intel/pantherlake/Makefile.mk @@ -37,7 +37,6 @@ ramstage-y += pcie_rp.c ramstage-y += pmc.c ramstage-y += reset.c ramstage-y += retimer.c -ramstage-y += soundwire.c ramstage-y += systemagent.c ramstage-y += tcss.c ramstage-y += tdp.c diff --git a/src/soc/intel/pantherlake/soundwire.c b/src/soc/intel/pantherlake/soundwire.c deleted file mode 100644 index ab1d0bc683..0000000000 --- a/src/soc/intel/pantherlake/soundwire.c +++ /dev/null @@ -1,72 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static const struct soundwire_link link_xtal_38_4 = { - .clock_stop_mode0_supported = 1, - .clock_stop_mode1_supported = 1, - .clock_frequencies_supported_count = 1, - .clock_frequencies_supported = { 4800 * KHz }, - .default_frame_rate = 48 * KHz, - .default_frame_row_size = 50, - .default_frame_col_size = 4, - .dynamic_frame_shape = 1, - .command_error_threshold = 16, -}; - -static const struct soundwire_link link_xtal_24 = { - .clock_stop_mode0_supported = 1, - .clock_stop_mode1_supported = 1, - .clock_frequencies_supported_count = 1, - .clock_frequencies_supported = { 6 * MHz }, - .default_frame_rate = 48 * KHz, - .default_frame_row_size = 125, - .default_frame_col_size = 2, - .dynamic_frame_shape = 1, - .command_error_threshold = 16, -}; - -static struct intel_soundwire_controller intel_controller = { - .acpi_address = 0x40000000, /* Custom address for SNDW driver */ - .sdw = { - .master_list_count = 4 - } -}; - -int soc_fill_soundwire_controller(struct intel_soundwire_controller **controller) -{ - const struct soundwire_link *link; - enum pch_pmc_xtal xtal = pmc_get_xtal_freq(); - size_t i; - - /* Select link config based on XTAL frequency and set IP clock. */ - switch (xtal) { - case XTAL_24_MHZ: - link = &link_xtal_24; - intel_controller.ip_clock = 24 * MHz; - break; - case XTAL_38_4_MHZ: - link = &link_xtal_38_4; - intel_controller.ip_clock = 38400 * KHz; - break; - case XTAL_19_2_MHZ: - default: - printk(BIOS_ERR, "%s: XTAL not supported: 0x%x\n", __func__, xtal); - return -1; - } - - /* Fill link config in controller map based on selected XTAL. */ - for (i = 0; i < intel_controller.sdw.master_list_count; i++) - memcpy(&intel_controller.sdw.master_list[i], link, sizeof(*link)); - - *controller = &intel_controller; - return 0; -}