[linux-sunxi] [PATCH v5 4/7] ASoC: sunxi: Add sun8i I2S driver

Chen-Yu Tsai wens at csie.org
Sat Oct 22 18:33:16 PDT 2016


Hi,

On Fri, Oct 21, 2016 at 4:36 PM, Jean-Francois Moine <moinejf at free.fr> wrote:
> This patch adds I2S support to sun8i SoCs as the A83T and H3.
>
> Signed-off-by: Jean-Francois Moine <moinejf at free.fr>
> ---
> Note: This driver is closed to the sun4i-i2s except that:
> - it handles the H3

If it's close to sun4i-i2s, you should probably rework that one to support
the newer SoCs.

> - it creates the sound card (with sun4i-i2s, the sound card is created
>   by the CODECs)

I think this is wrong. I2S is only the DAI. You typically have a separate
platform driver for the whole card, or just use simple-card.

> ---
>  .../devicetree/bindings/sound/sun4i-i2s.txt        |  38 +-
>  sound/soc/sunxi/Kconfig                            |   8 +
>  sound/soc/sunxi/Makefile                           |   3 +
>  sound/soc/sunxi/sun8i-i2s.c                        | 700 +++++++++++++++++++++
>  4 files changed, 744 insertions(+), 5 deletions(-)
>  create mode 100644 sound/soc/sunxi/sun8i-i2s.c
>
> diff --git a/Documentation/devicetree/bindings/sound/sun4i-i2s.txt b/Documentation/devicetree/bindings/sound/sun4i-i2s.txt
> index 7b526ec..2fb0a7a 100644
> --- a/Documentation/devicetree/bindings/sound/sun4i-i2s.txt
> +++ b/Documentation/devicetree/bindings/sound/sun4i-i2s.txt
> @@ -1,4 +1,4 @@
> -* Allwinner A10 I2S controller
> +* Allwinner A10/A38T/H3 I2S controller
>
>  The I2S bus (Inter-IC sound bus) is a serial link for digital
>  audio data transfer between devices in the system.
> @@ -6,20 +6,30 @@ audio data transfer between devices in the system.
>  Required properties:
>
>  - compatible: should be one of the followings
> -   - "allwinner,sun4i-a10-i2s"
> +  - "allwinner,sun4i-a10-i2s"
> +       "allwinner,sun8i-a83t-i2s"
> +       "allwinner,sun8i-h3-i2s"
>  - reg: physical base address of the controller and length of memory mapped
>    region.
> -- interrupts: should contain the I2S interrupt.
>  - dmas: DMA specifiers for tx and rx dma. See the DMA client binding,
>         Documentation/devicetree/bindings/dma/dma.txt
> -- dma-names: should include "tx" and "rx".
> +- dma-names: must include "tx" and/or "rx".
>  - clocks: a list of phandle + clock-specifer pairs, one for each entry in clock-names.
>  - clock-names: should contain followings:
>     - "apb" : clock for the I2S bus interface
>     - "mod" : module clock for the I2S controller
>  - #sound-dai-cells : Must be equal to 0
>
> -Example:
> +Optional properties:
> +
> +- interrupts: I2S interrupt
> +- resets: phandle to the reset of the device
> +
> +Required nodes:
> +
> + - port: link to the associated CODEC (DAC, HDMI...)

Note here you are changing an existing binding, adding a required node.
If it were truely different, you probably should've started a new binding.

Regards
ChenYu

> +
> +Example 1:
>
>  i2s0: i2s at 01c22400 {
>         #sound-dai-cells = <0>;
> @@ -32,3 +42,21 @@ i2s0: i2s at 01c22400 {
>                <&dma SUN4I_DMA_NORMAL 3>;
>         dma-names = "rx", "tx";
>  };
> +
> +Example 2:
> +
> +i2s2: i2s at 1c22800 {
> +       compatible = "allwinner,sun8i-a83t-i2s";
> +       reg = <0x01c22800 0x60>;
> +       clocks = <&ccu CLK_BUS_I2S2>, <&ccu CLK_I2S2>;
> +       clock-names = "apb", "mod";
> +       resets = <&ccu RST_I2S2>;
> +       dmas = <&dma 27>;
> +       dma-names = "tx";
> +       status = "disabled";
> +       port {
> +               i2s2_hdmi: endpoint {
> +                       remote-endpoint = <&hdmi_i2s2>;
> +               };
> +       };
> +};



More information about the linux-arm-kernel mailing list