Message ID | 20240208163750.92849-1-pierre-louis.bossart@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ALSA: HDA: intel-sdw-acpi: add kernel parameter to select alternate controller | expand |
On Thu, 08 Feb 2024 17:37:50 +0100, Pierre-Louis Bossart wrote: > > Existing DSDT or SSDT platforms hard-code clock and frame shape > configurations. For validation, we'd like to use alternate > configurations. It's not always possible to generate new tables due to > missing symbols, and modifying existing objects usually leads to > AE_OBJECT_EXIST errors. > > The mechanism suggested in this patch is to add a NEW ACPI controller > device with a different _ADR value. e.g. > > Scope (_SB_.PC00.RP08.PXSX.HDAS) { > > Device (SDWP) > { > Name (_ADR, 0x40000001) // _ADR: Address > > The desired _ADR can be passed as a parameter with > > options snd-intel-sdw-acpi sdw_ctrl_addr=0x40000001 > > This solution leads to minimal tables with just what the developers or > validation engineers need, and without overriding any of the existing > firmware definitions. It's consistent with the recommendation to > extend ACPI definitions and not redefine them with a risk of conflict. > > Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> > Reviewed-by: Rander Wang <rander.wang@intel.com> > Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Thanks, applied now. Takashi
diff --git a/sound/hda/intel-sdw-acpi.c b/sound/hda/intel-sdw-acpi.c index b57d72ea4503..5f60658c6051 100644 --- a/sound/hda/intel-sdw-acpi.c +++ b/sound/hda/intel-sdw-acpi.c @@ -23,6 +23,10 @@ static int ctrl_link_mask; module_param_named(sdw_link_mask, ctrl_link_mask, int, 0444); MODULE_PARM_DESC(sdw_link_mask, "Intel link mask (one bit per link)"); +static ulong ctrl_addr = 0x40000000; +module_param_named(sdw_ctrl_addr, ctrl_addr, ulong, 0444); +MODULE_PARM_DESC(sdw_ctrl_addr, "Intel SoundWire Controller _ADR"); + static bool is_link_enabled(struct fwnode_handle *fw_node, u8 idx) { struct fwnode_handle *link; @@ -141,6 +145,9 @@ static acpi_status sdw_intel_acpi_cb(acpi_handle handle, u32 level, if (FIELD_GET(GENMASK(31, 28), adr) != SDW_LINK_TYPE) return AE_OK; /* keep going */ + if (adr != ctrl_addr) + return AE_OK; /* keep going */ + /* found the correct SoundWire controller */ info->handle = handle;