On Sat, 27 Jul 2024 10:50:48 +0200, Baojun Xu wrote: > > This patch was used to add TAS2781 devices on SPI support in sound/pci/hda. > It use ACPI node descript about parameters of TAS2781 on SPI, it like: > Scope (_SB.PC00.SPI0) > { > Device (GSPK) > { > Name (_HID, "TXNW2781") // _HID: Hardware ID > Method (_CRS, 0, NotSerialized) > { > Name (RBUF, ResourceTemplate () > { > SpiSerialBusV2 (...) > SpiSerialBusV2 (...) > } > } > } > } > > And in platform/x86/serial-multi-instantiate.c, those spi devices will be > added into system as a single SPI device, so TAS2781 SPI driver will > probe twice for every single SPI device. And driver will also parser > mono DSP firmware binary and RCA binary for itself. > The code support Realtek as the primary codec. > In patch version-10, add multi devices firmware binary support, > to compatble with windows driver, they can share same firmware binary. > > Signed-off-by: Baojun Xu <baojun.xu@xxxxxx> > > --- > v11: Now it's v11, and I'd love to move this forward finally, instead of hanging forever. The HD-audio part looks more or less OK, but I'd need acks for the ACPI and serial-multi-instance parts below. Put ACPI and serial-multi-instance maintainers to Cc. Rafael, Hans, let me know if that looks OK to take. The original patch is found at https://lore.kernel.org/20240727085048.1092-1-baojun.xu@xxxxxx > --- a/drivers/acpi/scan.c > +++ b/drivers/acpi/scan.c > @@ -1769,6 +1769,7 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device) > {"CSC3557", }, > {"INT33FE", }, > {"INT3515", }, > + {"TXNW2781", }, > /* Non-conforming _HID for Cirrus Logic already released */ > {"CLSA0100", }, > {"CLSA0101", }, > diff --git a/drivers/platform/x86/serial-multi-instantiate.c b/drivers/platform/x86/serial-multi-instantiate.c > index 3be016cfe601..b15c819023d0 100644 > --- a/drivers/platform/x86/serial-multi-instantiate.c > +++ b/drivers/platform/x86/serial-multi-instantiate.c > @@ -368,6 +368,17 @@ static const struct smi_node cs35l57_hda = { > .bus_type = SMI_AUTO_DETECT, > }; > > +static const struct smi_node tas2781_hda = { > + .instances = { > + { "tas2781-hda", IRQ_RESOURCE_AUTO, 0 }, > + { "tas2781-hda", IRQ_RESOURCE_AUTO, 0 }, > + { "tas2781-hda", IRQ_RESOURCE_AUTO, 0 }, > + { "tas2781-hda", IRQ_RESOURCE_AUTO, 0 }, > + {} > + }, > + .bus_type = SMI_AUTO_DETECT, > +}; > + > /* > * Note new device-ids must also be added to ignore_serial_bus_ids in > * drivers/acpi/scan.c: acpi_device_enumeration_by_parent(). > @@ -380,6 +391,7 @@ static const struct acpi_device_id smi_acpi_ids[] = { > { "CSC3556", (unsigned long)&cs35l56_hda }, > { "CSC3557", (unsigned long)&cs35l57_hda }, > { "INT3515", (unsigned long)&int3515_data }, > + { "TXNW2781", (unsigned long)&tas2781_hda }, > /* Non-conforming _HID for Cirrus Logic already released */ > { "CLSA0100", (unsigned long)&cs35l41_hda }, > { "CLSA0101", (unsigned long)&cs35l41_hda }, thanks, Takashi