Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Huawei MateBook D15 headphone and speaker not work #3831

Open
tvelazquez opened this issue Aug 23, 2022 · 42 comments
Open

[BUG] Huawei MateBook D15 headphone and speaker not work #3831

tvelazquez opened this issue Aug 23, 2022 · 42 comments
Labels
codec ES8336 Community end-user or distro-reported issues

Comments

@tvelazquez
Copy link

@plbossart A few months ago I bought a Huawei Matebook D15 and the sound only works through HDMI.
I have followed this guide https://github.com/thesofproject/linux/wiki/ES8336-support
And I have compiled this branch https://github.com/thesofproject/linux/tree/es8336-v5.19
http://alsa-project.org/db/?f=77cd3bc0e0fa1b6a398e76f454fc11f017b10b4c

@plbossart
Copy link
Member

You are not using the SOF driver!

snd_intel_dspcfg: dsp_driver=1 dyndbg= p

please remove this option, and read the wiki:
https://github.com/thesofproject/linux/wiki/ES8336-support

@tvelazquez
Copy link
Author

tvelazquez commented Aug 24, 2022

@plbossart I load the SOF driver and there is no sound card.
http://alsa-project.org/db/?f=7b41c67fbe773bd8a70ecdb3946a3b264bc2a7d7

@plbossart
Copy link
Member

The last line of the dmesg log shows you have started probing the machine driver

[ 21.210242] sof-essx8336 sof-essx8336: quirk mask 0x20

If you don't see a card created it means that that probe failed somewhere.
Not sure what happens, you have dynamic debug enabled but nothing is shown.

You will have to trace manually where the issue happens, likely by adding some dev_info statements in sound/soc/intel/boards/sof_es8336.c

@plbossart
Copy link
Member

you may also want to try and enable dynamic debug for the ASoC core, this will be very verbose but let you know why the card registration failed

options snd-soc-core dyndbg=+pmf

@tvelazquez
Copy link
Author

@plbossart I add some dev_info:

priv->gpio_speakers = gpiod_get_optional(codec_dev, "speakers-enable", GPIOD_OUT_LOW);
if (IS_ERR(priv->gpio_speakers)) {
	ret = dev_err_probe(dev, PTR_ERR(priv->gpio_speakers),
			    "could not get speakers-enable GPIO\n");
	dev_info(dev, "could not get speakers-enable GPIO\n");
	goto err_put_codec;
}

[ 52.247139] sof-essx8336 sof-essx8336: quirk mask 0x20
[ 52.247141] sof-essx8336 sof-essx8336: quirk SSP0
[ 52.247142] sof-essx8336 sof-essx8336: quirk DMIC enabled
[ 52.247168] sof-essx8336 sof-essx8336: could not get speakers-enable GPIO

http://alsa-project.org/db/?f=5adfb126cedacfecb5bc021097816853ebeb769b

@plbossart
Copy link
Member

That's not good news @tvelazquez, the problem is likely a BIOS issue or something. That's super hard to debug remotely. You are getting an error for an optional gpio, not sure what happens.

Try to add dynamic debug in https://elixir.bootlin.com/linux/latest/source/drivers/gpio/gpiolib.c and see what the results are.

You could also bypass this and just set priv->gpio_speakers = NULL and see what happens.

@tvelazquez
Copy link
Author

@plbossart dynamic debug enabled for gpiolib and add priv->gpio_speakers = NULL;

[ 9.281388] sof-essx8336 sof-essx8336: quirk mask 0x20
[ 9.281390] sof-essx8336 sof-essx8336: quirk SSP0
[ 9.281391] sof-essx8336 sof-essx8336: quirk DMIC enabled
[ 9.281413] gpiolib:gpiod_get_index: i2c i2c-ESSX8336:00: GPIO lookup for consumer speakers-enable
[ 9.281414] gpiolib:gpiod_get_index: i2c i2c-ESSX8336:00: using ACPI for GPIO lookup
[ 9.281428] gpiolib:gpiod_get_index: i2c i2c-ESSX8336:00: No GPIO consumer speakers-enable found
[ 9.281428] gpiolib:gpiod_get_index: i2c i2c-ESSX8336:00: GPIO lookup for consumer headphone-enable
[ 9.281429] gpiolib:gpiod_get_index: i2c i2c-ESSX8336:00: using ACPI for GPIO lookup
[ 9.281430] gpiolib:gpiod_get_index: i2c i2c-ESSX8336:00: using lookup tables for GPIO lookup
[ 9.281431] gpiolib:gpiod_get_index: i2c i2c-ESSX8336:00: No GPIO consumer headphone-enable found
[ 9.281433] snd_soc_core:soc_check_tplg_fes: sof-essx8336 sof-essx8336: info: override BE DAI link SSP0-Codec
[ 9.281433] snd_soc_core:soc_check_tplg_fes: sof-essx8336 sof-essx8336: info: override BE DAI link dmic01
[ 9.281434] snd_soc_core:soc_check_tplg_fes: sof-essx8336 sof-essx8336: info: override BE DAI link dmic16k
[ 9.281435] snd_soc_core:soc_check_tplg_fes: sof-essx8336 sof-essx8336: info: override BE DAI link iDisp1
[ 9.281435] snd_soc_core:soc_check_tplg_fes: sof-essx8336 sof-essx8336: info: override BE DAI link iDisp2
[ 9.281436] snd_soc_core:soc_check_tplg_fes: sof-essx8336 sof-essx8336: info: override BE DAI link iDisp3
[ 9.281437] snd_soc_core:snd_soc_add_pcm_runtime: sof-essx8336 sof-essx8336: ASoC: binding SSP0-Codec
[ 9.281438] snd_soc_core:soc_dai_link_sanity_check: sof-essx8336 sof-essx8336: ASoC: codec component i2c-ESSX8336:00 not found for link SSP0-Codec
[ 9.281440] sof-essx8336 sof-essx8336: snd_soc_register_card failed: -517

@plbossart
Copy link
Member

[ 9.281437] snd_soc_core:snd_soc_add_pcm_runtime: sof-essx8336 sof-essx8336: ASoC: binding SSP0-Codec
[ 9.281438] snd_soc_core:soc_dai_link_sanity_check: sof-essx8336 sof-essx8336: ASoC: codec component i2c-ESSX8336:00 not found for link SSP0-Codec

that's a completely different issue to the initial gpio issue. This hints at a configuration issue where maybe the codec is not probed.

I don't have any bandwidth to help in the next two weeks, sorry.

@plbossart plbossart added codec ES8336 Community end-user or distro-reported issues labels Aug 26, 2022
@tvelazquez
Copy link
Author

@plbossart What dumps do you need to do the analysis? acpidump? I would like to provide you with all the information you need. Thanks.

@plbossart
Copy link
Member

@tvelazquez make sure snd-soc-es8316 is probed and provide the information shown in /sys/kernel/debug/asoc/components

@tvelazquez
Copy link
Author

@plbossart added some printk at es8316_probe() and es8316_i2c_probe() but dmesg doesn't show it.

/sys/kernel/debug/asoc/components:
0000:00:1f.3
ehdaudio0D2
dmic-codec
snd-soc-dummy
snd-soc-dummy

@plbossart
Copy link
Member

@tvelazquez can you share the DSDT and also verify that this codec driver is part of the build? Wondering if there is some sort of I2C configuration issue.

@plbossart
Copy link
Member

I don't see anything blantantly wrong in the DSDT @tvelazquez but it's also on the rather convoluted side.

I don't see why e.g. there are two addresses for this codec
Name (SBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0010, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\_SB.PC00.I2C2",
0x00, ResourceConsumer, , Exclusive,
)
I2cSerialBusV2 (0x0011, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\_SB.PC00.I2C2",
0x00, ResourceConsumer, , Exclusive,
)

I think only the second one is valid, that's what I see for other devices.

I am afraid you'll have to look into other ways to debug why the driver is not probed, or ask @yangxiaohua2009

@yangxiaohua2009
Copy link

@tvelazquez
Do you know how to change ACPI in Linux? Please remove the second I2C address.

You can verify it by install i2c-tools and dump the i2c by
sudo i2cdump -f -y 1 0x10
1 is your bus number, may be 0-10.
0x10 is your chip i2c address, 0x10 or 0x11.
cc1e20a961e2af65cdde5303dcef824

@plbossart
Copy link
Member

@andy-shev would you happen to know if there's a way to ignore one of the two addresses in ACPI? see above the DSDT contains two addresses for the same codec, this looks wrong?

@tvelazquez
Copy link
Author

@plbossart Thanks for your analysis and support!

@yangxiaohua2009 I have never changed the ACPI and I have to study how to do it.
The same i2cdump output for all combinations of bus number 0 to 10 and i2c addresses 0x10 or 0x11.

No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
f0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX

@andy-shev
Copy link

@andy-shev would you happen to know if there's a way to ignore one of the two addresses in ACPI? see above the DSDT contains two addresses for the same codec, this looks wrong?

Why do you think it's a single codec there? We already have an example of two or more codecs in the same device node in ACPI (see serial-multi-instantiate.c for the details). I.o.w. without schematic and datasheet to the codec itself it's hard to say if it's wrong table or driver or something else (might be a multi-functional device, e.g. camera sensor + motion coil + ... but for the audio case).

@plbossart
Copy link
Member

@andy-shev we've never seen a form-factor device with e.g. two headset codecs and jacks. This sort of low-cost devices only rely on one codec, that's a safe assumption. Put differently, all the existing devices with this ES8336 rely on a single codec so there's no precedent with two.

@andy-shev
Copy link

@andy-shev we've never seen a form-factor device with e.g. two headset codecs and jacks. This sort of low-cost devices only rely on one codec, that's a safe assumption. Put differently, all the existing devices with this ES8336 rely on a single codec so there's no precedent with two.

What about multifunction device then? Is it possible to find a schematic of the board?

@yangxiaohua2009
Copy link

@plbossart lt's a longer story behind the two I2C address. We recommand less than two reflow soldering, but the OEM reflow soldering four times. The high temperature causes detachment between bonding wire and the lead frame, making CE pin (I2C address pin) float, so the I2C address becomes float. It may be either 0x10 or 0x11. When they found the problem, tens of thousands has been made so it's impossible to modify the hardware. They then came up with the idea that they can set up two I2C addresses in the ACPI so that the driver can get two I2C addresses. Since at least one of them can work, the CODEC can now work well.

The problem was solved later with new chips, and the problematic chips recalled. As a conclusion, the two I2C addresses is just a way to solve I2C failure and only for the specific model, no need to pay special attention for it.

@plbossart
Copy link
Member

Thanks for the explanations @yangxiaohua2009.

"the codec works well" might be a true statement for the Windows drivers, it's not true for LInux, as measured by es8316_probe() and es8316_i2c_probe() not being invoked (see results from @tvelazquez above), likely due to an earlier error handling in the ACPI or I2C subsystems.

@andy-shev
Copy link

@jwrdegoede, read above, very interesting case! It also might affect serial-multi-instantiate.c.

@jwrdegoede
Copy link

@jwrdegoede, read above, very interesting case! It also might affect serial-multi-instantiate.c.

Ugh, this is just so ugly (the 1 codec which will have 1 of 2 possible addresses thing).

So the only way I can come up with to solve this would be to

  1. Add the ACPI HID for the codec to ignore_serial_bus_idsignore_serial_bus_ids in drivers/acpi/scan.c: acpi_device_enumeration_by_parent()
  2. Write a new driver binding to the ACPI HID, which checks both addresses and instantiates a codec device for the working one. While passing through the firmware-node as fwnode for the instantiated i2c-client.

Note doing things this way will break ACPI HID based driver <-> device matching. So this will require the codec driver to get an old fashioned i2c_client_id added to it for the binding to still work.

An even uglier alternative would be would be to modify drivers/i2c/i2c-core-acpi.c to recognize this ACPI HID and then if there is more then 1 i2c address to do some simple i2c connectivity check and then pick the address based on that check.

That even uglier approach is probably easier, so it might be a good way to at least get things to work for @tvelazquez . Although if @plbossart has at least 1 similar device, then implementing the addition to ignore_serial_bus_ids + special driver should not be that much work and it should be testable on a device with just 1 i2cresource in the ACPI table.

A 3th option would be to just use a DSDT overlay and drop the first I2Cresource. But that is not really a generic fix for other users impacted by the same issue.

@andy-shev
Copy link

@jwrdegoede, thanks for your ideas! From hw perspective my understanding is that the floating pin can take any state at any time (especially taking into account temperature differences as cold start), the robust solution is to try two addresses for each transaction, and it sounds to me like a dirty hack in I2C core would be needed. But the more I think about this the more I tend to tell users that this hardware is broken for any sane software.

@plbossart
Copy link
Member

I tend to agree with @andy-shev, what are the odds that the address used on startup remains functional during a typical 'day use' scenario. In addition I don't have ANY device to test, so can't really help.

@jwrdegoede
Copy link

@andy-shev you are right about the floating pin being able to take any value, but this is likely a dual-purpose bootstrap + other-purpose pin. So at power-on-reset it gets read once (the bootstrap) to determine the i2c address and that then gets latched and after that the pin switches to its other purpose which is unused in this design.

So the address can be different every boot, but it is stable after boot.

I believe that if each transfer would potentially need a different address that things then would not even work under Windows.

@plbossart ah I assumed you had at least one alderlake device with an es83x6 in there. Yeah without hardware developing a fix is going to be very hard.

@koffiato
Copy link

koffiato commented Dec 6, 2022

Still no luck unfortunately, can't get any sound input/output to work.

@tvelazquez
Copy link
Author

@yangxiaohua2009 I compiled https://github.com/thesofproject/linux/tree/es8336-v6.0 and removed the second I2C address, but same results.

[ 0.008024] ACPI: DSDT ACPI table found in initrd [kernel/firmware/acpi/dsdt.aml][0x3b562]
[ 0.008074] ACPI: Table Upgrade: override [DSDT-HUAWEI- TGL-ULT]
[ 0.008075] ACPI: DSDT 0x0000000075BA2000 Physical table override, new table: 0x0000000072AB2000
[ 0.008076] ACPI: DSDT 0x0000000072AB2000 03B562 (v02 HUAWEI TGL-ULT 00000003 INTL 20220331)
[ 21.064509] sof-essx8336 sof-essx8336: quirk mask 0x20
[ 21.064510] sof-essx8336 sof-essx8336: quirk SSP0
[ 21.064510] sof-essx8336 sof-essx8336: quirk DMIC enabled
[ 21.064556] snd_soc_core:soc_check_tplg_fes: sof-essx8336 sof-essx8336: info: override BE DAI link SSP0-Codec
[ 21.064557] snd_soc_core:soc_check_tplg_fes: sof-essx8336 sof-essx8336: info: override BE DAI link dmic01
[ 21.064558] snd_soc_core:soc_check_tplg_fes: sof-essx8336 sof-essx8336: info: override BE DAI link dmic16k
[ 21.064558] snd_soc_core:soc_check_tplg_fes: sof-essx8336 sof-essx8336: info: override BE DAI link iDisp1
[ 21.064559] snd_soc_core:soc_check_tplg_fes: sof-essx8336 sof-essx8336: info: override BE DAI link iDisp2
[ 21.064559] snd_soc_core:soc_check_tplg_fes: sof-essx8336 sof-essx8336: info: override BE DAI link iDisp3
[ 21.064560] snd_soc_core:snd_soc_add_pcm_runtime: sof-essx8336 sof-essx8336: ASoC: binding SSP0-Codec
[ 21.064561] snd_soc_core:soc_dai_link_sanity_check: sof-essx8336 sof-essx8336: ASoC: codec component i2c-ESSX8336:00 not found for link SSP0-Codec
[ 21.064563] sof-essx8336 sof-essx8336: snd_soc_register_card failed: -517
[ 21.064660] platform sof-essx8336: deferred probe pending
[ 21.064667] i2c i2c-GXTP7863:00: deferred probe pending

It seems that now i2cdump works:

# i2cdump -f -y 1 0x10
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 03 03 00 20 11 00 11 00 00 01 00 00 f8 3f 00 00    ??. ?.?..?..??..
10: 01 fc 28 00 00 33 00 00 88 06 22 03 0f 00 80 80    ??(..3..??"??.??
20: 00 00 c0 00 01 08 10 c0 00 1c 00 b0 32 03 00 11    ..?.????.?.?2?.?
30: 10 00 00 c0 c0 1f f7 fd ff 1f f7 fd ff 1f f7 fd    ?..?????.???.???
40: ff 1f f7 fd ff 1f f7 fd ff 1f f7 fd ff 00 00 00    .???.???.???....
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
80: 03 03 00 20 11 00 11 00 00 01 00 00 f8 3f 00 00    ??. ?.?..?..??..
90: 01 fc 28 00 00 33 00 00 88 06 22 03 0f 00 80 80    ??(..3..??"??.??
a0: 00 00 c0 00 01 08 10 c0 00 1c 00 b0 32 03 00 11    ..?.????.?.?2?.?
b0: 10 00 00 c0 c0 1f f7 fd ff 1f f7 fd ff 1f f7 fd    ?..?????.???.???
c0: ff 1f f7 fd ff 1f f7 fd ff 1f f7 fd ff 00 00 00    .???.???.???....
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................

@tvelazquez tvelazquez closed this as not planned Won't fix, can't repro, duplicate, stale Dec 21, 2022
@koffiato
Copy link

Why is this issue closed?

@yangxiaohua2009
Copy link

yangxiaohua2009 commented Dec 22, 2022

@tvelazquez Is the codec driver loaded properly? can you see snd_soc_es8316 using lsmod | grep snd ?

@tvelazquez
Copy link
Author

@tvelazquez
Copy link
Author

@yangxiaohua2009 @plbossart What additional tests could I do?

@tvelazquez tvelazquez reopened this Jan 1, 2023
@yangxiaohua2009
Copy link

You can see the codec driver in lsmod, but the es8316_i2c_probe fuction is not called, making the probe of sound card failed. can you add print message to make sure the es8316_i2c_probe failed to be called? If so, it's because the dsdt is wrong. Can you show your overriding dsdt table?

@tvelazquez
Copy link
Author

@yangxiaohua2009
Copy link

The dsdt looks good but es8316_i2c_probe is not called. Usually when the HID 'ESSX8336' in dsdt matches the ID in es8316.c, es8316_i2c_probe is called.
I also see a device named ESSX8336 in your alsainfo.

Can you see the device /sys/bus/i2c/devices/i2c-ESSX8336\:00 ?
Can you blacklist and then manuelly probe the module snd_soc_es8316 and snd_soc_sof_es8336 using modprobe and see what happens?

@tvelazquez
Copy link
Author

@yangxiaohua2009 the device exist:

~ # ls -l  /sys/bus/i2c/devices/i2c-ESSX8336:00
lrwxrwxrwx 1 root root 0 en   27 17:37 /sys/bus/i2c/devices/i2c-ESSX8336:00 -> ../../../devices/pci0000:00/0000:00:15.2/i2c_designware.1/i2c-1/i2c-ESSX8336:00
~ # ls -l  /sys/bus/i2c/devices/i2c-ESSX8336:00/
total 0
lrwxrwxrwx 1 root root    0 en   27 17:37 firmware_node -> ../../../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:7c/ESSX8336:00
-r--r--r-- 1 root root 4096 en   27 17:36 modalias
-r--r--r-- 1 root root 4096 en   27 17:37 name
drwxr-xr-x 2 root root    0 en   27 17:36 power
lrwxrwxrwx 1 root root    0 en   27 17:37 subsystem -> ../../../../../../bus/i2c
-rw-r--r-- 1 root root 4096 en   27 17:36 uevent
-r--r--r-- 1 root root 4096 en   27 17:37 waiting_for_supplier

snd_soc_es8316 and snd_soc_sof_es8336 blacklisted and then manually loaded, but the same result, the es8316_i2c_probe() is not called:

[  191.686000] sof-essx8336 sof-essx8336: quirk mask 0x20
[  191.686003] sof-essx8336 sof-essx8336: quirk SSP0
[  191.686003] sof-essx8336 sof-essx8336: quirk DMIC enabled
[  191.686051] snd_soc_core:soc_check_tplg_fes: sof-essx8336 sof-essx8336: info: override BE DAI link SSP0-Codec
[  191.686052] snd_soc_core:soc_check_tplg_fes: sof-essx8336 sof-essx8336: info: override BE DAI link dmic01
[  191.686053] snd_soc_core:soc_check_tplg_fes: sof-essx8336 sof-essx8336: info: override BE DAI link dmic16k
[  191.686054] snd_soc_core:soc_check_tplg_fes: sof-essx8336 sof-essx8336: info: override BE DAI link iDisp1
[  191.686054] snd_soc_core:soc_check_tplg_fes: sof-essx8336 sof-essx8336: info: override BE DAI link iDisp2
[  191.686055] snd_soc_core:soc_check_tplg_fes: sof-essx8336 sof-essx8336: info: override BE DAI link iDisp3
[  191.686057] snd_soc_core:snd_soc_add_pcm_runtime: sof-essx8336 sof-essx8336: ASoC: binding SSP0-Codec
[  191.686058] snd_soc_core:soc_dai_link_sanity_check: sof-essx8336 sof-essx8336: ASoC: codec component i2c-ESSX8336:00 not found for link SSP0-Codec
[  191.686060] sof-essx8336 sof-essx8336: snd_soc_register_card failed: -517

@yangxiaohua2009
Copy link

@tvelazquez Can you change the _CRS part and see what happens? Basically I changed the _CRS and _INI part according to working dsl here
cnl_dsdt.zip

If this still not work I have no idea why es8316_i2c_probe failed to be called.

        Device (ESSX)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "ESSX8336")  // _HID: Hardware ID
            Name (_SUB, "12345678")  // _SUB: Subsystem ID
            Name (_CID, "ESSX8336")  // _CID: Compatible ID
            Name (_DDN, "ES8336")  // _DDN: DOS Device Name
            Name (_UID, One)  // _UID: Unique ID
            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                 Name (SBUF, ResourceTemplate ()
                    {
                    I2cSerialBusV2 (0x0010, ControllerInitiated, 0x00061A80,
                    AddressingMode7Bit, "\\_SB.PC00.I2C2",
                    0x00, ResourceConsumer, , Exclusive,
                    )
                GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                    "\\_SB.GPI0", 0x00, ResourceConsumer, ,
                    )
                    {   // Pin list
                        0x0000
                    }
                GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                    "\\_SB.GPI0", 0x00, ResourceConsumer, ,
                    )
                    {   // Pin list
                        0x0000
                    }
                GpioInt (Edge, ActiveBoth, ExclusiveAndWake, PullDefault, 0x0000,
                    "\\_SB.GPI0", 0x00, ResourceConsumer, ,
                    )
                    {   // Pin list
                        0x0000
                    }
            })
                CreateWordField (SBUF, 0x59, PIN1)
                CreateWordField (SBUF, 0x7C, PIN2)
                CreateWordField (SBUF, 0x9F, INT1)
                PIN1 = GNUM (0x09000010)
                PIN2 = GNUM (0x09000011)
                INT1 = GNUM (0x090B000D)
                Return (SBUF) /* \_SB_.PC00.I2C2.ESSX.SBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                Return (0x0F)
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
            }

            Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
            {
            }

            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If ((Arg0 == Buffer (0x10)
                        {
                            /* 0000 */  0x04, 0x0C, 0x80, 0xA9, 0x16, 0xE0, 0x3E, 0x34,  // ......>4
                            /* 0008 */  0x41, 0xF4, 0x6B, 0xCC, 0xE7, 0x0F, 0x43, 0x32   // A.k...C2
                        }))
                {
                    If ((Arg2 == Zero))
                    {
                        Return (0xBB)
                    }

                    If ((Arg2 == One))
                    {
                        Return (0xBB)
                    }

                    If ((Arg2 == 0x02))
                    {
                        Return (0x02)
                    }

                    If ((Arg2 == 0x03))
                    {
                        Return (One)
                    }

                    If ((Arg2 == 0x06))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x0F))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x10))
                    {
                        Return (0x06)
                    }

                    If ((Arg2 == 0x20))
                    {
                        Return (0x08)
                    }

                    If ((Arg2 == 0x2C))
                    {
                        Return (0x03)
                    }

                    If ((Arg2 == 0x2D))
                    {
                        Return (0x1B)
                    }

                    If ((Arg2 == 0x11))
                    {
                        Return (One)
                    }

                    If ((Arg2 == 0x21))
                    {
                        Return (One)
                    }

                    If ((Arg2 == 0x12))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x22))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x13))
                    {
                        Return (One)
                    }

                    If ((Arg2 == 0x23))
                    {
                        Return (One)
                    }

                    If ((Arg2 == 0x14))
                    {
                        Return (0x0A)
                    }

                    If ((Arg2 == 0x24))
                    {
                        Return (0x0A)
                    }

                    If ((Arg2 == 0x15))
                    {
                        Return (0x12)
                    }

                    If ((Arg2 == 0x25))
                    {
                        Return (0x12)
                    }

                    If ((Arg2 == 0x16))
                    {
                        Return (0x08)
                    }

                    If ((Arg2 == 0x26))
                    {
                        Return (0x08)
                    }

                    If ((Arg2 == 0x17))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x27))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x18))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x28))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x19))
                    {
                        Return (0x02)
                    }

                    If ((Arg2 == 0x29))
                    {
                        Return (0x02)
                    }

                    If ((Arg2 == 0x1A))
                    {
                        Return (0x03)
                    }

                    If ((Arg2 == 0x2A))
                    {
                        Return (0x03)
                    }

                    If ((Arg2 == 0x1B))
                    {
                        Return (One)
                    }

                    If ((Arg2 == 0x2B))
                    {
                        Return (One)
                    }

                    If ((Arg2 == 0x40))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x50))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x41))
                    {
                        Return (0xBB)
                    }

                    If ((Arg2 == 0x51))
                    {
                        Return (0xBB)
                    }

                    If ((Arg2 == 0x42))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x52))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x44))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x54))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x45))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x55))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x4A))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x5A))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x46))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x56))
                    {
                        Return (One)
                    }

                    If ((Arg2 == 0x5B))
                    {
                        Return (One)
                    }

                    If ((Arg2 == 0x86))
                    {
                        Return (One)
                    }

                    If ((Arg2 == 0x8E))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x8F))
                    {
                        Return (0x11)
                    }

                    If ((Arg2 == 0x90))
                    {
                        Return (0x22)
                    }

                    If ((Arg2 == 0x91))
                    {
                        Return (One)
                    }

                    If ((Arg2 == 0x92))
                    {
                        Return (One)
                    }

                    If ((Arg2 == 0x93))
                    {
                        Return (One)
                    }

                    If ((Arg2 == 0x94))
                    {
                        Return (0x61)
                    }

                    If ((Arg2 == 0x95))
                    {
                        Return (0x41)
                    }

                    If ((Arg2 == 0x96))
                    {
                        Return (0x41)
                    }

                    If ((Arg2 == 0x97))
                    {
                        Return (0x41)
                    }

                    If ((Arg2 == 0x98))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x99))
                    {
                        Return (0x80)
                    }

                    If ((Arg2 == 0x9A))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x9B))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x9C))
                    {
                        Return (0x80)
                    }

                    If ((Arg2 == 0x9D))
                    {
                        Return (0x80)
                    }

                    If ((Arg2 == 0x9E))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0x9F))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0xA0))
                    {
                        Return (0x71)
                    }

                    If ((Arg2 == 0xA1))
                    {
                        Return (0x10)
                    }

                    If ((Arg2 == 0xA2))
                    {
                        Return (0x10)
                    }

                    If ((Arg2 == 0xA3))
                    {
                        Return (0x10)
                    }

                    If ((Arg2 == 0xA4))
                    {
                        Return (0x71)
                    }

                    If ((Arg2 == 0xA5))
                    {
                        Return (0x10)
                    }

                    If ((Arg2 == 0xA6))
                    {
                        Return (0x10)
                    }

                    If ((Arg2 == 0xA7))
                    {
                        Return (0x10)
                    }

                    If ((Arg2 == 0xA8))
                    {
                        Return (0x10)
                    }

                    If ((Arg2 == 0xA9))
                    {
                        Return (0x30)
                    }

                    If ((Arg2 == 0xAA))
                    {
                        Return (0x30)
                    }

                    If ((Arg2 == 0xAB))
                    {
                        Return (0x30)
                    }

                    If ((Arg2 == 0xAC))
                    {
                        Return (0x10)
                    }

                    If ((Arg2 == 0xAD))
                    {
                        Return (0x30)
                    }

                    If ((Arg2 == 0xAE))
                    {
                        Return (0x30)
                    }

                    If ((Arg2 == 0xAF))
                    {
                        Return (0x30)
                    }

                    If ((Arg2 == 0xB0))
                    {
                        Return (0x10)
                    }

                    If ((Arg2 == 0xB1))
                    {
                        Return (0x20)
                    }

                    If ((Arg2 == 0xB2))
                    {
                        Return (0x20)
                    }

                    If ((Arg2 == 0xB3))
                    {
                        Return (0x20)
                    }

                    If ((Arg2 == 0xB4))
                    {
                        Return (0xA0)
                    }

                    If ((Arg2 == 0xB5))
                    {
                        Return (0xB0)
                    }

                    If ((Arg2 == 0xB6))
                    {
                        Return (0xB0)
                    }

                    If ((Arg2 == 0xB7))
                    {
                        Return (0xB0)
                    }

                    If ((Arg2 == 0xB8))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0xB9))
                    {
                        Return (One)
                    }

                    If ((Arg2 == 0xBA))
                    {
                        Return (One)
                    }

                    If ((Arg2 == 0xBB))
                    {
                        Return (One)
                    }

                    If ((Arg2 == 0xBC))
                    {
                        Return (0x03)
                    }

                    If ((Arg2 == 0xBD))
                    {
                        Return (0x04)
                    }

                    If ((Arg2 == 0xBE))
                    {
                        Return (0x04)
                    }

                    If ((Arg2 == 0xBF))
                    {
                        Return (0x04)
                    }

                    If ((Arg2 == 0xC0))
                    {
                        Return (0xFF)
                    }

                    If ((Arg2 == 0xC1))
                    {
                        Return (0xFF)
                    }

                    If ((Arg2 == 0xC2))
                    {
                        Return (0xFF)
                    }

                    If ((Arg2 == 0xC3))
                    {
                        Return (0xFF)
                    }

                    If ((Arg2 == 0xC4))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0xC5))
                    {
                        Return (0xB3)
                    }

                    If ((Arg2 == 0xC6))
                    {
                        Return (0xC9)
                    }

                    If ((Arg2 == 0xC7))
                    {
                        Return (0x8C)
                    }

                    If ((Arg2 == 0xC8))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0xC9))
                    {
                        Return (0xB3)
                    }

                    If ((Arg2 == 0xCA))
                    {
                        Return (0xC9)
                    }

                    If ((Arg2 == 0xCB))
                    {
                        Return (0x8C)
                    }

                    If ((Arg2 == 0xCC))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0xCD))
                    {
                        Return (0xB3)
                    }

                    If ((Arg2 == 0xCE))
                    {
                        Return (0xC9)
                    }

                    If ((Arg2 == 0xCF))
                    {
                        Return (0x8C)
                    }

                    If ((Arg2 == 0xD0))
                    {
                        Return (0xFF)
                    }

                    If ((Arg2 == 0xD1))
                    {
                        Return (0xFF)
                    }

                    If ((Arg2 == 0xD2))
                    {
                        Return (0xFF)
                    }

                    If ((Arg2 == 0xD3))
                    {
                        Return (0xFF)
                    }

                    If ((Arg2 == 0xD4))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0xD5))
                    {
                        Return (0xC6)
                    }

                    If ((Arg2 == 0xD6))
                    {
                        Return (0x73)
                    }

                    If ((Arg2 == 0xD7))
                    {
                        Return (0x86)
                    }

                    If ((Arg2 == 0xD8))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0xD9))
                    {
                        Return (0xC6)
                    }

                    If ((Arg2 == 0xDA))
                    {
                        Return (0x73)
                    }

                    If ((Arg2 == 0xDB))
                    {
                        Return (0x86)
                    }

                    If ((Arg2 == 0xDC))
                    {
                        Return (Zero)
                    }

                    If ((Arg2 == 0xDD))
                    {
                        Return (0xC6)
                    }

                    If ((Arg2 == 0xDE))
                    {
                        Return (0x73)
                    }

                    If ((Arg2 == 0xDF))
                    {
                        Return (0x86)
                    }

                    If ((Arg2 == 0xFE))
                    {
                        ^^^LPCB.EC0.XXJC = One
                        Return (0xAA)
                    }
                }

                Return (0xFF)
            }
        }

@tvelazquez
Copy link
Author

@yangxiaohua2009 same result with _CRS & _INI changed. The es8316_i2c_probe failed to be called. This is a nightmare.

@mchehab @plbossart good job with Improve quirks detection for es8336 #4112 I tried mchehab:sound-es8336 with dynamic debug enabled and this is the

dmesg
[   10.596304] acpi:acpi_bus_get_status: ACPI: Device [I2C1] status [0000000f]
[   10.596305] acpi:acpi_util_eval_error: ACPI: \_SB_.PC00.I2C2: ACPI: utils: Evaluate [_STA]: AE_NOT_FOUND
[   10.596306] acpi:acpi_bus_get_status: ACPI: Device [I2C2] status [0000000f]
[   10.596310] acpi:acpi_evaluate_integer: ACPI: \_SB_.PC00.I2C2.ESSX: ACPI: utils: Return value [15]
[   10.596311] acpi:acpi_bus_get_status: ACPI: Device [ESSX] status [0000000f]
[   10.596316] acpi:acpi_util_eval_error: ACPI: \_SB_.PC00.I2C3: ACPI: utils: Evaluate [_STA]: AE_NOT_FOUND
--
[   10.598744] i2c_core:i2c_new_client_device: i2c i2c-0: client [GXTP7863:00] registered with bus id i2c-GXTP7863:00
[   10.598751] acpi:acpi_evaluate_integer: ACPI: \_SB_.PC00.I2C2.ESSX: ACPI: utils: Return value [15]
[   10.598752] acpi:acpi_bus_get_status: ACPI: Device [ESSX] status [0000000f]
[   10.599133] acpi:acpi_evaluate_integer: ACPI: \_SB_.PC00.I2C3.HWSP: ACPI: utils: Return value [15]
--
[   10.599546] acpi:acpi_iommu_configure_id: intel-lpss 0000:00:15.2: Adding to IOMMU failed: -19
[   10.599594] acpi:acpi_device_set_power: ACPI: \_SB_.PC00.I2C2: PM: Power state change: D0 -> D0
[   10.599596] acpi:acpi_device_set_power: ACPI: \_SB_.PC00.I2C2: PM: Already in D0
[   10.599715] acpi:acpi_device_notify: wakeup wakeup32: No ACPI support
--
[   10.611409] acpi:acpi_pci_irq_enable: intel-lpss 0000:00:15.2: PCI INT C -> GSI 29 (level, low) -> IRQ 29
[   10.611462] acpi:acpi_device_notify: ACPI: \_SB_.PC00.I2C2: ACPI: Bound to device idma64.1
[   10.611475] acpi:acpi_iommu_configure_id: idma64 idma64.1: Adding to IOMMU failed: -19
--
[   10.611720] idma64 idma64.1: Found Intel integrated DMA 64-bit
[   10.611732] acpi:acpi_device_notify: ACPI: \_SB_.PC00.I2C2: ACPI: Bound to device i2c_designware.1
[   10.611740] acpi:acpi_iommu_configure_id: i2c_designware i2c_designware.1: Adding to IOMMU failed: -19
--
[   10.612525] acpi:acpi_bus_get_status: ACPI: Device [I2C1] status [0000000f]
[   10.612527] acpi:acpi_util_eval_error: ACPI: \_SB_.PC00.I2C2: ACPI: utils: Evaluate [_STA]: AE_NOT_FOUND
[   10.612527] acpi:acpi_bus_get_status: ACPI: Device [I2C2] status [0000000f]
[   10.612530] acpi:acpi_evaluate_integer: ACPI: \_SB_.PC00.I2C2.ESSX: ACPI: utils: Return value [15]
[   10.612531] acpi:acpi_bus_get_status: ACPI: Device [ESSX] status [0000000f]
[   10.612537] acpi:acpi_util_eval_error: ACPI: \_SB_.PC00.I2C3: ACPI: utils: Evaluate [_STA]: AE_NOT_FOUND
--
[   10.613738] acpi:acpi_bus_get_status: ACPI: Device [PSM] status [00000000]
[   10.613741] acpi:acpi_util_eval_error: ACPI: \_SB_.PC00.I2C2: ACPI: utils: Evaluate [_SEM]: AE_NOT_FOUND
[   10.613742] i2c_core:i2c_detect_slave_mode: i2c_designware i2c_designware.1: ACPI slave is not supported yet
--
[   10.613776] gpiolib:gpiod_get_index: i2c_designware i2c_designware.1: No GPIO consumer scl found
[   10.613780] acpi:acpi_device_notify: ACPI: \_SB_.PC00.I2C2: ACPI: Bound to device i2c-1
[   10.613790] i2c_core:i2c_register_adapter: i2c i2c-1: adapter [Synopsys DesignWare I2C adapter] registered
--
[   10.613888] acpi:acpi_bus_get_status: ACPI: Device [XDCI] status [00000000]
[   10.613905] acpi:acpi_evaluate_integer: ACPI: \_SB_.PC00.I2C2.ESSX: ACPI: utils: Return value [15]
[   10.613906] acpi:acpi_bus_get_status: ACPI: Device [ESSX] status [0000000f]
[   10.613914] acpi:acpi_device_notify: ACPI: \_SB_.PC00.I2C2.ESSX: ACPI: Bound to device i2c-ESSX8336:00
[   10.613922] i2c_core:i2c_new_client_device: i2c i2c-1: client [ESSX8336:00] registered with bus id i2c-ESSX8336:00
[   10.614234] acpi:acpi_evaluate_integer: ACPI: \_SB_.PC00.I2C3.HWSP: ACPI: utils: Return value [15]
--
[   10.625204] acpi:acpi_device_probe: ACPI: Found driver [tpm_crb] for device [TPM]
[   10.626263] acpi:acpi_device_set_power: ACPI: \_SB_.PC00.I2C2: PM: Power state change: D0 -> D3cold
[   10.626273] intel-lpss 0000:00:15.3: enabling device (0004 -> 0006)
[   10.626450] acpi:acpi_device_set_power: ACPI: \_SB_.PC00.I2C2: PM: Power state changed to D3hot
[   10.626464] acpi:acpi_pci_irq_check_entry: ACPI: PCI: 0000:00:15[D] -> [30]
--
[   10.627812] acpi:acpi_bus_get_status: ACPI: Device [I2C1] status [0000000f]
[   10.627813] acpi:acpi_util_eval_error: ACPI: \_SB_.PC00.I2C2: ACPI: utils: Evaluate [_STA]: AE_NOT_FOUND
[   10.627814] acpi:acpi_bus_get_status: ACPI: Device [I2C2] status [0000000f]
[   10.627819] acpi:acpi_evaluate_integer: ACPI: \_SB_.PC00.I2C2.ESSX: ACPI: utils: Return value [15]
[   10.627820] acpi:acpi_bus_get_status: ACPI: Device [ESSX] status [0000000f]
[   10.627829] acpi:acpi_util_eval_error: ACPI: \_SB_.PC00.I2C3: ACPI: utils: Evaluate [_STA]: AE_NOT_FOUND
--
[   10.784106] acpi:acpi_device_probe: ACPI: Found driver [video] for device [GFX0]
[   10.803856] acpi:acpi_device_notify: platform snd-soc-dummy: No ACPI support
[   10.803903] snd_soc_core:snd_soc_register_dai: snd-soc-dummy snd-soc-dummy: ASoC: dynamically register DAI snd-soc-dummy
[   10.803904] snd_soc_core:snd_soc_register_dai: snd-soc-dummy snd-soc-dummy: ASoC: Registered DAI 'snd-soc-dummy-dai'
--
[   11.849678] mousedev: PS/2 mouse device common for all mice
[   11.849921] acpi:acpi_device_set_power: ACPI: \_SB_.PC00.I2C2: PM: Power state change: D3hot -> D0
[   11.849932] acpi:acpi_device_set_power: ACPI: \_SB_.PC00.I2C2: PM: Power state changed to D0
[   11.851307] acpi:acpi_device_set_power: ACPI: \_SB_.PC00.I2C0: PM: Power state change: D3hot -> D0
--
[   11.854117] videodev: Linux video capture interface: v2.00
[   11.861456] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 0 in _CRS
[   11.861471] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 1 in _CRS
[   11.861480] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 2 in _CRS
[   11.861507] i2c_core:i2c_register_driver: i2c-core: driver [es8316] registered
[   11.863378] gpiolib_acpi:acpi_get_gpiod_by_index: acpi GXTP7863:00: GPIO: looking up 0 in _CRS
--
[   11.863855] acpi:acpi_device_notify: hwmon hwmon1: No ACPI support
[   11.863887] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 0 in _CRS
[   11.863897] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 1 in _CRS
[   11.863903] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 2 in _CRS
[   11.863955] gpiolib_acpi:acpi_get_gpiod_by_index: acpi GXTP7863:00: GPIO: looking up 0 in _CRS
--
[   11.867136] acpi:acpi_device_notify: powercap intel-rapl:1: No ACPI support
[   11.867182] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 0 in _CRS
[   11.867188] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 1 in _CRS
[   11.867192] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 2 in _CRS
[   11.867275] gpiolib_acpi:acpi_get_gpiod_by_index: acpi GXTP7863:00: GPIO: looking up 0 in _CRS
--
[   12.057552] i2c_core:i2c_new_scanned_device: i2c i2c-13: Probing failed, no device found
[   12.057623] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 0 in _CRS
[   12.057634] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 1 in _CRS
[   12.057638] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 2 in _CRS
[   12.057697] gpiolib_acpi:acpi_get_gpiod_by_index: acpi GXTP7863:00: GPIO: looking up 0 in _CRS
--
[   12.062416] iTCO_wdt iTCO_wdt: initialized. heartbeat=30 sec (nowayout=0)
[   12.062441] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 0 in _CRS
[   12.062451] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 1 in _CRS
[   12.062456] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 2 in _CRS
[   12.062505] gpiolib_acpi:acpi_get_gpiod_by_index: acpi GXTP7863:00: GPIO: looking up 0 in _CRS
--
[   12.062974] gpiolib:gpiod_get_index: usb 1-10: No GPIO consumer reset found
[   12.062989] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 0 in _CRS
[   12.062995] acpi:acpi_device_notify: bluetooth hci0: No ACPI support
[   12.062995] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 1 in _CRS
[   12.063002] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 2 in _CRS
[   12.063011] acpi:acpi_device_notify: rfkill rfkill1: No ACPI support
--
[   12.063043] usbcore: registered new interface driver btusb
[   12.063084] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 0 in _CRS
[   12.063100] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 1 in _CRS
[   12.063107] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 2 in _CRS
[   12.063139] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 0 in _CRS
[   12.063214] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 1 in _CRS
[   12.063215] gpiolib_acpi:acpi_get_gpiod_by_index: acpi GXTP7863:00: GPIO: looking up 0 in _CRS
[   12.063268] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 2 in _CRS
[   12.064267] Bluetooth: hci0: Bootloader revision 0.4 build 0 week 30 2018
--
[   12.065275] Bluetooth: hci0: Minimum firmware build 1 week 10 2014
[   12.066326] acpi:acpi_iommu_configure_id: snd_hda_intel 0000:00:1f.3: Adding to IOMMU failed: -19
[   12.066330] snd_hda_intel 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100
[   12.066838] gpiolib_acpi:acpi_get_gpiod_by_index: acpi GXTP7863:00: GPIO: looking up 0 in _CRS
[   12.066841] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 0 in _CRS
[   12.066875] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 1 in _CRS
[   12.066883] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 2 in _CRS
[   12.067435] Bluetooth: hci0: Found device firmware: intel/ibt-19-0-4.sfi
--
[   12.072248] usbcore: registered new interface driver uvcvideo
[   12.072261] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 0 in _CRS
[   12.072311] gpiolib_acpi:acpi_get_gpiod_by_index: acpi GXTP7863:00: GPIO: looking up 0 in _CRS
[   12.072316] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 1 in _CRS
[   12.072356] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 2 in _CRS
[   12.108274] acpi:acpi_iommu_configure_id: sof-audio-pci-intel-tgl 0000:00:1f.3: Adding to IOMMU failed: -19
[   12.108279] sof-audio-pci-intel-tgl 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100
[   12.108333] snd_sof_pci:sof_pci_probe: sof-audio-pci-intel-tgl 0000:00:1f.3: PCI DSP detected
[   12.108340] sof-audio-pci-intel-tgl 0000:00:1f.3: enabling device (0000 -> 0002)
--
[   12.108555] sof-audio-pci-intel-tgl 0000:00:1f.3: bound 0000:00:02.0 (ops i915_exit [i915])
[   12.108656] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 0 in _CRS
[   12.108659] gpiolib_acpi:acpi_get_gpiod_by_index: acpi GXTP7863:00: GPIO: looking up 0 in _CRS
[   12.108695] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 1 in _CRS
[   12.108710] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 2 in _CRS
[   12.110097] snd_soc_core:snd_soc_register_dai: dmic-codec dmic-codec: ASoC: dynamically register DAI dmic-codec
[   12.110100] snd_soc_core:snd_soc_register_dai: dmic-codec dmic-codec: ASoC: Registered DAI 'dmic-hifi'
[   12.110121] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 0 in _CRS
[   12.110154] gpiolib_acpi:acpi_get_gpiod_by_index: acpi GXTP7863:00: GPIO: looking up 0 in _CRS
[   12.110157] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 1 in _CRS
[   12.110186] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 2 in _CRS
[   12.114769] snd_sof_intel_hda_common:hda_dsp_ctrl_get_caps: sof-audio-pci-intel-tgl 0000:00:1f.3: checking for capabilities at offset 0xc00
[   12.114774] snd_sof_intel_hda_common:hda_dsp_ctrl_get_caps: sof-audio-pci-intel-tgl 0000:00:1f.3: found ML capability at 0xc00
[   12.114775] snd_sof_intel_hda_common:hda_dsp_ctrl_get_caps: sof-audio-pci-intel-tgl 0000:00:1f.3: checking for capabilities at offset 0x800
[   12.114779] snd_sof_intel_hda_common:hda_dsp_ctrl_get_caps: sof-audio-pci-intel-tgl 0000:00:1f.3: found DSP capability at 0x800
[   12.114781] snd_sof_intel_hda_common:hda_dsp_ctrl_get_caps: sof-audio-pci-intel-tgl 0000:00:1f.3: checking for capabilities at offset 0x500
[   12.114786] snd_sof_intel_hda_common:hda_dsp_ctrl_get_caps: sof-audio-pci-intel-tgl 0000:00:1f.3: found GTS capability at 0x500
[   12.114787] snd_sof_intel_hda_common:hda_dsp_ctrl_get_caps: sof-audio-pci-intel-tgl 0000:00:1f.3: checking for capabilities at offset 0x1f00
[   12.114791] snd_sof_intel_hda_common:hda_dsp_ctrl_get_caps: sof-audio-pci-intel-tgl 0000:00:1f.3: found DRSM capability at 0x1f00
[   12.114792] snd_sof_intel_hda_common:hda_dsp_ctrl_get_caps: sof-audio-pci-intel-tgl 0000:00:1f.3: checking for capabilities at offset 0x700
[   12.114797] snd_sof_intel_hda_common:hda_dsp_ctrl_get_caps: sof-audio-pci-intel-tgl 0000:00:1f.3: found SPIB capability at 0x700
[   12.114811] snd_sof_intel_hda_common:hda_dsp_stream_init: sof-audio-pci-intel-tgl 0000:00:1f.3: hda global caps = 0x1009701
[   12.114812] snd_sof_intel_hda_common:hda_dsp_stream_init: sof-audio-pci-intel-tgl 0000:00:1f.3: detected 9 playback and 7 capture streams
[   12.114904] sof-audio-pci-intel-tgl 0000:00:1f.3: use msi interrupt mode
[   12.114905] snd_sof_intel_hda_common:hda_dsp_probe: sof-audio-pci-intel-tgl 0000:00:1f.3: using IPC IRQ 145
[   12.114978] snd_sof:snd_sof_pci_update_bits_unlocked: sof-audio-pci-intel-tgl 0000:00:1f.3: Debug PCIR: 00000000 at  00000044
[   12.114980] snd_sof_intel_hda_common:hda_init_caps: sof-audio-pci-intel-tgl 0000:00:1f.3: PP capability, will probe DSP later.
[   12.117729] snd_sof:snd_sof_pci_update_bits_unlocked: sof-audio-pci-intel-tgl 0000:00:1f.3: Debug PCIR: 00000040 at  00000048
[   12.117734] snd_sof:snd_sof_pci_update_bits_unlocked: sof-audio-pci-intel-tgl 0000:00:1f.3: Debug PCIW: 00000000 at  00000048
[   12.119760] snd_sof_intel_hda:hda_codec_detect_mask: sof-audio-pci-intel-tgl 0000:00:1f.3: codec_mask = 0x4
[   12.119769] snd_sof:snd_sof_pci_update_bits_unlocked: sof-audio-pci-intel-tgl 0000:00:1f.3: Debug PCIR: 00000000 at  00000048
[   12.119771] snd_sof:snd_sof_pci_update_bits_unlocked: sof-audio-pci-intel-tgl 0000:00:1f.3: Debug PCIW: 00000040 at  00000048
[   12.121241] acpi:acpi_evaluate_integer: ACPI: \_SB_.PC00.HDAS.SNDW: ACPI: utils: Return value [1073741824]
[   12.121245] snd_intel_sdw_acpi:sdw_intel_scan_controller: acpi PRP00001:00: ACPI reports 4 SDW Link devices
[   12.121247] snd_intel_sdw_acpi:sdw_intel_scan_controller: acpi PRP00001:00: Link 0 not selected in firmware
[   12.121248] snd_intel_sdw_acpi:sdw_intel_scan_controller: acpi PRP00001:00: Link 1 not selected in firmware
[   12.121249] snd_intel_sdw_acpi:sdw_intel_scan_controller: acpi PRP00001:00: Link 2 not selected in firmware
[   12.121251] snd_intel_sdw_acpi:sdw_intel_scan_controller: acpi PRP00001:00: Link 3 not selected in firmware
[   12.121251] snd_sof_intel_hda_common:hda_init_caps: sof-audio-pci-intel-tgl 0000:00:1f.3: skipping SoundWire, no links enabled
[   12.121325] snd_sof_intel_hda:hda_codec_probe: sof-audio-pci-intel-tgl 0000:00:1f.3: HDA codec #2 probed OK: response: 80862812
[   12.121945] acpi:acpi_device_notify: hdaudio ehdaudio0D2: No ACPI support
[   12.121965] snd_sof_intel_hda:request_codec_module: hdaudio ehdaudio0D2: loading codec module: hdaudio:v80862812r00100000a01

[   12.130425] snd_soc_core:snd_soc_register_dai: snd_hda_codec_hdmi ehdaudio0D2: ASoC: dynamically register DAI ehdaudio0D2
[   12.130427] snd_soc_core:snd_soc_register_dai: snd_hda_codec_hdmi ehdaudio0D2: ASoC: Registered DAI 'Analog Codec DAI'
[   12.130428] snd_soc_core:snd_soc_register_dai: snd_hda_codec_hdmi ehdaudio0D2: ASoC: dynamically register DAI ehdaudio0D2
[   12.130429] snd_soc_core:snd_soc_register_dai: snd_hda_codec_hdmi ehdaudio0D2: ASoC: Registered DAI 'Digital Codec DAI'
[   12.130429] snd_soc_core:snd_soc_register_dai: snd_hda_codec_hdmi ehdaudio0D2: ASoC: dynamically register DAI ehdaudio0D2
[   12.130430] snd_soc_core:snd_soc_register_dai: snd_hda_codec_hdmi ehdaudio0D2: ASoC: Registered DAI 'Alt Analog Codec DAI'
[   12.130431] snd_soc_core:snd_soc_register_dai: snd_hda_codec_hdmi ehdaudio0D2: ASoC: dynamically register DAI ehdaudio0D2
[   12.130432] snd_soc_core:snd_soc_register_dai: snd_hda_codec_hdmi ehdaudio0D2: ASoC: Registered DAI 'intel-hdmi-hifi1'
[   12.130433] snd_soc_core:snd_soc_register_dai: snd_hda_codec_hdmi ehdaudio0D2: ASoC: dynamically register DAI ehdaudio0D2
[   12.130433] snd_soc_core:snd_soc_register_dai: snd_hda_codec_hdmi ehdaudio0D2: ASoC: Registered DAI 'intel-hdmi-hifi2'
[   12.130434] snd_soc_core:snd_soc_register_dai: snd_hda_codec_hdmi ehdaudio0D2: ASoC: dynamically register DAI ehdaudio0D2
[   12.130435] snd_soc_core:snd_soc_register_dai: snd_hda_codec_hdmi ehdaudio0D2: ASoC: Registered DAI 'intel-hdmi-hifi3'
[   12.130435] snd_soc_core:snd_soc_register_dai: snd_hda_codec_hdmi ehdaudio0D2: ASoC: dynamically register DAI ehdaudio0D2
[   12.130436] snd_soc_core:snd_soc_register_dai: snd_hda_codec_hdmi ehdaudio0D2: ASoC: Registered DAI 'intel-hdmi-hifi4'
[   12.130461] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 0 in _CRS
[   12.130504] gpiolib_acpi:acpi_get_gpiod_by_index: acpi GXTP7863:00: GPIO: looking up 0 in _CRS
[   12.130506] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 1 in _CRS
[   12.130538] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up 2 in _CRS
[   12.130789] snd_sof:sof_set_fw_state: sof-audio-pci-intel-tgl 0000:00:1f.3: fw_state change: 0 -> 2
[   12.130895] snd_intel_dspcfg:intel_nhlt_get_dmic_geo: sof-audio-pci-intel-tgl 0000:00:1f.3: found 2 format definitions
[   12.130898] snd_intel_dspcfg:intel_nhlt_get_dmic_geo: sof-audio-pci-intel-tgl 0000:00:1f.3: max channels found 2
[   12.130899] snd_intel_dspcfg:intel_nhlt_get_dmic_geo: sof-audio-pci-intel-tgl 0000:00:1f.3: Array with 2 dmics
[   12.130900] snd_intel_dspcfg:intel_nhlt_get_dmic_geo: sof-audio-pci-intel-tgl 0000:00:1f.3: dmic number 2 max_ch 2
[   12.130903] sof-audio-pci-intel-tgl 0000:00:1f.3: NHLT_DEVICE_I2S detected, ssp_mask 0x1
[   12.130905] snd_sof_intel_hda_common:hda_machine_select: sof-audio-pci-intel-tgl 0000:00:1f.3: MCLK mask 0x1 found in NHLT
[   12.130906] sof-audio-pci-intel-tgl 0000:00:1f.3: Overriding topology with MCLK mask 0x1 from NHLT
[   12.130908] sof-audio-pci-intel-tgl 0000:00:1f.3: hda codecs found, mask 4
[   12.130916] snd_sof:snd_sof_load_firmware: sof-audio-pci-intel-tgl 0000:00:1f.3: loading firmware
[   12.133083] snd_sof:snd_sof_load_firmware_raw: sof-audio-pci-intel-tgl 0000:00:1f.3: request_firmware intel/sof/sof-tgl.ri successful
[   12.133087] snd_sof:sof_ipc3_fw_parse_ext_man: sof-audio-pci-intel-tgl 0000:00:1f.3: found sof_ext_man header type 1 size 0x1a0
[   12.133089] snd_sof:sof_ipc3_fw_parse_ext_man: sof-audio-pci-intel-tgl 0000:00:1f.3: found sof_ext_man header type 6 size 0x20
[   12.133090] snd_sof_intel_hda_common:hda_dsp_ext_man_get_cavs_config_data: sof-audio-pci-intel-tgl 0000:00:1f.3: FW clock config: HPRO
[   12.133091] snd_sof:sof_ipc3_fw_parse_ext_man: sof-audio-pci-intel-tgl 0000:00:1f.3: found sof_ext_man header type 0 size 0x50
[   12.133092] sof-audio-pci-intel-tgl 0000:00:1f.3: Firmware info: version 2:2:0-57864
[   12.133093] sof-audio-pci-intel-tgl 0000:00:1f.3: Firmware: ABI 3:22:1 Kernel ABI 3:23:0
[   12.133094] snd_sof:sof_ipc3_fw_parse_ext_man: sof-audio-pci-intel-tgl 0000:00:1f.3: found sof_ext_man header type 2 size 0x70
[   12.133095] snd_sof:sof_ipc3_get_cc_info: sof-audio-pci-intel-tgl 0000:00:1f.3: Firmware info: used compiler XCC 12:0:8 <RG-2017.8-linux> used optimization flags -O2
[   12.133101] snd_sof:sof_ipc3_fw_parse_ext_man: sof-audio-pci-intel-tgl 0000:00:1f.3: found sof_ext_man header type 3 size 0x30
[   12.133103] sof-audio-pci-intel-tgl 0000:00:1f.3: unknown sof_ext_man header type 3 size 0x30
[   12.133103] snd_sof:sof_ipc3_fw_parse_ext_man: sof-audio-pci-intel-tgl 0000:00:1f.3: found sof_ext_man header type 4 size 0x20
[   12.133104] snd_sof:ipc3_fw_ext_man_get_dbg_abi_info: sof-audio-pci-intel-tgl 0000:00:1f.3: Firmware: DBG_ABI 5:3:0
[   12.133105] snd_sof:sof_ipc3_fw_parse_ext_man: sof-audio-pci-intel-tgl 0000:00:1f.3: found sof_ext_man header type 5 size 0x20
[   12.133106] snd_sof:ipc3_fw_ext_man_get_config_data: sof-audio-pci-intel-tgl 0000:00:1f.3: manifest can hold up to 3 config elements
[   12.133107] snd_sof:ipc3_fw_ext_man_get_config_data: sof-audio-pci-intel-tgl 0000:00:1f.3: get index 0 token 1 val 384
[   12.133108] snd_sof:ipc3_fw_ext_man_get_config_data: sof-audio-pci-intel-tgl 0000:00:1f.3: get index 1 token 2 val 1
[   12.133109] snd_sof:ipc3_fw_ext_man_get_config_data: sof-audio-pci-intel-tgl 0000:00:1f.3: get index 2 token 0 val 0
[   12.133110] snd_sof:sof_set_fw_state: sof-audio-pci-intel-tgl 0000:00:1f.3: fw_state change: 2 -> 3
[   12.133115] snd_sof:snd_sof_pci_update_bits_unlocked: sof-audio-pci-intel-tgl 0000:00:1f.3: Debug PCIR: 00000002 at  00000048
[   12.133120] snd_sof:snd_sof_pci_update_bits_unlocked: sof-audio-pci-intel-tgl 0000:00:1f.3: Debug PCIW: 00000000 at  00000048
[   12.133129] snd_sof:snd_sof_pci_update_bits_unlocked: sof-audio-pci-intel-tgl 0000:00:1f.3: Debug PCIR: 00000000 at  00000044
[   12.133134] snd_sof:snd_sof_pci_update_bits_unlocked: sof-audio-pci-intel-tgl 0000:00:1f.3: Debug PCIW: 00000004 at  00000044
[   12.133135] snd_sof:snd_sof_run_firmware: sof-audio-pci-intel-tgl 0000:00:1f.3: booting DSP firmware
[   12.133151] snd_sof_intel_hda_common:hda_dsp_stream_setup_bdl: sof-audio-pci-intel-tgl 0000:00:1f.3: period_bytes:0x0
[   12.133153] snd_sof_intel_hda_common:hda_dsp_stream_setup_bdl: sof-audio-pci-intel-tgl 0000:00:1f.3: periods:1
[   12.133210] snd_sof_intel_hda_common:hda_dsp_stream_hw_params: sof-audio-pci-intel-tgl 0000:00:1f.3: FW Poll Status: reg[0x160]=0x40000 successful
[   12.133229] snd_sof_intel_hda_common:hda_dsp_stream_hw_params: sof-audio-pci-intel-tgl 0000:00:1f.3: FW Poll Status: reg[0x160]=0x40000 successful
[   12.133231] snd_sof_intel_hda_common:hda_dsp_stream_setup_bdl: sof-audio-pci-intel-tgl 0000:00:1f.3: period_bytes:0x0
[   12.133232] snd_sof_intel_hda_common:hda_dsp_stream_setup_bdl: sof-audio-pci-intel-tgl 0000:00:1f.3: periods:1
[   12.133276] snd_sof_intel_hda_common:hda_dsp_cl_boot_firmware: sof-audio-pci-intel-tgl 0000:00:1f.3: Attempting iteration 0 of Core En/ROM load...
[   12.133785] snd_sof_intel_hda_common:hda_dsp_core_power_up: sof-audio-pci-intel-tgl 0000:00:1f.3: FW Poll Status: reg[0x4]=0xf010f0f successful
[   12.133801] snd_sof_intel_hda_common:hda_dsp_core_reset_leave: sof-audio-pci-intel-tgl 0000:00:1f.3: FW Poll Status: reg[0x4]=0xf010f0e successful
[   12.133803] snd_sof_intel_hda_common:hda_dsp_core_run: sof-audio-pci-intel-tgl 0000:00:1f.3: unstall/run core: core_mask = 1
[   12.133806] snd_sof_intel_hda_common:hda_dsp_core_is_enabled: sof-audio-pci-intel-tgl 0000:00:1f.3: DSP core(s) enabled? 1 : core_mask 1
[   12.134729] snd_sof_intel_hda_common:cl_dsp_init: sof-audio-pci-intel-tgl 0000:00:1f.3: FW Poll Status: reg[0xd4]=0x80000000 successful
[   12.206748] snd_sof_intel_hda_common:cl_dsp_init: sof-audio-pci-intel-tgl 0000:00:1f.3: FW Poll Status: reg[0x80000]=0x5000001 successful
[   12.227233] snd_sof_intel_hda_common:hda_cl_copy_fw: sof-audio-pci-intel-tgl 0000:00:1f.3: FW Poll Status: reg[0x80000]=0x5 successful
[   12.227747] snd_sof_intel_hda_common:hda_dsp_stream_trigger: sof-audio-pci-intel-tgl 0000:00:1f.3: FW Poll Status: reg[0x160]=0x140000 successful
[   12.227750] snd_sof_intel_hda_common:hda_dsp_cl_boot_firmware: sof-audio-pci-intel-tgl 0000:00:1f.3: Firmware download successful, booting...
[   12.242460] snd_sof:ipc3_log_header: sof-audio-pci-intel-tgl 0000:00:1f.3: ipc rx: 0x70000000
[   12.242462] snd_sof:ipc3_fw_ready: sof-audio-pci-intel-tgl 0000:00:1f.3: DSP is ready 0x70000000 offset 0x81000
[   12.242580] sof-audio-pci-intel-tgl 0000:00:1f.3: Firmware info: version 2:2:0-57864
[   12.242581] sof-audio-pci-intel-tgl 0000:00:1f.3: Firmware: ABI 3:22:1 Kernel ABI 3:23:0
[   12.242605] snd_sof:ipc3_get_windows: sof-audio-pci-intel-tgl 0000:00:1f.3:  mailbox upstream 0x81000 - size 0x1000
[   12.242606] snd_sof:ipc3_get_windows: sof-audio-pci-intel-tgl 0000:00:1f.3:  mailbox downstream 0xa0000 - size 0x2000
[   12.242607] snd_sof:ipc3_get_windows: sof-audio-pci-intel-tgl 0000:00:1f.3:  stream region 0xc1000 - size 0x1000
[   12.242607] snd_sof:ipc3_get_windows: sof-audio-pci-intel-tgl 0000:00:1f.3:  debug region 0xc0000 - size 0x800
[   12.242608] snd_sof:sof_set_fw_state: sof-audio-pci-intel-tgl 0000:00:1f.3: fw_state change: 3 -> 6
[   12.242612] snd_sof:snd_sof_run_firmware: sof-audio-pci-intel-tgl 0000:00:1f.3: firmware boot complete
[   12.242614] snd_sof:sof_set_fw_state: sof-audio-pci-intel-tgl 0000:00:1f.3: fw_state change: 6 -> 7
[   12.242622] snd_sof:snd_sof_pci_update_bits_unlocked: sof-audio-pci-intel-tgl 0000:00:1f.3: Debug PCIR: 00000000 at  00000048
[   12.242631] snd_sof:snd_sof_pci_update_bits_unlocked: sof-audio-pci-intel-tgl 0000:00:1f.3: Debug PCIW: 00000002 at  00000048
[   12.242644] snd_sof:snd_sof_pci_update_bits_unlocked: sof-audio-pci-intel-tgl 0000:00:1f.3: Debug PCIR: 00000004 at  00000044
[   12.242647] snd_sof:snd_sof_pci_update_bits_unlocked: sof-audio-pci-intel-tgl 0000:00:1f.3: Debug PCIW: 00000000 at  00000044
[   12.242648] snd_sof:sof_probe_continue: sof-audio-pci-intel-tgl 0000:00:1f.3: SOF firmware trace disabled
[   12.242651] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: dynamically register DAI 0000:00:1f.3
[   12.242652] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: Registered DAI 'SSP0 Pin'
[   12.242652] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: dynamically register DAI 0000:00:1f.3
[   12.242653] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: Registered DAI 'SSP1 Pin'
[   12.242654] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: dynamically register DAI 0000:00:1f.3
[   12.242655] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: Registered DAI 'SSP2 Pin'
[   12.242656] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: dynamically register DAI 0000:00:1f.3
[   12.242656] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: Registered DAI 'SSP3 Pin'
[   12.242657] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: dynamically register DAI 0000:00:1f.3
[   12.242658] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: Registered DAI 'SSP4 Pin'
[   12.242659] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: dynamically register DAI 0000:00:1f.3
[   12.242659] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: Registered DAI 'SSP5 Pin'
[   12.242660] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: dynamically register DAI 0000:00:1f.3
[   12.242661] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: Registered DAI 'DMIC01 Pin'
[   12.242662] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: dynamically register DAI 0000:00:1f.3
[   12.242663] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: Registered DAI 'DMIC16k Pin'
[   12.242664] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: dynamically register DAI 0000:00:1f.3
[   12.242665] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: Registered DAI 'iDisp1 Pin'
[   12.242665] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: dynamically register DAI 0000:00:1f.3
[   12.242666] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: Registered DAI 'iDisp2 Pin'
[   12.242668] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: dynamically register DAI 0000:00:1f.3
[   12.242668] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: Registered DAI 'iDisp3 Pin'
[   12.242669] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: dynamically register DAI 0000:00:1f.3
[   12.242670] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: Registered DAI 'iDisp4 Pin'
[   12.242670] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: dynamically register DAI 0000:00:1f.3
[   12.242671] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: Registered DAI 'Analog CPU DAI'
[   12.242672] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: dynamically register DAI 0000:00:1f.3
[   12.242673] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: Registered DAI 'Digital CPU DAI'
[   12.242673] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: dynamically register DAI 0000:00:1f.3
[   12.242674] snd_soc_core:snd_soc_register_dai: sof-audio-pci-intel-tgl 0000:00:1f.3: ASoC: Registered DAI 'Alt Analog CPU DAI'
[   12.242679] acpi:acpi_device_notify: platform sof-essx8336: No ACPI support
[   12.242699] snd_sof:sof_machine_register: sof-audio-pci-intel-tgl 0000:00:1f.3: created machine sof-essx8336
[   12.242703] acpi:acpi_device_notify: auxiliary snd_sof.hda-probes.0: No ACPI support
[   12.242709] snd_sof_pci:sof_pci_probe_complete: sof-audio-pci-intel-tgl 0000:00:1f.3: Completing SOF PCI probe
[   12.242746] snd_sof:ipc3_log_header: sof-audio-pci-intel-tgl 0000:00:1f.3: ipc rx done: 0x70000000
[   12.257624] sof-essx8336 sof-essx8336: quirk mask 0x20
[   12.257626] sof-essx8336 sof-essx8336: quirk SSP0
[   12.257626] sof-essx8336 sof-essx8336: quirk DMIC enabled
[   12.257814] i2c i2c-ESSX8336:00: speaker gpio 0 active high, headphone gpio 1 active low
[   12.257816] gpiolib:gpiod_get_index: i2c i2c-ESSX8336:00: GPIO lookup for consumer speakers-enable
[   12.257817] gpiolib:gpiod_get_index: i2c i2c-ESSX8336:00: using ACPI for GPIO lookup
[   12.257818] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up speakers-enable-gpios
[   12.257819] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: _DSD returned ESSX8336:00 0 0 0
[   12.257828] gpiolib:gpiod_get_index: i2c i2c-ESSX8336:00: No GPIO consumer speakers-enable found
[   12.433815] NET: Registered PF_PACKET protocol family
[   13.123348] acpi:acpi_device_set_power: ACPI: \_SB_.PC00.I2C2: PM: Power state change: D0 -> D3cold
[   13.124479] acpi:acpi_device_set_power: ACPI: \_SB_.PC00.I2C2: PM: Power state changed to D3hot
[   13.125785] acpi:acpi_device_set_power: ACPI: \_SB_.PC00.I2C0: PM: Power state change: D0 -> D3cold
--
[   22.575370] acpi:acpi_device_set_power: ACPI: \_SB_.PC00.I2C0: PM: Power state changed to D0
[   22.587746] acpi:acpi_device_set_power: ACPI: \_SB_.PC00.I2C2: PM: Power state change: D3hot -> D0
[   22.587751] acpi:acpi_device_set_power: ACPI: \_SB_.PC00.I2C2: PM: Power state changed to D0
[   22.587883] gpiolib_acpi:acpi_get_gpiod_by_index: acpi GXTP7863:00: GPIO: looking up 0 in _CRS
[   22.599978] i2c i2c-ESSX8336:00: Resources present before probing
[   22.599994] sof-essx8336 sof-essx8336: quirk mask 0x20
[   22.599995] sof-essx8336 sof-essx8336: quirk SSP0
[   22.599996] sof-essx8336 sof-essx8336: quirk DMIC enabled
[   22.600155] i2c i2c-ESSX8336:00: speaker gpio 0 active high, headphone gpio 1 active low
[   22.600157] gpiolib:gpiod_get_index: i2c i2c-ESSX8336:00: GPIO lookup for consumer speakers-enable
[   22.600158] gpiolib:gpiod_get_index: i2c i2c-ESSX8336:00: using ACPI for GPIO lookup
[   22.600159] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: looking up speakers-enable-gpios
[   22.600160] gpiolib_acpi:acpi_get_gpiod_by_index: acpi ESSX8336:00: GPIO: _DSD returned ESSX8336:00 0 0 0
[   22.600167] gpiolib:gpiod_get_index: i2c i2c-ESSX8336:00: No GPIO consumer speakers-enable found
[   22.600267] i2c i2c-GXTP7863:00: deferred probe pending
[   22.600269] platform sof-essx8336: deferred probe pending
[   23.611867] acpi:acpi_device_set_power: ACPI: \_SB_.PC00.I2C0: PM: Power state change: D0 -> D3cold
[   23.612024] acpi:acpi_device_set_power: ACPI: \_SB_.PC00.I2C0: PM: Power state changed to D3hot
[   23.788859] acpi:acpi_device_set_power: ACPI: \_SB_.PC00.I2C2: PM: Power state change: D0 -> D3cold
[   23.789460] acpi:acpi_device_set_power: ACPI: \_SB_.PC00.I2C2: PM: Power state changed to D3hot
[   26.593640] acpi:acpi_device_notify: vc vcs2: No ACPI support

@plbossart Is fw_state 7 a SOF_FW_CRASHED?

[   12.242614] snd_sof:sof_set_fw_state: sof-audio-pci-intel-tgl 0000:00:1f.3: fw_state change: 6 -> 7

How do I activate the firmware trace?

[   12.242648] snd_sof:sof_probe_continue: sof-audio-pci-intel-tgl 0000:00:1f.3: SOF firmware trace disabled

@plbossart
Copy link
Member

You're looking at an 'old' kernel code @tvelazquez, state 7 is
@SOF_FW_BOOT_COMPLETE: firmware is booted up and functional

for the trace, you have to keep BIT(0) of the sof_debug parameter set.

/* Flag definitions used in sof_core_debug (sof_debug module parameter) */
#define SOF_DBG_ENABLE_TRACE	BIT(0)

@plbossart
Copy link
Member

btw the quirk detection only works if you are able to probe a codec driver...

@koffiato
Copy link

koffiato commented Oct 7, 2023

I'm assuming there are no updates for this? I wasn't able to get anything to be detected at all.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
codec ES8336 Community end-user or distro-reported issues
Projects
None yet
Development

No branches or pull requests

6 participants