> To clarify, was the log you attached here using: > { "17AA386E", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0}, 0, 2, -1, 0, 0, 0 }, > Or was it using your original value (index 1)? Both get the same log. > For further investigation, can you create a bugzilla ticket at the > below address and CC Cirrus Patches (patches@xxxxxxxxxxxxxxxxxxxxx) to > it. OK. https://bugzilla.kernel.org/show_bug.cgi?id=218744 > Can you also mention which distro you are using, as well which Kernel you are using. I'm using Arch Linux, the kernel is v6.8.5-arch1. > Both amps use the same GPIO for the interrupt line, thus the interrupt is shared, and there is only a single interrupt line. BTW, it's connected to APIC. > Also, can you please attach a dmesg of the error Without any patches, I got ```log Serial bus multi instantiate pseudo device driver CSC3551:00: Instantiated 2 I2C devices. cs35l41-hda i2c-CSC3551:00-cs35l41-hda.0: Failed property cirrus,dev-index: -22 cs35l41-hda i2c-CSC3551:00-cs35l41-hda.0: error -EINVAL: Platform not supported cs35l41-hda: probe of i2c-CSC3551:00-cs35l41-hda.0 failed with error -22 cs35l41-hda i2c-CSC3551:00-cs35l41-hda.1: Failed property cirrus,dev-index: -22 cs35l41-hda i2c-CSC3551:00-cs35l41-hda.1: error -EINVAL: Platform not supported cs35l41-hda: probe of i2c-CSC3551:00-cs35l41-hda.1 failed with error -22 ``` With `generic_dsd_config` I got ```log kernel: genirq: Flags mismatch irq 58. 00002088 (cs35l41 IRQ1 Controller) vs. 00002088 (cs35l41 IRQ1 Controller) ``` as memtioned in the previous email. With my initial patch: ```log cs35l41-hda i2c-CSC3551:00-cs35l41-hda.0: Adding DSD properties for 17AA386E cs35l41-hda i2c-CSC3551:00-cs35l41-hda.0: Using extra _DSD properties, bypassing _DSD in ACPI cs35l41-hda i2c-CSC3551:00-cs35l41-hda.0: Cirrus Logic CS35L41 (35a40), Revision: B2 cs35l41-hda i2c-CSC3551:00-cs35l41-hda.1: Adding DSD properties for 17AA386E cs35l41-hda i2c-CSC3551:00-cs35l41-hda.1: Using extra _DSD properties, bypassing _DSD in ACPI cs35l41-hda i2c-CSC3551:00-cs35l41-hda.1: Reset line busy, assuming shared reset cs35l41-hda i2c-CSC3551:00-cs35l41-hda.1: Cirrus Logic CS35L41 (35a40), Revision: B2 Serial bus multi instantiate pseudo device driver CSC3551:00: Instantiated 2 I2C devices. cs35l41-hda i2c-CSC3551:00-cs35l41-hda.0: Falling back to default firmware. cs35l41-hda i2c-CSC3551:00-cs35l41-hda.0: DSP1: Firmware version: 3 cs35l41-hda i2c-CSC3551:00-cs35l41-hda.0: DSP1: cirrus/cs35l41-dsp1-spk-prot.wmfw: Fri 24 Jun 2022 14:55:56 GMT Daylight Time cs35l41-hda i2c-CSC3551:00-cs35l41-hda.0: DSP1: Firmware: 400a4 vendor: 0x2 v0.58.0, 2 algorithms cs35l41-hda i2c-CSC3551:00-cs35l41-hda.0: DSP1: cirrus/cs35l41-dsp1-spk-prot.bin: v0.58.0 cs35l41-hda i2c-CSC3551:00-cs35l41-hda.0: DSP1: spk-prot: e:\workspace\workspace\tibranch_release_playback_6.76_2\ormis\staging\default_tunings\internal\CS35L53\Fixed_Attenuation_Mono_48000_29.78.0\full\Fixed_Attenuation_Mono_48000_29.78.0_full.bin cs35l41-hda i2c-CSC3551:00-cs35l41-hda.0: CS35L41 Bound - SSID: 17AA386E, BST: 1, VSPK: 1, CH: L, FW EN: 1, SPKID: 1 snd_hda_codec_realtek ehdaudio0D0: bound i2c-CSC3551:00-cs35l41-hda.0 (ops cs35l41_hda_comp_ops [snd_hda_scodec_cs35l41]) cs35l41-hda i2c-CSC3551:00-cs35l41-hda.1: Falling back to default firmware. cs35l41-hda i2c-CSC3551:00-cs35l41-hda.1: DSP1: Firmware version: 3 cs35l41-hda i2c-CSC3551:00-cs35l41-hda.1: DSP1: cirrus/cs35l41-dsp1-spk-prot.wmfw: Fri 24 Jun 2022 14:55:56 GMT Daylight Time cs35l41-hda i2c-CSC3551:00-cs35l41-hda.1: DSP1: Firmware: 400a4 vendor: 0x2 v0.58.0, 2 algorithms cs35l41-hda i2c-CSC3551:00-cs35l41-hda.1: DSP1: cirrus/cs35l41-dsp1-spk-prot.bin: v0.58.0 cs35l41-hda i2c-CSC3551:00-cs35l41-hda.1: DSP1: spk-prot: e:\workspace\workspace\tibranch_release_playback_6.76_2\ormis\staging\default_tunings\internal\CS35L53\Fixed_Attenuation_Mono_48000_29.78.0\full\Fixed_Attenuation_Mono_48000_29.78.0_full.bin cs35l41-hda i2c-CSC3551:00-cs35l41-hda.1: CS35L41 Bound - SSID: 17AA386E, BST: 1, VSPK: 1, CH: R, FW EN: 1, SPKID: 1 snd_hda_codec_realtek ehdaudio0D0: bound i2c-CSC3551:00-cs35l41-hda.1 (ops cs35l41_hda_comp_ops [snd_hda_scodec_cs35l41]) ``` > as well as the acpidump of your laptop. The full acpi dump is shared via https://bugzilla.kernel.org/show_bug.cgi?id=218744 The related item I think in DSDT table may be: ``` Device (SPKR) { Name (_HID, "CSC3551") // _HID: Hardware ID Name (_SUB, "17AA386E") // _SUB: Subsystem ID Name (_UID, One) // _UID: Unique ID Name (SRS0, 0x09060000) Name (SIN0, 0x0908000E) Name (SID0, 0x09060001) Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings { Name (RBUF, ResourceTemplate () { I2cSerialBusV2 (0x0040, ControllerInitiated, 0x000F4240, AddressingMode7Bit, "\\_SB.PC00.I2C3", 0x00, ResourceConsumer, , Exclusive, ) I2cSerialBusV2 (0x0041, ControllerInitiated, 0x000F4240, AddressingMode7Bit, "\\_SB.PC00.I2C3", 0x00, ResourceConsumer, , Exclusive, ) GpioIo (Exclusive, PullNone, 0x0000, 0x0000, IoRestrictionOutputOnly, "\\_SB.GPI0", 0x00, ResourceConsumer, , ) { // Pin list 0x0000 } GpioIo (Shared, PullNone, 0x0064, 0x0000, IoRestrictionInputOnly, "\\_SB.GPI0", 0x00, ResourceConsumer, , ) { // Pin list 0x0000 } GpioIo (Exclusive, PullNone, 0x0000, 0x0000, IoRestrictionInputOnly, "\\_SB.GPI0", 0x00, ResourceConsumer, , ) { // Pin list 0x0000 } Interrupt (ResourceConsumer, Edge, ActiveHigh, SharedAndWake, ,, _Y58) { 0x00000000, } }) CreateWordField (RBUF, 0x59, RST0) CreateWordField (RBUF, 0x7C, INT0) CreateWordField (RBUF, 0x9F, PID0) CreateDWordField (RBUF, \_SB.PC00.I2C3.SPKR._CRS._Y58._INT, INT1) // _INT: Interrupts RST0 = GNUM (SRS0) INT0 = GNUM (SIN0) PID0 = GNUM (SID0) INT1 = INUM (SIN0) Return (RBUF) /* \_SB_.PC00.I2C3.SPKR._CRS.RBUF */ } Method (_INI, 0, NotSerialized) // _INI: Initialize { SGRA (0x0908000E, One) SGII (0x0908000E, Zero) GRXE (0x0908000E, 0x03) } Method (_STA, 0, NotSerialized) // _STA: Status { Return (0x0F) } Method (_DIS, 0, NotSerialized) // _DIS: Disable Device { } Method (_PS0, 0, Serialized) // _PS0: Power State 0 { ^^^LPCB.H_EC.ECWT (Zero, RefOf (^^^LPCB.H_EC.AM12)) } Method (_PS2, 0, Serialized) // _PS2: Power State 2 { ^^^LPCB.H_EC.ECWT (One, RefOf (^^^LPCB.H_EC.AM12)) } Method (_PS3, 0, Serialized) // _PS3: Power State 3 { } } ```