• Marek Vasut's avatar
    ASoC: tlv320aic32x4: Add multi endpoint support · 568dc2fa
    Marek Vasut authored
    Support multiple endpoints on TLV320AIC32x4 codec port when
    used in of_graph context.
    
    This patch allows to share the codec port between two CPU DAIs.
    
    Example:
    
    Custom STM32MP157C board uses TLV320AIC32x4 audio codec. This codec
    is connected to two serial audio interfaces, which are configured
    either as rx or tx.
    
    >From AsoC point of view the topolgy is the following:
    // 2 CPU DAIs (SAI2A/B), 1 Codec (TLV320AIC32x4)
    Playback: CPU-A-DAI(slave) -> (master)CODEC-DAI/port0
    Record:   CPU-B-DAI(slave) <- (master)CODEC-DAI/port0
    
    In the DT two endpoints have to be associated to the codec port:
    tlv320aic32x4_port: port {
        tlv320aic32x4_tx_endpoint: endpoint@0 {
                remote-endpoint = <&sai2a_endpoint>;
        };
        tlv320aic32x4_rx_endpoint: endpoint@1 {
                remote-endpoint = <&sai2b_endpoint>;
        };
    };
    
    However, when the audio graph card parses the codec nodes, it expects
    to find DAI interface indexes matching the endpoints indexes.
    
    The current patch forces the use of DAI id 0 for both endpoints,
    which allows to share the codec DAI between the two CPU DAIs
    for playback and capture streams respectively.
    Signed-off-by: default avatarMarek Vasut <marex@denx.de>
    Link: https://patch.msgid.link/20240830231007.205707-1-marex@denx.deSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    568dc2fa
tlv320aic32x4.c 43.9 KB