Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 166729f3 authored by Mark Brown's avatar Mark Brown
Browse files

Merge remote-tracking branches 'asoc/topic/rt5665', 'asoc/topic/rt5677',...

Merge remote-tracking branches 'asoc/topic/rt5665', 'asoc/topic/rt5677', 'asoc/topic/samsung', 'asoc/topic/simple' and 'asoc/topic/sunxi' into asoc-next
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -7,6 +7,7 @@ Required properties:


- compatible: should be one of the followings
- compatible: should be one of the followings
   - "allwinner,sun4i-a10-i2s"
   - "allwinner,sun4i-a10-i2s"
   - "allwinner,sun6i-a31-i2s"
- reg: physical base address of the controller and length of memory mapped
- reg: physical base address of the controller and length of memory mapped
  region.
  region.
- interrupts: should contain the I2S interrupt.
- interrupts: should contain the I2S interrupt.
@@ -19,6 +20,10 @@ Required properties:
   - "mod" : module clock for the I2S controller
   - "mod" : module clock for the I2S controller
- #sound-dai-cells : Must be equal to 0
- #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:
Example:


i2s0: i2s@01c22400 {
i2s0: i2s@01c22400 {
+63 −0
Original line number Original line 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";
		};
	};
+1 −0
Original line number Original line Diff line number Diff line
@@ -10,6 +10,7 @@ Required properties:
  - compatible		: should be one of the following:
  - compatible		: should be one of the following:
    - "allwinner,sun4i-a10-spdif": for the Allwinner A10 SoC
    - "allwinner,sun4i-a10-spdif": for the Allwinner A10 SoC
    - "allwinner,sun6i-a31-spdif": for the Allwinner A31 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.
  - reg			: Offset and length of the register set for the device.


+1 −3
Original line number Original line Diff line number Diff line
@@ -106,10 +106,8 @@ static struct s3c_audio_pdata i2sv4_pdata = {
	.dma_playback = DMACH_HSI_I2SV40_TX,
	.dma_playback = DMACH_HSI_I2SV40_TX,
	.dma_capture = DMACH_HSI_I2SV40_RX,
	.dma_capture = DMACH_HSI_I2SV40_RX,
	.type = {
	.type = {
		.i2s = {
		.quirks = QUIRK_PRI_6CHAN,
		.quirks = QUIRK_PRI_6CHAN,
	},
	},
	},
};
};


struct platform_device s3c64xx_device_iisv4 = {
struct platform_device s3c64xx_device_iisv4 = {
+2 −4
Original line number Original line Diff line number Diff line
@@ -18,7 +18,7 @@


extern void s3c64xx_ac97_setup_gpio(int);
extern void s3c64xx_ac97_setup_gpio(int);


struct samsung_i2s {
struct samsung_i2s_type {
/* If the Primary DAI has 5.1 Channels */
/* If the Primary DAI has 5.1 Channels */
#define QUIRK_PRI_6CHAN		(1 << 0)
#define QUIRK_PRI_6CHAN		(1 << 0)
/* If the I2S block has a Stereo Overlay Channel */
/* If the I2S block has a Stereo Overlay Channel */
@@ -47,7 +47,5 @@ struct s3c_audio_pdata {
	void *dma_capture;
	void *dma_capture;
	void *dma_play_sec;
	void *dma_play_sec;
	void *dma_capture_mic;
	void *dma_capture_mic;
	union {
	struct samsung_i2s_type type;
		struct samsung_i2s i2s;
	} type;
};
};
Loading