• Lubomir Rintel's avatar
    ASoC: mmp-sspa: Add Device Tree support · a97e384b
    Lubomir Rintel authored
    This makes it possible to select CONFIG_SND_MMP_SOC_SSPA directly, as
    opposed to via CONFIG_SND_MMP_SOC, and for the driver to bind to a device
    tree node. That makes the driver useful on Device Tree based systems,
    with audio-graph-card or simple-card.
    
    The aforementioned card drivers control the master clock themselves and
    don't call the set_dai_sysclk() or set_dai_pll(), thus the respective
    handlers don't serve any purpose anymore. Instead, they return early and
    the hw_params() handler sets the appropriate bitclk itself.
    
    The register range is split into two -- for the RX block and for the TX
    block. On a MMP2 there are two pairs of them; the first one has the
    clock controller in the middle, while the second just has a hole:
    
      0xd42a0c00 - 0xd42a0c30 RX1
      0xd42a0c30 - 0xd42a0c40 Clocks
      0xd42a0c80 - 0xd42a0cb0 TX1
      0xd42a0d00 - 0xd42a0d30 RX2
      0xd42a0d80 - 0xd42a0cb0 TX2
    
    For this reason, mmp_sspa_write_reg() and mmp_sspa_read_reg() are
    replaced with direct calls to I/O routines.
    
    Tested on a MMP2-based OLPC XO-1.75 laptop with rt5631 coded, mmp_tdma DMA
    engine and MMP2 clock controller glued together with audio-graph-card.
    Signed-off-by: default avatarLubomir Rintel <lkundrak@v3.sk>
    Link: https://lore.kernel.org/r/20200511210134.1224532-12-lkundrak@v3.skSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    a97e384b
mmp-sspa.h 2.42 KB