mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: fixca <jaehoon1744@dankook.ac.kr>
To: broonie@kernel.org, Vijendar.Mukunda@amd.com, shumingf@realtek.com
Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH RFC 0/2] ASoC: amd: SoundWire audio for LG gram 16Z95U (rt713 + rt1320), speaker still silent
Date: Tue, 10 Nov 2026 21:54:27 +0900	[thread overview]
Message-ID: <20261110125459.3924-1-jaehoon1744@gmail.com> (raw)

Hi,

The 2026 LG gram 16 with AMD Ryzen AI 400 (16Z95U, ACP rev 0x72,
PCI SSID 1854:056c) has no internal audio on mainline: no sound card is
created. The same generation 15Z95U has been reported with identical
symptoms (https://github.com/CachyOS/distribution/issues/516).

These two patches create the card. With them, headphone playback and
internal microphone capture work. Speaker playback through the
RT1320 is still silent, and I would appreciate advice on that part
(details below). I am sending the series as RFC for that reason.

Hardware, from the ACPI tables (ACP node \_SB.PCI0.GPPA.ACP):

  acp-audio-config-flag = 0x10 (FLAG_AMD_LEGACY_ONLY_DMIC)
  PDMC (_ADR 2): no acp-audio-device-type property
  SDWC (_ADR 5): mipi-sdw-manager-list = 0x3
    link 0: SW36 _ADR 0x000030025D071301  RT713
            SDCA functions: UAJ (type 6) at 0x1, SmartMic (type 3) at 0x2
    link 1: SW23 _ADR 0x000131025D132001  RT1320
            SDCA function: SmartAmp (type 1) at 0x4

Patch 1 adds the machine to acp70_acpi_flag_override_table. Without it
snd_pci_ps returns -ENODEV because of the BIOS flag, snd_acp_pci binds
and reports "No matching ASoC machine driver found".

Patch 2 adds rt713 (link 0) + rt1320 (link 1) entries to
snd_soc_acpi_amd_acp70_sdw_machines[].

Result with both patches on 7.2.14 (Arch Linux, alsa-ucm-conf 1.2.16.1):

  card: amd-soundwire, components " cfg-amp:1 hs:rt713-sdca mic:rt713 spk:rt1320"
  SDW0-PIN0-PLAYBACK-SimpleJack  rt712-sdca-aif1   works
  SDW0-PIN3-CAPTURE-SimpleJack   rt712-sdca-aif1   not tested
  SDW0-PIN5-CAPTURE-SmartMic     rt712-sdca-aif3   captures audio
  SDW1-PIN1-PLAYBACK-SmartAmp    rt1320-aif1       silent

Open problem: RT1320 speaker output is silent

The playback stream starts and runs without any error:

  rt1320-sdca sdw:0:1:025d:1320:01: rt1320_io_init amp func_status=0x41
  rt1320-sdca sdw:0:1:025d:1320:01: rt1320_vc_preset, RT1320_KR0_INT_READY=0x1f
  rt1320-sdca sdw:0:1:025d:1320:01: rt1320_io_init version_id=2, dev_id=0x6981
  rt1320-sdca sdw:0:1:025d:1320:01: rt1320_io_init hw_init complete
  ...
  amd_sdw_manager amd_sdw_manager.1: p_params->num:0x1
  soundwire sdw-master-0-1: Port=1 hstart=1 hstop=9 port_bo=65 slots=32 max_ports=6
  rt1320-sdca sdw:0:1:025d:1320:01: rt1320_sdw_hw_params rt1320-aif1
  amd_sdw_manager amd_sdw_manager.1: dir:1 dai->id:0x1

What I checked:

 - Mixer state: "Speaker Switch" on, "rt1320-1 OT23 L/R Switch" on,
   "rt1320-1 FU21 Playback Volume" 87 (0 dB), "RX Channel Select" L,R.
 - Direct ALSA playback (speaker-test -D plughw:amdsoundwire,2) and
   playback through PipeWire both run to completion with no sound.
 - Firmware: realtek/rt1320/rt1320-patch-code-vc.bin is installed and no
   load error is logged. No RAE file and no "realtek,dspfw-name" property
   exist for this machine, so the DSP firmware is not loaded.
 - Runtime PM: after a runtime suspend/resume the peripheral re-attaches
   with func_status=0x41 and the preset is not re-applied. Forcing
   power/control=on for the RT1320 (so io_init runs only once, at boot)
   does not change the result, still silent.

The ACPI SmartAmp function carries a 5627-entry
"mipi-sdca-function-initialization-table". It follows the same sequence
as rt1320_vc_blind_write[] but differs in a number of registers, and it
embeds its own MCU patch code (0x10007000-0x10007da7) and tables. The
attached rt1320-acpi-init-vs-driver.txt lists every difference. Some of
them:

  register   ACPI   driver
  0xc900     0xd0   0x73
  0xc901     0x09   0x04
  0xd471     0xba   0x3a
  0xd479     0x40   0x20
  0xdb08     0xe7   0x7a
  0xc050-0xc053, 0xc060-0xc063, 0xce30-0xce44, 0xcd00, 0xcf02, 0xdc20:
             written by ACPI, not written by the driver

Questions:

 1. Shuming: is one of these board-specific values required for the
    amplifier to produce output on this design, or does this machine
    need its RAE/DSP firmware? I did not want to write the vendor table
    to the amplifier blindly.
 2. Vijendar: is SDW1 / ACP70_SW_AUDIO1_TX the right pin for an
    amplifier on link 1 with ACP rev 0x72, as used by the existing
    rt722 (link 0) + rt1320 (link 1) entry?

I can test patches and provide the full acpidump, dmesg and alsa-info
output.

Disclosure: the analysis and both patches were prepared with the help of
an AI assistant (Claude); I built and tested them on the hardware.

Thanks,
Jaehoon Kim (jaehoon1744@dankook.ac.kr)

RT1320 (version_id=2, dev_id=0x6981) on LG gram 16Z95U-GS59K
Comparison of the ACPI SDCA function initialization table
(SW23 / AF04 'mipi-sdca-function-initialization-table', 5627 writes)
with rt1320_vc_blind_write[] in sound/soc/codecs/rt1320-sdw.c (v7.2.14).
Final value per register is compared. Addresses and values are hex.

Layout of the ACPI table, in write order:
  idx    0-66    config writes 0xc003 ... 0xf080
  idx   67-78    0xe7f4-0xe7fb, 0xe860-0xe863
  idx   79-118   0x20000708 ... 0x200007bf (10 x 4 bytes, value 0xa9858040)
  idx  119-2169  0xe000-0xe7ff, then 0xe801-0xe803
  idx 2170-2181  0xc003=c0, 0xd470-0xd47a, 0xc019, 0xd487, 0xd486=c3
  idx 2182-4905  0x10007000-0x10007da7 (MCU patch code, 2724 bytes)
  idx 4906-4955  0x1000cc46, 0xd486=43, 0x3fc2bf80-0x3fc2bfc7, 0x1000db00-0x1000db23
  idx 4956-4976  0xd540, 0xc5c3, 0xc5c8, 0xd471, 0xdd08-0xdd0b, 0xdb00-0xdb1b
  idx 4977-5626  0x1000d600-0x1000d7ff, 0x1000d000-0x1000d089

1) Same register, different value
   register     ACPI   driver
   0x0000c900   0xd0   0x73
   0x0000c901   0x09   0x04
   0x0000d471   0xba   0x3a
   0x0000d479   0x40   0x20
   0x0000db05   0x00   0x45
   0x0000db07   0x00   0x5a
   0x0000db08   0xe7   0x7a
   0x1000db15   0x12   0x0d
   0x1000db16   0x09   0x01
   0x1000db19   0x00   0xbf
   0x1000db1f   0x0d   0x12
   0x1000db20   0x01   0x09
   0x1000db23   0xbf   0x00

2) Written by the ACPI table only (0xe000-0xe7ff, 0x10007000-0x10007da7,
   0x1000d000-0x1000d7ff bulk areas not listed)
   register     ACPI
   0x0000c050   0x15
   0x0000c051   0x13
   0x0000c052   0x55
   0x0000c053   0x55
   0x0000c060   0x99
   0x0000c061   0x55
   0x0000c063   0x55
   0x0000c582   0x01
   0x0000c5c2   0x00
   0x0000c5c4   0x12
   0x0000c5c6   0x10
   0x0000c5d0   0x09
   0x0000c60b   0xb1
   0x0000c682   0x60
   0x0000cd00   0x05
   0x0000ce1b   0x88
   0x0000ce30   0xae
   0x0000ce31   0x0d
   0x0000ce36   0xd2
   0x0000ce37   0x0b
   0x0000ce38   0x80
   0x0000ce39   0x04
   0x0000ce3e   0x00
   0x0000ce3f   0x00
   0x0000ce44   0x1c
   0x0000cf02   0x0f
   0x0000db00   0x00
   0x0000db01   0x00
   0x0000db02   0x73
   0x0000db04   0x00
   0x0000db06   0x00
   0x0000db1a   0x00
   0x0000db1b   0x00
   0x0000dc20   0x30
   0x0000e860   0x39
   0x0000e861   0x73
   0x0000e862   0xb4
   0x0000e863   0x6c
   0x20000708   0x40
   0x20000709   0x80
   0x2000070a   0x85
   0x2000070b   0xa9
   0x2000071c   0x40
   0x2000071d   0x80
   0x2000071e   0x85
   0x2000071f   0xa9
   0x20000730   0x40
   0x20000731   0x80
   0x20000732   0x85
   0x20000733   0xa9
   0x20000744   0x40
   0x20000745   0x80
   0x20000746   0x85
   0x20000747   0xa9
   0x20000758   0x40
   0x20000759   0x80
   0x2000075a   0x85
   0x2000075b   0xa9
   0x2000076c   0x40
   0x2000076d   0x80
   0x2000076e   0x85
   0x2000076f   0xa9
   0x20000780   0x40
   0x20000781   0x80
   0x20000782   0x85
   0x20000783   0xa9
   0x20000794   0x40
   0x20000795   0x80
   0x20000796   0x85
   0x20000797   0xa9
   0x200007a8   0x40
   0x200007a9   0x80
   0x200007aa   0x85
   0x200007ab   0xa9
   0x200007bc   0x40
   0x200007bd   0x80
   0x200007be   0x85
   0x200007bf   0xa9

3) Written by the driver only
   register     driver
   0x0000c598   0x04
   0x0000c5d6   0x01
   0x0000c5f6   0x22
   0x0000c5f7   0x22
   0x0000d172   0x2a
   0x0000d47c   0xff
   0x0000d500   0x17
   0x0000d600   0x01
   0x0000d601   0x02
   0x0000d602   0x03
   0x0000d603   0x04
   0x0000d608   0x03
   0x0000d609   0x00
   0x0000d610   0x01
   0x0000d64c   0x03
   0x0000d64d   0x03
   0x0000d64e   0x03
   0x0000d64f   0x03
   0x0000d650   0x03
   0x0000d651   0x03
   0x0000d652   0x03

             reply	other threads:[~2026-11-10 12:55 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-10 12:54 fixca [this message]
2026-11-10 12:54 ` [PATCH RFC 1/2] ASoC: amd: acp: Add ACP70 ACPI flag override for LG gram 16Z95U fixca
2026-11-10 12:54 ` [PATCH RFC 2/2] ASoC: amd: acp70: Add rt713 + rt1320 SoundWire machine " fixca

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261110125459.3924-1-jaehoon1744@gmail.com \
    --to=jaehoon1744@dankook.ac.kr \
    --cc=Vijendar.Mukunda@amd.com \
    --cc=broonie@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=shumingf@realtek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®