Skip to content

Chuwi CoreBook X (AMD Ryzen 5 7430U): left speaker not working - missing ASoC support for AWINIC AW88298 Smart PA #5687

@pacomont

Description

@pacomont

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_acp3x enables 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:

  1. Cleared PWDN and AMPPD in SYSCTRL → writes persist ✓
  2. Cleared HMUTE in SYSCTRL2 → writes persist ✓
  3. 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

  1. 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

  2. ACPI machine table entry in the AMD ACP driver (snd-amd-acpi-mach) to match HID AWDZ8298

  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions