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@1c00000 { [...] audio-codec@1c22e00 { #sound-dai-cells = <0>; compatible = "allwinner,sun8i-a33-codec"; reg = <0x01c22e00 0x400>; interrupts = ; clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>; clock-names = "bus", "mod"; }; };