-
Notifications
You must be signed in to change notification settings - Fork 141
Description
Summary
The Chuwi CoreBook X has a hybrid stereo speaker setup:
- Right speaker: driven by Conexant SN6180 HDA codec (pin 0x17) — works
- Left speaker: driven by AWINIC AW88298 Smart PA amplifier via I2S — does not work
The left speaker requires an ASoC machine driver to route I2S audio from the AMD Audio Coprocessor (ACP) to the AWINIC amplifier. Currently, no Linux driver supports this configuration.
This issue also affects fresh Windows 11 installations — only the OEM Chuwi driver package enables both speakers.
System Information
- Machine: Chuwi CoreBook X (Manufacturer: CHUWI Innovation And Technology (ShenZhen) co., Ltd)
- CPU: AMD Ryzen 5 7430U (Barcelo-R / Mendocino)
- Kernel: 6.18.13-200.fc43.x86_64 (Fedora 43)
- BIOS: American Megatrends (AMI)
PCI Devices
ACP (Audio Coprocessor):
03:00.5 Multimedia controller [0480]: AMD Audio Coprocessor [1022:15e2] (rev 01)
snd_rn_pci_acp3xenables the PCI device but does NOT bind as driver- No I2S platform devices are created
- No ASoC sound card is registered
HDA:
03:00.6 Audio device [0403]: AMD Ryzen HD Audio Controller [1022:15e3]
Subsystem: Emdoor Digital Technology 0x2782:0x1221
Codec: Conexant SN6180 (Vendor ID: 0x14f120d1)
Works correctly (right speaker + headphones).
AWINIC AW88298 Amplifier — ACPI & I2C Details
ACPI DSDT definition
Scope (_SB.I2CB)
{
Device (CHIP)
{
Name (_HID, "AWDZ8298")
Name (_CID, "AWDZ8298")
Name (_UID, One)
Method (_CRS, 0, NotSerialized)
{
// I2C addresses: 0x34 and 0x35 at 400kHz on I2CB
// GPIO resource: pin 0x79 (121) - likely RSTN
}
Method (_STA, 0, NotSerialized) { Return (0x0F) } // Active
Method (_DSM, 4, Serialized)
{
// UUID: 1cc539cd-5a26-4288-a572-25c5744ebf1b
// Arg2==0: returns {0x01, 0x34, 0x01, 0x35}
// Arg2==1: returns {0x02}
}
}
}
I2C verification (bus 0, address 0x34)
The chip is alive and responds to I2C:
| Register | Name | Value (BE) | Notes |
|---|---|---|---|
| 0x00 | ID | 0x1852 | AW88298 confirmed (PID 1852 family) |
| 0x01 | SYSST | 0x0020 | NOCLKS=1 (no I2S clock!) |
| 0x04 | SYSCTRL | 0x4003 | PWDN=1, AMPPD=1 (powered down) |
| 0x05 | SYSCTRL2 | 0x0038 | HMUTE=1 (muted) |
| 0x12 | VBAT | 0x0263 | Valid voltage |
| 0x13 | TEMP | 0x0019 | 25°C |
| 0x14 | PVDD | 0x0263 | Valid voltage |
Note: The chip uses big-endian registers. i2cget reads little-endian, so raw reads are byte-swapped (e.g., ID reads as 0x5218 raw → 0x1852 actual).
I2C power-on test
Successfully powered on the amplifier via I2C:
- Cleared PWDN and AMPPD in SYSCTRL → writes persist ✓
- Cleared HMUTE in SYSCTRL2 → writes persist ✓
- SYSST still shows NOCLKS — the amp cannot operate because the AMD ACP is not providing an I2S clock signal
GPIO 121 (RSTN) is HIGH (not in reset) ✓
Root Cause
The AMD ACP at 03:00.5 does not create I2S platform devices for this machine. The kernel has no ACPI machine table entry matching HID AWDZ8298, so the ACP driver does not set up an I2S link to the AWINIC amplifier.
What is needed
-
ASoC codec driver for AW88298 (PID 1852 family). An out-of-tree driver exists: https://github.com/dianjixz/aw882xx with register header:
aw882xx_pid_1852_reg.h -
ACPI machine table entry in the AMD ACP driver (
snd-amd-acpi-mach) to match HIDAWDZ8298 -
Machine driver connecting AMD ACP I2S output to the AWINIC codec
Key Register Map (AW88298, PID 1852)
0x00 ID (RO) Chip ID = 0x1852
0x01 SYSST (RO) System status (bit5=NOCLKS, bit9=BSTS, bit4=CLKS)
0x04 SYSCTRL (RW) bit0=PWDN, bit1=AMPPD, bit6=I2SEN, bit7=RCV_MODE
0x05 SYSCTRL2 (RW) bit4=HMUTE, bits3:0=BST_IPEAK
0x06 I2SCTRL (RW) I2S configuration
Startup sequence: clear PWDN → 2ms → clear AMPPD → 1ms → check PLL → clear HMUTE
Additional info
Full DSDT dump and HDA codec dump available on request.