[PATCH v5 0/3] Add TDM audio on StarFive JH7110

From: Walker Chen
Date: Fri May 26 2023 - 10:54:21 EST

This patchset adds TDM audio driver for the StarFive JH7110 SoC. The
first patch adds device tree binding for TDM module. The second patch
adds tdm driver support for JH7110 SoC. The last patch adds device tree
node and pins configuration of tdm to JH7110 dts.

The series has been tested on the VisionFive 2 board by plugging an
audio expansion board.

For more information of audio expansion board, you can take a look
at the following webpage:

The last patch should be applied after the following patch:

Changes since v4:
- Rebased on Linux 6.4-rc2.
- Adjusted code indentation in jh7110_tdm_syncdiv().
- Removed '__maybe_unused' for jh7110_tdm_system_suspend() and
- Removed initialization for variable 'ret' in jh7110_tdm_hw_params().
- Return immedially when entering unsurpported case in
- Check the return value with IS_ERR_OR_NULL() for the call to
- Dropped the jh7110_tdm_clk_enable() in probe and rely on runtime PM
check if CONFIG_PM is enabled.
- Used RUNTIME_PM_OPS() instead of SET_RUNTIME_PM_OPS() and
structure jh7110_tdm_pm_ops.

Changes since v3:
- Modified the subject of patch [1/3] to reflect which subsystem it is.
- Use the set of functions with 'clk_bulk_' to get/enable/disable clocks.
- Dropped the overlay from patch [3/3].
- Dropped the redundant macro 'CONFIG_PM' and 'CONFIG_PM_SLEEP' around
suspend() and resume().

Changes since v2:
- Use dt-overlay to describe sound card because need to plug the audio
expansion board into the VisionFive2 board.
- Modified the coding style for driver.
- Moved assignment of stop_dma_first to startup function of dai_driver.
- Dropped some useless macro definition.
- Use loops to get/enable/disable clocks.

Changes since v1:
- Rebased on Linux 6.3-rc4.
- Added the dts file dedicated to describe audio card.
- Added the item for JH7110 audio board to the dt-binding of StarFive
SoC-based boards.

v4: https://lore.kernel.org/all/20230511091549.28003-1-walker.chen@xxxxxxxxxxxxxxxx/
v3: https://lore.kernel.org/all/20230506090116.9206-1-walker.chen@xxxxxxxxxxxxxxxx/
v2: https://lore.kernel.org/all/20230420024118.22677-1-walker.chen@xxxxxxxxxxxxxxxx/
v1: https://lore.kernel.org/all/20230329153320.31390-1-walker.chen@xxxxxxxxxxxxxxxx/

Walker Chen (3):
ASoC: dt-bindings: Add TDM controller bindings for StarFive JH7110
ASoC: starfive: Add JH7110 TDM driver
riscv: dts: starfive: add the node and pins configuration for tdm

.../bindings/sound/starfive,jh7110-tdm.yaml | 98 +++
.../jh7110-starfive-visionfive-2.dtsi | 40 ++
arch/riscv/boot/dts/starfive/jh7110.dtsi | 21 +
sound/soc/Kconfig | 1 +
sound/soc/Makefile | 1 +
sound/soc/starfive/Kconfig | 15 +
sound/soc/starfive/Makefile | 2 +
sound/soc/starfive/jh7110_tdm.c | 679 ++++++++++++++++++
9 files changed, 863 insertions(+)
create mode 100644 Documentation/devicetree/bindings/sound/starfive,jh7110-tdm.yaml
create mode 100644 sound/soc/starfive/Kconfig
create mode 100644 sound/soc/starfive/Makefile
create mode 100644 sound/soc/starfive/jh7110_tdm.c

base-commit: f1fcbaa18b28dec10281551dfe6ed3a3ed80e3d6
prerequisite-patch-id: 398744c61913c76a35754de867c4f820ca7a8d99
prerequisite-patch-id: 07986c6e98ce85d3ee84f38c780e72145f098fc8
prerequisite-patch-id: 1babe83d6bf999bad17584dc595480f9070a5369
prerequisite-patch-id: 63c1f70ca2bcf827429542e60d74411b7666ceff
prerequisite-patch-id: 9fbb7ad1dd258bb8ff5946c4a0e59de4bfd82a04
prerequisite-patch-id: a7f61973ccb6bc425daa8a86c048fd0f5a915b76
prerequisite-patch-id: 39e1be2a3d1593577ab997f55f59367cba665aa7
prerequisite-patch-id: 0159f09bb0a1ff711a00ae17ef5b12662c9c7d3d
prerequisite-patch-id: 2ddada18ab6ea5cd1da14212aaf59632f5203d40
prerequisite-patch-id: 584c256c9acb52ee2773d0c81c3f4977fc18155a
prerequisite-patch-id: b37ac15032973e1fcd918f157c82a0606775c9e9
prerequisite-patch-id: 6abf359fa445f4104432ddee27044dfbfb128417