| 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/allwinner,sun4i-a10-i2s.yaml |
| - 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 = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>; |
| clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>; |
| clock-names = "bus", "mod"; |
| }; |
| }; |
| |