• Vijendar Mukunda's avatar
    ASoC: amd: acp: fix for acp platform device creation failure · 09068d62
    Vijendar Mukunda authored
    ACP pin configuration varies based on acp version.
    ACP PCI driver should read the ACP PIN config value and based on config
    value, it has to create a platform device in below two conditions.
    1) If ACP PDM configuration is selected from BIOS and ACP PDM controller
    exists.
    2) If ACP I2S configuration is selected from BIOS.
    
    Other than above scenarios, ACP PCI driver should skip the platform
    device creation logic, i.e. ACP PCI driver probe sequence should never
    fail if other acp pin configuration is selected. It should skip platform
    device creation logic.
    
    check_acp_pdm() function was implemented for ACP6.x platforms to check
    ACP PDM configuration. Previously, this code was safe guarded by
    FLAG_AMD_LEGACY_ONLY_DMIC flag check.
    
    This implementation breaks audio use cases for Huawei Matebooks which are
    based on ACP3.x varaint uses I2S configuration.
    In current scenario, check_acp_pdm() function returns -ENODEV value
    which results in ACP PCI driver probe failure without creating a platform
    device even in case of valid ACP pin configuration.
    
    Implement check_acp_config() as a common function which invokes platform
    specific acp pin configuration check functions for ACP3.x, ACP6.0 & ACP6.3
    & ACP7.0 variants and checks for ACP PDM controller.
    
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218780
    Fixes: 4af565de ("ASoC: amd: acp: fix for acp pdm configuration check")
    Signed-off-by: default avatarVijendar Mukunda <Vijendar.Mukunda@amd.com>
    Link: https://lore.kernel.org/r/20240502140340.4049021-1-Vijendar.Mukunda@amd.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    09068d62
amd.h 8.67 KB