Skip to content

Add AMD Cezanne (czn) SOF firmware support - #432

Open
ashikmeerankutty wants to merge 1 commit into
WeirdTreeThing:mainfrom
ashikmeerankutty:add-czn-cezanne-audio-support
Open

Add AMD Cezanne (czn) SOF firmware support#432
ashikmeerankutty wants to merge 1 commit into
WeirdTreeThing:mainfrom
ashikmeerankutty:add-czn-cezanne-audio-support

Conversation

@ashikmeerankutty

@ashikmeerankutty ashikmeerankutty commented Aug 8, 2026

Copy link
Copy Markdown

Summary

get_platform() already detects google_guybrush boards as czn (Cezanne), but platform_config() had no case for it, so the script silently did nothing on these boards — audio never worked and PipeWire only ever offered "Dummy Output". check_kernel_config() also had a # TODO: fill this out stub for czn.

This adds czn_config(), following the same pattern as the existing mdn_config():

  • Installs the AMD SOF DSP firmware (sof-rn.ri / sof-rn.ldc) and topology (sof-acp.tplg) that ChromeOS ships for guybrush, committed under blobs/czn/ the same way blobs/mdn/ already is.
  • Symlinks the topology under both names the kernel's ACP machine driver may request depending on which amp variant it matches (sof-rn-rt5682-max98360.tplg / sof-rn-rt5682-rt1019.tplg), mirroring how adl_sof_config() handles ADL/RPL topology aliasing.
  • Wires "czn" into platform_config().
  • Fills in the check_kernel_config module list for czn (SND_SOC_SOF_AMD_RENOIR, SND_AMD_ASOC_RENOIR).

A companion PR for the matching UCM profile is at WeirdTreeThing/alsa-ucm-conf-cros#1 — without it PipeWire still only shows "Dummy Output" even with this firmware installed.

Closes #165.

Test plan

  • The committed sof-rn.ri / sof-rn.ldc / sof-acp.tplg blobs are the exact files running in production on an HP Elite c645 G2 (nipperkin, AMD Cezanne): /proc/asound/cards shows the sof-rt5682s-max card and the firmware loads per journalctl -k. czn_config() reproduces the same install/symlink steps that put them there. See ashikmeerankutty/guybrush-linux-audio for the original investigation.
  • python3 -c "import ast; ast.parse(open('functions.py').read())" — syntax check passes.

get_platform() already detects google_guybrush boards as "czn", but
platform_config() had no case for it and check_kernel_config() had a
TODO stub, so the script silently did nothing on these boards and
PipeWire only ever offered "Dummy Output".

Add czn_config(), mirroring mdn_config(): installs the AMD SOF DSP
firmware (sof-rn.ri/sof-rn.ldc) and topology (sof-acp.tplg) that
ChromeOS ships for guybrush, and symlinks the topology under both
names the kernel's ACP machine driver may ask for depending on which
amp it matches (rt5682-max98360 vs rt5682-rt1019). Also fills in the
check_kernel_config module list for czn.

Verified on an HP Elite c645 G2 (nipperkin, AMD Cezanne, sof-rt5682s-max
card). Fixes WeirdTreeThing#165.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

@koluckirafal koluckirafal left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maintainers don't have policy for AI-generated contributions nor I want to make a statement in their name, but I'll review this PR anyway as a commentary.

Python part looks fine for me, while topology blob is seemingly already in sof-bin repository, so the script should ideally just ask for updated firmware-sof package version.
As for firmware blobs, I couldn't find any public/non-Google upstream for sof-rn.ri and sof-rn.ldc - preferably it should land in linux-firmware, but that would be a task for AMD.

Comment thread functions.py
# ChromeOS ships one tplg and points both amp variants' topology names at
# it; the kernel asks for whichever name matches the amp it detected.
symlink_tplg("/lib/firmware/amd/sof-tplg", "sof-acp", "sof-rn-rt5682-max98360")
symlink_tplg("/lib/firmware/amd/sof-tplg", "sof-acp", "sof-rn-rt5682-rt1019")

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment thread functions.py
cpdir("blobs/czn/tplg", "/lib/firmware/amd/sof-tplg")
# ChromeOS ships one tplg and points both amp variants' topology names at
# it; the kernel asks for whichever name matches the amp it detected.
symlink_tplg("/lib/firmware/amd/sof-tplg", "sof-acp", "sof-rn-rt5682-max98360")

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@koluckirafal

koluckirafal commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

BTW, Python wersion of the script (branch main) will be deprecated and replaced with a rewrite (bash branch) - we'll port the fix there instead. As for firmware, a fresh build will be delivered by the script, similarly to Mendocino. Leaving this PR open as a reminder for now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Looking for info on AMD Cezanne audio/speaker issue

2 participants