ihdad: graceful failure on DSP/cAVS platforms (Phase 8.1)

On cAVS/SOF platforms (e.g. LG Gram 8086:7728), STATESTS reads 0
because the codec sits behind the audio DSP; the legacy HDA codec-wake
mechanism cannot reach it. enumerate() previously hardcoded codec 0 and
would hang reading a non-existent codec via CORB/RIRB. Now, if no
codecs respond after reset_controller(), log the DSP-platform diagnosis
and fail honestly with ENODEV instead of hanging. A SOF/cAVS driver
(Phase 8.2) is required for these platforms.
This commit is contained in:
Red Bear OS
2026-07-23 06:34:35 +09:00
parent b5f84b44df
commit c836fffb66
+12
View File
@@ -213,6 +213,18 @@ impl IntelHDA {
module.init()?;
module.info();
if module.codecs.is_empty() {
// DSP/cAVS platform: STATESTS=0 (codec behind DSP), enumerate()
// would hang on non-existent codec 0. Fail honestly.
log::error!(
"ihdad: no codecs responded on STATESTS — this is a DSP/cAVS \
platform (codec behind the DSP). Legacy HDA cannot drive it; \
a SOF/cAVS driver is required (Phase 8.2)."
);
return Err(Error::new(ENODEV));
}
module.enumerate()?;
module.configure()?;