ASoC: Add SPDIF support for Allwinner SoCs
Subsystems (4)
v5 cover ASoC: Add SPDIF support for Allwinner SoCs
From: Marcus Cooper <[email protected]>
This patch set adds support for the Allwinner SPDIF transceiver.
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 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):
dt-bindings: sunxi :add sun4i SPDIF transceiver
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 | 549 +++++++++++++++++++++ 4 files changed, 597 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
PATCH v5 1/2 dt-bindings: sunxi :add sun4i SPDIF transceiver
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
@@ -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
PATCH v5 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 | 549 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 558 insertions(+) create mode 100644 sound/soc/sunxi/sun4i-spdif.c
sound/soc/sunxi/Kconfig +8 -0
@@ -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
@@ -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 +549 -0
549 lines not on this page · raw message
Signature · 1 line
2.7.1
NAK...last bunch of changes introduced a warning which slipped through, I'll fix that and send a new patch series. CK
Quoted 70 lines · On 8 February 2016 at 16:26, <[email protected]…
From: Marcus Cooper <[email protected]>
This patch set adds support for the Allwinner SPDIF transceiver.
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 v4:
- corrected indentation issues
- removed old macros
- removed unnecessary enabling of apb clockChanges 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
- modifiedpm_runtimefunctionality and confirmed that driver worked when PM was disabled.
- removed .owner from platform driver
- renamed bindings fileChanges since v2:
- removed sunxi-machine-spdif and replaced with simple audio card
- removed untested compatibilities from device tree documentation
- addedpm_runtimeand remove shutdown
- removed pll2 as it's the parent of the spdif clock
- rename clk tospdif_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 linesChanges since v1:
- Movedsunxi-machine-spdif.cto 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.
- removedof_id
- removed power management code.
- Added support for more rates.Marcus Cooper (2):
dt-bindings: sunxi :add sun4i SPDIF transceiver
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 | 549 +++++++++++++++++++++ 4 files changed, 597 insertions(+) create mode 100644 Documentation/devicetree/bindings/sound/sunxi,sun4i-spdif.txt create mode 100644 sound/soc/sunxi/sun4i-spdif.c--
2.7.1