|
| 1 | +Allwinner SUN8I audio codec |
| 2 | +------------------------------------ |
| 3 | + |
| 4 | +On Sun8i-A33 SoCs, the audio is separated in different parts: |
| 5 | + - A DAI driver. It uses the "sun4i-i2s" driver which is |
| 6 | + documented here: |
| 7 | + Documentation/devicetree/bindings/sound/sun4i-i2s.txt |
| 8 | + - An analog part of the codec which is handled as PRCM registers. |
| 9 | + See Documentation/devicetree/bindings/sound/sun8i-codec-analog.txt |
| 10 | + - An digital part of the codec which is documented in this current |
| 11 | + binding documentation. |
| 12 | + - And finally, an audio card which links all the above components. |
| 13 | + The simple-audio card will be used. |
| 14 | + See Documentation/devicetree/bindings/sound/simple-card.txt |
| 15 | + |
| 16 | +This bindings documentation exposes Sun8i codec (digital part). |
| 17 | + |
| 18 | +Required properties: |
| 19 | +- compatible: must be "allwinner,sun8i-a33-codec" |
| 20 | +- reg: must contain the registers location and length |
| 21 | +- interrupts: must contain the codec interrupt |
| 22 | +- clocks: a list of phandle + clock-specifer pairs, one for each entry |
| 23 | + in clock-names. |
| 24 | +- clock-names: should contain followings: |
| 25 | + - "bus": the parent APB clock for this controller |
| 26 | + - "mod": the parent module clock |
| 27 | + |
| 28 | +Here is an example to add a sound card and the codec binding on sun8i SoCs that |
| 29 | +are similar to A33 using simple-card: |
| 30 | + |
| 31 | + sound { |
| 32 | + compatible = "simple-audio-card"; |
| 33 | + simple-audio-card,name = "sun8i-a33-audio"; |
| 34 | + simple-audio-card,format = "i2s"; |
| 35 | + simple-audio-card,frame-master = <&link_codec>; |
| 36 | + simple-audio-card,bitclock-master = <&link_codec>; |
| 37 | + simple-audio-card,mclk-fs = <512>; |
| 38 | + simple-audio-card,aux-devs = <&codec_analog>; |
| 39 | + simple-audio-card,routing = |
| 40 | + "Left DAC", "Digital Left DAC", |
| 41 | + "Right DAC", "Digital Right DAC"; |
| 42 | + |
| 43 | + simple-audio-card,cpu { |
| 44 | + sound-dai = <&dai>; |
| 45 | + }; |
| 46 | + |
| 47 | + link_codec: simple-audio-card,codec { |
| 48 | + sound-dai = <&codec>; |
| 49 | + }; |
| 50 | + |
| 51 | + soc@01c00000 { |
| 52 | + [...] |
| 53 | + |
| 54 | + audio-codec@1c22e00 { |
| 55 | + #sound-dai-cells = <0>; |
| 56 | + compatible = "allwinner,sun8i-a33-codec"; |
| 57 | + reg = <0x01c22e00 0x400>; |
| 58 | + interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>; |
| 59 | + clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>; |
| 60 | + clock-names = "bus", "mod"; |
| 61 | + }; |
| 62 | + }; |
| 63 | + |
0 commit comments