[PATCH v2 00/17] ASoC: sun8i-codec: support for AIF2 and AIF3

From: Samuel Holland
Date: Wed Oct 14 2020 - 02:20:18 EST


This series adds support the other two AIFs present in the sun8i codec,
which can be used for codec2codec DAI links.

This series first fills out the DAI driver, removing assumptions that
were made for AIF1 (16 bits, 2 channels, certain clock inversions). Some
new logic is required to handle 3 DAIs and the ADC/DAC sharing the same
clock. Finally, it adds the new DAIs, and hooks them up with DAPM
widgets and routes per the hardware topology.

To minimize the number of patches in this series, related device tree
patches (increasing #sound-dai-cells, adding new DAI links) will be sent
separately.

Changes from v1:
- Patches 1-8 from v1 (DAPM changes) were merged
- Prefixed AIF constants with "SUN8I_CODEC_" [1, 7, 10, 16, 17]
- Renamed variables in sun8i_codec_set_fmt for clarity [3]
- Update sysclk->sysclk_rate if later calls to hw_params change the
sample rate (thanks Chen-Yu for reminding me of this) [11]
- Select COMMON_CLK for clk_set_rate_exclusive [12]
- Add comments and hopefully clarify the clock protection logic [12]
- Make the error message more concise and put it on one line [12]
- Drop the "reg" variable holding SUN8I_AIF_CLK_CTRL(dai->id) [15]
- Rename "div_reg" to "clk_reg" and adjust comments for clarity [17]
- Improve the AIF2/AIF3 rate mismatch error message [17]
- Minor grammar/wording fixes in commit messages [2, 4, 7, 8, 16, 17]
- Added Maxime's Acked-by: [1-2, 4-9, 11, 13-14, 16]

Samuel Holland (17):
ASoC: sun8i-codec: Prepare to extend the DAI driver
ASoC: sun8i-codec: Program DAI format before clock inversion
ASoC: sun8i-codec: Enable all supported clock inversions
ASoC: sun8i-codec: Use the provided word size
ASoC: sun8i-codec: Round up the LRCK divisor
ASoC: sun8i-codec: Correct the BCLK divisor calculation
ASoC: sun8i-codec: Support the TDM slot binding
ASoC: sun8i-codec: Enforce symmetric DAI parameters
ASoC: sun8i-codec: Enable all supported sample rates
ASoC: sun8i-codec: Automatically set the system sample rate
ASoC: sun8i-codec: Constrain to compatible sample rates
ASoC: sun8i-codec: Protect the clock rate while streams are open
ASoC: sun8i-codec: Require an exact BCLK divisor match
ASoC: sun8i-codec: Enable all supported PCM formats
ASoC: sun8i-codec: Generalize AIF clock control
ASoC: sun8i-codec: Add the AIF2 DAI, widgets, and routes
ASoC: sun8i-codec: Add the AIF3 DAI, widgets, and routes

sound/soc/sunxi/Kconfig | 1 +
sound/soc/sunxi/sun8i-codec.c | 834 ++++++++++++++++++++++++++++------
2 files changed, 699 insertions(+), 136 deletions(-)

--
2.26.2