• M
    ASoC: fsl_ssi: only enable proper channel slots in AC'97 mode · 01ca4851
    Maciej S. Szmigiero 提交于
    We need to make sure that only proper channel slots (in SACCST register)
    are enabled at playback start time since some AC'97 CODECs (like VT1613 on
    UDOO board) were observed requesting via SLOTREQ spurious ones just after
    an AC'97 link is started but before the CODEC is configured by its driver.
    When a bit for some channel slot is set in a SLOTREQ request then SSI sets
    the relevant bit in SACCST automatically, which then 'sticks' until it is
    manually unset.
    The SACCST register is not writable directly, we have to use SACCDIS and
    SACCEN registers to configure it instead (these aren't normal registers:
    writing a '1' bit at some position in SACCEN sets the relevant bit in
    SACCST; SACCDIS operates in a similar way but allows unsetting bits in
    SACCST).
    
    Theoretically, this should be necessary only for the very first playback
    but since some CODECs are so untrustworthy and extra channel slots enabled
    mean ruined playback let's play safe here and make sure that no extra
    slots are enabled in SACCST every time a playback is started.
    Signed-off-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name>
    Acked-by: NNicolin Chen <nicoleotsuka@gmail.com>
    Signed-off-by: NMark Brown <broonie@kernel.org>
    01ca4851
fsl_ssi.c 50.9 KB