Loading Documentation/devicetree/bindings/sound/sun4i-i2s.txt +5 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ Required properties: - compatible: should be one of the followings - "allwinner,sun4i-a10-i2s" - "allwinner,sun6i-a31-i2s" - reg: physical base address of the controller and length of memory mapped region. - interrupts: should contain the I2S interrupt. Loading @@ -19,6 +20,10 @@ Required properties: - "mod" : module clock for the I2S controller - #sound-dai-cells : Must be equal to 0 Required properties for the following compatibles: - "allwinner,sun6i-a31-i2s" - resets: phandle to the reset line for this codec Example: i2s0: i2s@01c22400 { Loading Documentation/devicetree/bindings/sound/sun8i-a33-codec.txt 0 → 100644 +63 −0 Original line number Diff line number Diff line Allwinner SUN8I audio codec ------------------------------------ On Sun8i-A33 SoCs, the audio is separated in different parts: - A DAI driver. It uses the "sun4i-i2s" driver which is documented here: Documentation/devicetree/bindings/sound/sun4i-i2s.txt - An analog part of the codec which is handled as PRCM registers. See Documentation/devicetree/bindings/sound/sun8i-codec-analog.txt - An digital part of the codec which is documented in this current binding documentation. - And finally, an audio card which links all the above components. The simple-audio card will be used. See Documentation/devicetree/bindings/sound/simple-card.txt This bindings documentation exposes Sun8i codec (digital part). Required properties: - compatible: must be "allwinner,sun8i-a33-codec" - reg: must contain the registers location and length - interrupts: must contain the codec interrupt - clocks: a list of phandle + clock-specifer pairs, one for each entry in clock-names. - clock-names: should contain followings: - "bus": the parent APB clock for this controller - "mod": the parent module clock Here is an example to add a sound card and the codec binding on sun8i SoCs that are similar to A33 using simple-card: sound { compatible = "simple-audio-card"; simple-audio-card,name = "sun8i-a33-audio"; simple-audio-card,format = "i2s"; simple-audio-card,frame-master = <&link_codec>; simple-audio-card,bitclock-master = <&link_codec>; simple-audio-card,mclk-fs = <512>; simple-audio-card,aux-devs = <&codec_analog>; simple-audio-card,routing = "Left DAC", "Digital Left DAC", "Right DAC", "Digital Right DAC"; simple-audio-card,cpu { sound-dai = <&dai>; }; link_codec: simple-audio-card,codec { sound-dai = <&codec>; }; soc@01c00000 { [...] audio-codec@1c22e00 { #sound-dai-cells = <0>; compatible = "allwinner,sun8i-a33-codec"; reg = <0x01c22e00 0x400>; interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>; clock-names = "bus", "mod"; }; }; Documentation/devicetree/bindings/sound/sunxi,sun4i-spdif.txt +1 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ Required properties: - compatible : should be one of the following: - "allwinner,sun4i-a10-spdif": for the Allwinner A10 SoC - "allwinner,sun6i-a31-spdif": for the Allwinner A31 SoC - "allwinner,sun8i-h3-spdif": for the Allwinner H3 SoC - reg : Offset and length of the register set for the device. Loading arch/arm/mach-s3c64xx/dev-audio.c +1 −3 Original line number Diff line number Diff line Loading @@ -106,10 +106,8 @@ static struct s3c_audio_pdata i2sv4_pdata = { .dma_playback = DMACH_HSI_I2SV40_TX, .dma_capture = DMACH_HSI_I2SV40_RX, .type = { .i2s = { .quirks = QUIRK_PRI_6CHAN, }, }, }; struct platform_device s3c64xx_device_iisv4 = { Loading include/linux/platform_data/asoc-s3c.h +2 −4 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ extern void s3c64xx_ac97_setup_gpio(int); struct samsung_i2s { struct samsung_i2s_type { /* If the Primary DAI has 5.1 Channels */ #define QUIRK_PRI_6CHAN (1 << 0) /* If the I2S block has a Stereo Overlay Channel */ Loading Loading @@ -47,7 +47,5 @@ struct s3c_audio_pdata { void *dma_capture; void *dma_play_sec; void *dma_capture_mic; union { struct samsung_i2s i2s; } type; struct samsung_i2s_type type; }; Loading
Documentation/devicetree/bindings/sound/sun4i-i2s.txt +5 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ Required properties: - compatible: should be one of the followings - "allwinner,sun4i-a10-i2s" - "allwinner,sun6i-a31-i2s" - reg: physical base address of the controller and length of memory mapped region. - interrupts: should contain the I2S interrupt. Loading @@ -19,6 +20,10 @@ Required properties: - "mod" : module clock for the I2S controller - #sound-dai-cells : Must be equal to 0 Required properties for the following compatibles: - "allwinner,sun6i-a31-i2s" - resets: phandle to the reset line for this codec Example: i2s0: i2s@01c22400 { Loading
Documentation/devicetree/bindings/sound/sun8i-a33-codec.txt 0 → 100644 +63 −0 Original line number Diff line number Diff line Allwinner SUN8I audio codec ------------------------------------ On Sun8i-A33 SoCs, the audio is separated in different parts: - A DAI driver. It uses the "sun4i-i2s" driver which is documented here: Documentation/devicetree/bindings/sound/sun4i-i2s.txt - An analog part of the codec which is handled as PRCM registers. See Documentation/devicetree/bindings/sound/sun8i-codec-analog.txt - An digital part of the codec which is documented in this current binding documentation. - And finally, an audio card which links all the above components. The simple-audio card will be used. See Documentation/devicetree/bindings/sound/simple-card.txt This bindings documentation exposes Sun8i codec (digital part). Required properties: - compatible: must be "allwinner,sun8i-a33-codec" - reg: must contain the registers location and length - interrupts: must contain the codec interrupt - clocks: a list of phandle + clock-specifer pairs, one for each entry in clock-names. - clock-names: should contain followings: - "bus": the parent APB clock for this controller - "mod": the parent module clock Here is an example to add a sound card and the codec binding on sun8i SoCs that are similar to A33 using simple-card: sound { compatible = "simple-audio-card"; simple-audio-card,name = "sun8i-a33-audio"; simple-audio-card,format = "i2s"; simple-audio-card,frame-master = <&link_codec>; simple-audio-card,bitclock-master = <&link_codec>; simple-audio-card,mclk-fs = <512>; simple-audio-card,aux-devs = <&codec_analog>; simple-audio-card,routing = "Left DAC", "Digital Left DAC", "Right DAC", "Digital Right DAC"; simple-audio-card,cpu { sound-dai = <&dai>; }; link_codec: simple-audio-card,codec { sound-dai = <&codec>; }; soc@01c00000 { [...] audio-codec@1c22e00 { #sound-dai-cells = <0>; compatible = "allwinner,sun8i-a33-codec"; reg = <0x01c22e00 0x400>; interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>; clock-names = "bus", "mod"; }; };
Documentation/devicetree/bindings/sound/sunxi,sun4i-spdif.txt +1 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ Required properties: - compatible : should be one of the following: - "allwinner,sun4i-a10-spdif": for the Allwinner A10 SoC - "allwinner,sun6i-a31-spdif": for the Allwinner A31 SoC - "allwinner,sun8i-h3-spdif": for the Allwinner H3 SoC - reg : Offset and length of the register set for the device. Loading
arch/arm/mach-s3c64xx/dev-audio.c +1 −3 Original line number Diff line number Diff line Loading @@ -106,10 +106,8 @@ static struct s3c_audio_pdata i2sv4_pdata = { .dma_playback = DMACH_HSI_I2SV40_TX, .dma_capture = DMACH_HSI_I2SV40_RX, .type = { .i2s = { .quirks = QUIRK_PRI_6CHAN, }, }, }; struct platform_device s3c64xx_device_iisv4 = { Loading
include/linux/platform_data/asoc-s3c.h +2 −4 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ extern void s3c64xx_ac97_setup_gpio(int); struct samsung_i2s { struct samsung_i2s_type { /* If the Primary DAI has 5.1 Channels */ #define QUIRK_PRI_6CHAN (1 << 0) /* If the I2S block has a Stereo Overlay Channel */ Loading Loading @@ -47,7 +47,5 @@ struct s3c_audio_pdata { void *dma_capture; void *dma_play_sec; void *dma_capture_mic; union { struct samsung_i2s i2s; } type; struct samsung_i2s_type type; };