Skip to contentSkip to conversation

ASoC: Add SPDIF support for Allwinner SoCs

PATCH In review [email protected] 2 participants 5 messages Feb 21, 2016 – Feb 22, 2016

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

v7 cover ASoC: Add SPDIF support for Allwinner SoCs

From: Marcus Cooper <[email protected]>

For now just the SPDIF transmitter has been tested on a Mele A2000(A10) and a Itead Ibox(A20).

In order for this patch set to be functional we require an audio clock patch which will be delivered separately. For those that are interested I've pushed the patches here with all the required changes to get SPDIF audio out of the device.

https://github.com/codekipper/linux-sunxi/commits/spdif_delivery

Thanks in advance,
CK

---
Changes since v6:
- removed legacy dapm components that are no longer needed.
- changed dt-bindings patch subject styling to match that of the sound subsystem

Changes since v5:
- fixed warning that had sneaked in.

Changes since v4:
- corrected indentation issues
- removed old macros
- removed unnecessary enabling of apb clock

Changes since v3:
- removed code required for spdif capture
- added disable/enable of apb clk to suspend/resume.
- removed unnecessary dt checks in probe
- fixed error conditions in probe/resume
- modified pm_runtime functionality and confirmed that driver worked when PM was disabled.
- removed .owner from platform driver
- renamed bindings file

Changes since v2:
- removed sunxi-machine-spdif and replaced with simple audio card
- removed untested compatibilities from device tree documentation
- added pm_runtime and remove shutdown
- removed pll2 as it's the parent of the spdif clock
- rename clk to spdif_clk
- removed enabling of mclk output
- removed interrupts status being cleared as it's not being used
- use default fifo settings for now
- fixed alignments for wrapped lines

Changes since v1:
- Moved sunxi-machine-spdif.c to separate patch
- replaced sunxi in naming scheme with sun4i in the sun4i-spdif driver.
- split tx controller into separate enable/disable functions
- moved setclk and setfmt functionality into hw params
- added support for mono signals.
- cleaned up probe clock set up.
- removed all writes to transmit status registers.
- removed of_id
- removed power management code.
- Added support for more rates.

Marcus Cooper (2):
ASoC: sunxi :add sun4i SPDIF dt bindings
ASoC: sunxi: Add support for the SPDIF block

 .../bindings/sound/sunxi,sun4i-spdif.txt           |  39 ++
 sound/soc/sunxi/Kconfig                            |   8 +
 sound/soc/sunxi/Makefile                           |   1 +
 sound/soc/sunxi/sun4i-spdif.c                      | 542 +++++++++++++++++++++
 4 files changed, 590 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/sound/sunxi,sun4i-spdif.txt
 create mode 100644 sound/soc/sunxi/sun4i-spdif.c
Signature · 1 line
2.7.1
#1 lore raw

PATCH v7 1/2 ASoC: sunxi :add sun4i SPDIF dt bindings

From: Marcus Cooper <[email protected]>

Add devicetree bindings for the SPDIF transceiver found on found on Allwinners A10 and A20 SoCs.

---
 .../bindings/sound/sunxi,sun4i-spdif.txt           | 39 ++++++++++++++++++++++
 1 file changed, 39 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/sound/sunxi,sun4i-spdif.txt
Documentation/devicetree/bindings/sound/sunxi,sun4i-spdif.txt new file +39 -0
new file mode 100644
index 0000000..13503aa
@@ -0,0 +1,39 @@
+Allwinner Sony/Philips Digital Interface Format (S/PDIF) Controller
+
+The Allwinner S/PDIF audio block is a transceiver that allows the
+processor to receive and transmit digital audio via an coaxial cable or
+a fibre cable.
+For now only playback is supported.
+
+Required properties:
+
+  - compatible		: should be one of the following:
+    - "allwinner,sun4i-a10-spdif": for the Allwinner A10 SoC
+
+  - reg			: Offset and length of the register set for the device.
+
+  - interrupts		: Contains the spdif interrupt.
+
+  - dmas		: Generic dma devicetree binding as described in
+			  Documentation/devicetree/bindings/dma/dma.txt.
+
+  - dma-names		: Two dmas have to be defined, "tx" and "rx".
+
+  - clocks		: Contains an entry for each entry in clock-names.
+
+  - clock-names		: Includes the following entries:
+	"apb"		  clock for the spdif bus.
+	"spdif"		  clock for spdif controller.
+
+Example:
+
+spdif: spdif@01c21000 {
+	compatible = "allwinner,sun4i-a10-spdif";
+	reg = <0x01c21000 0x40>;
+	interrupts = <13>;
+	clocks = <&apb0_gates 1>, <&spdif_clk>;
+	clock-names = "apb", "spdif";
+	dmas = <&dma 0 2>, <&dma 0 2>;
+	dma-names = "rx", "tx";
+	status = "okay";
+};
Signature · 1 line
2.7.1
#2 lore raw

PATCH v7 2/2 ASoC: sunxi: Add support for the SPDIF block

In reply to [email protected]

From: Marcus Cooper <[email protected]>

The sun4i, sun5i and sun7i SoC families have an SPDIF block which is capable of playback and capture.

This patch enables the playback of this block for
the sun4i families.

---
 sound/soc/sunxi/Kconfig       |   8 +
 sound/soc/sunxi/Makefile      |   1 +
 sound/soc/sunxi/sun4i-spdif.c | 542 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 551 insertions(+)
 create mode 100644 sound/soc/sunxi/sun4i-spdif.c
sound/soc/sunxi/Kconfig +8 -0
index 84c72ec..ae42294 100644
@@ -8,4 +8,12 @@ config SND_SUN4I_CODEC
 	  Select Y or M to add support for the Codec embedded in the Allwinner
 	  A10 and affiliated SoCs.
 
+config SND_SUN4I_SPDIF
+	tristate "Allwinner A10 SPDIF Support"
+	depends on OF
+	select SND_SOC_GENERIC_DMAENGINE_PCM
+	select REGMAP_MMIO
+	help
+	  Say Y or M to add support for the S/PDIF audio block in the Allwinner
+	  A10 and affiliated SoCs.
 endmenu
sound/soc/sunxi/Makefile +1 -0
index ea8a08c..8f5e889 100644
@@ -1,2 +1,3 @@
 obj-$(CONFIG_SND_SUN4I_CODEC) += sun4i-codec.o
 
+obj-$(CONFIG_SND_SUN4I_SPDIF) += sun4i-spdif.o
sound/soc/sunxi/sun4i-spdif.c new file +542 -0

542 lines not on this page · raw message

Signature · 1 line
2.7.1
maintainer
#3 lore raw
In reply to [email protected]
Quoted 4 lines · On Sun, Feb 21, 2016 at 12:13:36PM +0100…

From: Marcus Cooper <[email protected]>

For now just the SPDIF transmitter has been tested on a Mele A2000(A10) and a Itead Ibox(A20).

This was already applied. If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.

#4 lore raw
Quoted 9 lines · Mark Brown
Quoted 4 lines · On Sun, Feb 21, 2016 at 12:13:36PM +0100…

From: Marcus Cooper <[email protected]>

For now just the SPDIF transmitter has been tested on a Mele A2000(A10) and a Itead Ibox(A20).

This was already applied. If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.

No worries...I saw the ACK from Maxime and then your comment so I thought I needed to do another revision. I can push an incremental update later,
thanks,
CK

Quoted 5 lines

--
You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected] For more options, visit https://groups.google.com/d/optout.