[U-Boot] [PATCH 28/30] dm: exynos: sound: Convert to use driver model

Simon Glass sjg at chromium.org
Mon Dec 3 11:37:44 UTC 2018


Update snow's device tree and config to use driver model for sound. Also
update the others as best we can.

Spring does not appear to have audio support in the kernel. The smdk5250
and smdk5420 boards use a wolfson codec which I cannot test with. So the
only board that is tested and known to work is snow.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

 arch/arm/dts/exynos5250-smdk5250.dts  | 20 ++++++++++++++++++--
 arch/arm/dts/exynos5250-snow.dts      | 21 ++++++++++++++++-----
 arch/arm/dts/exynos5250-spring.dts    | 24 ++++++++++++++++++++----
 arch/arm/dts/exynos5250.dtsi          | 15 ++++++++++-----
 arch/arm/dts/exynos5420-peach-pit.dts | 24 ++++++++++++++++++++----
 arch/arm/dts/exynos5420-smdk5420.dts  | 20 ++++++++++++++++++--
 arch/arm/dts/exynos54xx.dtsi          |  7 +++++++
 configs/arndale_defconfig             |  1 +
 configs/peach-pi_defconfig            |  1 +
 configs/peach-pit_defconfig           |  1 +
 configs/smdk5250_defconfig            |  1 +
 configs/snow_defconfig                |  1 +
 configs/spring_defconfig              |  1 +
 drivers/sound/samsung_sound.c         |  3 +++
 14 files changed, 118 insertions(+), 22 deletions(-)

diff --git a/arch/arm/dts/exynos5250-smdk5250.dts b/arch/arm/dts/exynos5250-smdk5250.dts
index bf60b82d449..e542a790761 100644
--- a/arch/arm/dts/exynos5250-smdk5250.dts
+++ b/arch/arm/dts/exynos5250-smdk5250.dts
@@ -60,10 +60,26 @@
 	};
 
 	i2c at 12C70000 {
-		soundcodec at 1a {
+		wm8994: soundcodec at 1a {
 			reg = <0x1a>;
 			u-boot,i2c-offset-len = <2>;
-			compatible = "wolfson,wm8994-codec";
+			compatible = "wolfson,wm8994";
+			#sound-dai-cells = <1>;
+		};
+	};
+
+	sound {
+		compatible = "google,smdk5250-audio-wm8994";
+
+		samsung,model = "SMDK5250-I2S-WM8994";
+		samsung,audio-codec = <&wm8994>;
+
+		cpu {
+			sound-dai = <&i2s0 0>;
+		};
+
+		codec {
+			sound-dai = <&wm8994 0>;
 		};
 	};
 
diff --git a/arch/arm/dts/exynos5250-snow.dts b/arch/arm/dts/exynos5250-snow.dts
index cb5067b9669..7587dc0ff24 100644
--- a/arch/arm/dts/exynos5250-snow.dts
+++ b/arch/arm/dts/exynos5250-snow.dts
@@ -40,7 +40,6 @@
 		mmc3 = "/mmc at 12230000";
 		serial0 = "/serial at 12C30000";
 		console = "/serial at 12C30000";
-		i2s = "/sound at 3830000";
 	};
 
         memory {
@@ -214,9 +213,10 @@
 			};
 		};
 
-		soundcodec at 11 {
+		max98095: codec at 11 {
+			compatible = "maxim,max98095";
 			reg = <0x11>;
-			compatible = "maxim,max98095-codec";
+			#sound-dai-cells = <1>;
 		};
 	};
 
@@ -273,9 +273,20 @@
 		};
 	};
 
-	sound at 3830000 {
-		samsung,codec-type = "max98095";
+	sound {
+		compatible = "google,snow-audio-max98095";
+
+		samsung,model = "Snow-I2S-MAX98095";
+		samsung,audio-codec = <&max98095>;
 		codec-enable-gpio = <&gpx1 7 GPIO_ACTIVE_HIGH>;
+
+		cpu {
+			sound-dai = <&i2s0 0>;
+		};
+
+		codec {
+			sound-dai = <&max98095 0>;
+		};
 	};
 
 	sound at 12d60000 {
diff --git a/arch/arm/dts/exynos5250-spring.dts b/arch/arm/dts/exynos5250-spring.dts
index 7633d36874f..191e12af6a1 100644
--- a/arch/arm/dts/exynos5250-spring.dts
+++ b/arch/arm/dts/exynos5250-spring.dts
@@ -34,7 +34,6 @@
 		mmc0 = "/mmc at 12200000";
 		serial0 = "/serial at 12C30000";
 		console = "/serial at 12C30000";
-		i2s = "/sound at 3830000";
 	};
 
 	memory {
@@ -639,10 +638,27 @@
 		};
 	};
 
-	soundcodec at 20 {
-		reg = <0x20>;
-		compatible = "maxim,max98088-codec";
+	max98095: soundcodec at 10 {
+		reg = <0x10>;
+		compatible = "maxim,max98095";
+		#sound-dai-cells = <1>;
 	};
+
+	sound {
+		compatible = "google,spring-audio-max98095";
+
+		samsung,model = "Spring-I2S-MAX98095";
+		samsung,audio-codec = <&max98095>;
+
+		cpu {
+			sound-dai = <&i2s0 0>;
+		};
+
+		codec {
+			sound-dai = <&max98095 0>;
+		};
+	};
+
 };
 
 #include "cros-ec-keyboard.dtsi"
diff --git a/arch/arm/dts/exynos5250.dtsi b/arch/arm/dts/exynos5250.dtsi
index 502c687802e..66c5b6dca95 100644
--- a/arch/arm/dts/exynos5250.dtsi
+++ b/arch/arm/dts/exynos5250.dtsi
@@ -78,9 +78,12 @@
 		#size-cells = <0>;
 	};
 
-	sound at 3830000 {
-		compatible = "samsung,exynos-sound";
-		reg = <0x3830000 0x50>;
+	i2s0: i2s at 3830000 {
+		compatible = "samsung,s5pv210-i2s";
+		reg = <0x03830000 0x100>;
+		samsung,idma-addr = <0x03000000>;
+		#clock-cells = <1>;
+		#sound-dai-cells = <1>;
 		samsung,i2s-epll-clock-frequency = <192000000>;
 		samsung,i2s-sampling-rate = <48000>;
 		samsung,i2s-bits-per-sample = <16>;
@@ -90,9 +93,11 @@
 		samsung,i2s-id = <0>;
 	};
 
-	sound at 12d60000 {
-		compatible = "samsung,exynos-sound";
+	i2s1: i2s at 12d60000 {
+		compatible = "samsung,s5pv210-i2s";
 		reg = <0x12d60000 0x20>;
+		#clock-cells = <1>;
+		#sound-dai-cells = <1>;
 		samsung,i2s-epll-clock-frequency = <192000000>;
 		samsung,i2s-sampling-rate = <48000>;
 		samsung,i2s-bits-per-sample = <16>;
diff --git a/arch/arm/dts/exynos5420-peach-pit.dts b/arch/arm/dts/exynos5420-peach-pit.dts
index c86f9d9035d..ca6dc2a5ac9 100644
--- a/arch/arm/dts/exynos5420-peach-pit.dts
+++ b/arch/arm/dts/exynos5420-peach-pit.dts
@@ -67,12 +67,28 @@
 		};
 	};
 
+	sound {
+		compatible = "google,peach-audio-max98090";
+
+		samsung,model = "PEACH-I2S-MAX98090";
+		samsung,audio-codec = <&max98090>;
+
+		cpu {
+			sound-dai = <&i2s0 0>;
+		};
+
+		codec {
+			sound-dai = <&max98090 0>;
+		};
+	};
+
 	i2c at 12CD0000 { /* i2c7 */
 		clock-frequency = <100000>;
-	       soundcodec at 20 {
-	              reg = <0x20>;
-	              compatible = "maxim,max98090-codec";
-	       };
+		max98090: soundcodec at 20 {
+			reg = <0x20>;
+			compatible = "maxim,max98090";
+			#sound-dai-cells = <1>;
+		};
 
 		edp-lvds-bridge at 48 {
 			compatible = "parade,ps8625";
diff --git a/arch/arm/dts/exynos5420-smdk5420.dts b/arch/arm/dts/exynos5420-smdk5420.dts
index daaa4666964..7a5da674fbe 100644
--- a/arch/arm/dts/exynos5420-smdk5420.dts
+++ b/arch/arm/dts/exynos5420-smdk5420.dts
@@ -82,10 +82,26 @@
 	};
 
 	i2c at 12C70000 {
-		soundcodec at 1a {
+		wm8994: soundcodec at 1a {
 			reg = <0x1a>;
 			u-boot,i2c-offset-len = <2>;
-			compatible = "wolfson,wm8994-codec";
+			compatible = "wolfson,wm8994";
+			#sound-dai-cells = <1>;
+		};
+	};
+
+	sound {
+		compatible = "samsung,smdk5420-audio-wm8994";
+
+		samsung,model = "Snow-I2S-MAX98095";
+		samsung,audio-codec = <&wm8994>;
+
+		cpu {
+			sound-dai = <&i2s0 0>;
+		};
+
+		codec {
+			sound-dai = <&wm8994 0>;
 		};
 	};
 
diff --git a/arch/arm/dts/exynos54xx.dtsi b/arch/arm/dts/exynos54xx.dtsi
index 09bef56e6c2..38c9bdc8de0 100644
--- a/arch/arm/dts/exynos54xx.dtsi
+++ b/arch/arm/dts/exynos54xx.dtsi
@@ -104,6 +104,13 @@
 		interrupts = <0 203 0>;
 	};
 
+	i2s0: i2s at 3830000 {
+		compatible = "samsung,exynos5420-i2s";
+		reg = <0x03830000 0x100>;
+		#sound-dai-cells = <1>;
+		samsung,idma-addr = <0x03000000>;
+	};
+
 	mmc at 12200000 {
 		samsung,bus-width = <8>;
 		samsung,timing = <1 3 3>;
diff --git a/configs/arndale_defconfig b/configs/arndale_defconfig
index 2b6af4b2215..22881c3a2c6 100644
--- a/configs/arndale_defconfig
+++ b/configs/arndale_defconfig
@@ -31,6 +31,7 @@ CONFIG_MMC_SDHCI_S5P=y
 CONFIG_SMC911X=y
 CONFIG_SMC911X_BASE=0x5000000
 CONFIG_SOUND=y
+CONFIG_DM_SOUND=y
 CONFIG_I2S=y
 CONFIG_I2S_SAMSUNG=y
 CONFIG_SOUND_MAX98095=y
diff --git a/configs/peach-pi_defconfig b/configs/peach-pi_defconfig
index 338eae20b41..2f82c2d82c7 100644
--- a/configs/peach-pi_defconfig
+++ b/configs/peach-pi_defconfig
@@ -50,6 +50,7 @@ CONFIG_REGULATOR_TPS65090=y
 CONFIG_DM_PWM=y
 CONFIG_PWM_EXYNOS=y
 CONFIG_SOUND=y
+CONFIG_DM_SOUND=y
 CONFIG_I2S=y
 CONFIG_I2S_SAMSUNG=y
 CONFIG_SOUND_MAX98095=y
diff --git a/configs/peach-pit_defconfig b/configs/peach-pit_defconfig
index 933c823ea86..3a177f14f7c 100644
--- a/configs/peach-pit_defconfig
+++ b/configs/peach-pit_defconfig
@@ -49,6 +49,7 @@ CONFIG_REGULATOR_TPS65090=y
 CONFIG_DM_PWM=y
 CONFIG_PWM_EXYNOS=y
 CONFIG_SOUND=y
+CONFIG_DM_SOUND=y
 CONFIG_I2S=y
 CONFIG_I2S_SAMSUNG=y
 CONFIG_SOUND_MAX98095=y
diff --git a/configs/smdk5250_defconfig b/configs/smdk5250_defconfig
index 161454b33fd..90ee0ffbc9d 100644
--- a/configs/smdk5250_defconfig
+++ b/configs/smdk5250_defconfig
@@ -44,6 +44,7 @@ CONFIG_DM_PMIC_MAX77686=y
 CONFIG_DM_REGULATOR=y
 CONFIG_DM_REGULATOR_MAX77686=y
 CONFIG_SOUND=y
+CONFIG_DM_SOUND=y
 CONFIG_I2S=y
 CONFIG_I2S_SAMSUNG=y
 CONFIG_SOUND_MAX98095=y
diff --git a/configs/snow_defconfig b/configs/snow_defconfig
index 21080091a7d..4d1c53d4291 100644
--- a/configs/snow_defconfig
+++ b/configs/snow_defconfig
@@ -61,6 +61,7 @@ CONFIG_DM_PWM=y
 CONFIG_PWM_EXYNOS=y
 CONFIG_DEBUG_UART_S5P=y
 CONFIG_SOUND=y
+CONFIG_DM_SOUND=y
 CONFIG_I2S=y
 CONFIG_I2S_SAMSUNG=y
 CONFIG_SOUND_MAX98095=y
diff --git a/configs/spring_defconfig b/configs/spring_defconfig
index ca1799895e8..8f9436c74af 100644
--- a/configs/spring_defconfig
+++ b/configs/spring_defconfig
@@ -61,6 +61,7 @@ CONFIG_DM_PWM=y
 CONFIG_PWM_EXYNOS=y
 CONFIG_DEBUG_UART_S5P=y
 CONFIG_SOUND=y
+CONFIG_DM_SOUND=y
 CONFIG_I2S=y
 CONFIG_I2S_SAMSUNG=y
 CONFIG_SOUND_MAX98095=y
diff --git a/drivers/sound/samsung_sound.c b/drivers/sound/samsung_sound.c
index 4e8321eae26..d5acb574c91 100644
--- a/drivers/sound/samsung_sound.c
+++ b/drivers/sound/samsung_sound.c
@@ -89,6 +89,9 @@ static const struct sound_ops samsung_sound_ops = {
 
 static const struct udevice_id samsung_sound_ids[] = {
 	{ .compatible = "google,snow-audio-max98095" },
+	{ .compatible = "google,spring-audio-max98095" },
+	{ .compatible = "samsung,smdk5420-audio-wm8994" },
+	{ .compatible = "google,peach-audio-max98095" },
 	{ }
 };
 
-- 
2.20.0.rc1.387.gf8505762e3-goog



More information about the U-Boot mailing list