sound/soc/intel/boards/Kconfig | 15 + sound/soc/intel/boards/Makefile | 2 + sound/soc/intel/boards/cht_yogabook.c | 551 ++++++++++++++++++++++ sound/soc/intel/common/soc-acpi-intel-cht-match.c | 138 +++--- 4 files changed, 649 insertions(+), 57 deletions(-)
This is the second iteration of my submission for sound support for Lenovo
Yoga Book YB1-X90/X91 tablets.
These are Cherry Trail-based platforms that use the RT5677 codec and
TS3A227E jack detection IC.
The YB1-X90 is an Android-designated device and has incorrect ACPI entries
for many onboard peripherals, including sound devices. The YB1-X91 has a
DSDT node for the codec, and the same node is shared with the TS3A227E
jack detection IC (see below).
Matching with ACPI entries is somewhat tricky; see the corresponding
commit. Jack detection IC info is defined in the x86-android-tablets driver
for both platforms to simplify the code.
The machine driver is called 'cht_yogabook' because it has some
hardcoded device-specific elements and it seems this is the only known
Cherry Trail platform using the RT5677 codec. This naming is open
to discussion: a more generic name like 'cht_rt5677' or 'cht_bsw_rt5677'
may be better (requiring reworking of the driver to make it
more generic with device-specific quirks).
v2:
cht_yogabook driver:
- Remove likely obsolete code from the driver: GPIO magic manipulations
when enabling the speaker amplifier and msleep() calls when turning
the speaker/headphones on and off.
- Remove MICBIAS1 manipulation on headphone jack insertion (click
prevention): the TS3A227E should handle it by itself.
- Rename struct cht_mc_private to cht_yb_private.
ACPI matching code:
- Split the changes into two commits: reworking existing entries and adding
new ones.
- Use dmi_system_id.driver_data to specify matched machine data instead
of callbacks.
For reference, there is an ACPI node for sound configuration from YB1-X91
DSDT below:
HID: 10EC5677
_CRS resources:
I2C devices:
0: rt5677 codec
1: ts3a227e jack detection IC
GPIOs:
0: rt5677 codec reset
1: rt5677 codec pow-ldo2
2: speaker enable
INTs:
0: rt5677 codec
1: ts3a227e jack detection IC
SPI device:
0: rt5677 codec SPI connection
Decompiled fragment of ACPI dump:
Device (RTEK)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "10EC5677") // _HID: Hardware ID
Name (_CID, "10EC5677") // _CID: Compatible ID
Name (_DDN, "Realtek IIS Audio Codec") // _DDN: DOS Device Name
Name (_SUB, "17AA7005") // _SUB: Subsystem ID
Name (_UID, One) // _UID: Unique ID
Name (_PR0, Package (0x01) // _PR0: Power Resources for D0
{
CLK3
})
Name (CHAN, Package (0x02)
{
One,
0x0124F800
})
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (SBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x002C, ControllerInitiated, 0x000186A0,
AddressingMode7Bit, "\\_SB.PCI0.I2C1",
0x00, ResourceConsumer, , Exclusive,
)
I2cSerialBusV2 (0x003B, ControllerInitiated, 0x000186A0,
AddressingMode7Bit, "\\_SB.PCI0.I2C1",
0x00, ResourceConsumer, , Exclusive,
)
GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
"\\_SB.GPO3", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0019
}
GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
"\\_SB.GPO3", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0012
}
GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
"\\_SB.GPO3", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0030
}
GpioInt (Edge, ActiveLow, Exclusive, PullNone, 0x0000,
"\\_SB.GPO0", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x005B
}
GpioInt (Edge, ActiveLow, Exclusive, PullNone, 0x0000,
"\\_SB.GPO0", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x004D
}
SpiSerialBusV2 (0x0001, PolarityLow, FourWireMode, 0x08,
ControllerInitiated, 0x003D0900, ClockPolarityHigh,
ClockPhaseSecond, "\\_SB.PCI0.SPI1",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (SBUF) /* \_SB_.PCI0.I2C1.RTEK._CRS.SBUF */
}
}
Signed-off-by: Yauhen Kharuzhy <jekhor@gmail.com>
---
Yauhen Kharuzhy (3):
ASoC: Intel: soc-acpi-cht: Unify device quirks
ASoC: Intel: soc-acpi-cht: Add Lenovo Yoga Book entries
ASoC: Intel: cht_yogabook: Add driver for Lenovo Yoga Book tablets
sound/soc/intel/boards/Kconfig | 15 +
sound/soc/intel/boards/Makefile | 2 +
sound/soc/intel/boards/cht_yogabook.c | 551 ++++++++++++++++++++++
sound/soc/intel/common/soc-acpi-intel-cht-match.c | 138 +++---
4 files changed, 649 insertions(+), 57 deletions(-)
---
base-commit: 7f30250e792515b42130564cb52a9d218bad4cb3
change-id: 20260219-asoc-yogabook-v2-70c146371d20
Best regards,
--
Yauhen Kharuzhy
© 2016 - 2026 Red Hat, Inc.