From cdf6acdd6a6270538b0fdd08e79986d4a553062a Mon Sep 17 00:00:00 2001
From: gtrainavicius <gtrainavicius@users.noreply.github.com>
Date: Sat, 10 Dec 2016 16:05:25 +0200
Subject: [PATCH] Pisound dynamic overlay (#1760)

Restructuring pisound-overlay.dts, so it can be loaded and unloaded dynamically using dtoverlay.

Print a logline when the kernel module is removed.
---
 arch/arm/boot/dts/overlays/pisound-overlay.dts | 94 ++++++++++++++------------
 sound/soc/bcm/pisound.c                        |  2 +
 2 files changed, 52 insertions(+), 44 deletions(-)

--- a/arch/arm/boot/dts/overlays/pisound-overlay.dts
+++ b/arch/arm/boot/dts/overlays/pisound-overlay.dts
@@ -26,6 +26,54 @@
 	compatible = "brcm,bcm2708";
 
 	fragment@0 {
+		target = <&spi0>;
+		__overlay__ {
+			status = "okay";
+		};
+	};
+
+	fragment@1 {
+		target = <&spidev0>;
+		__overlay__ {
+			status = "disabled";
+		};
+	};
+
+	fragment@2 {
+		target = <&spidev1>;
+		__overlay__ {
+			status = "okay";
+		};
+	};
+
+	fragment@3 {
+		target = <&spi0>;
+		__overlay__ {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			pisound_spi: pisound_spi@0{
+				compatible = "blokaslabs,pisound-spi";
+				reg = <0>;
+				pinctrl-names = "default";
+				pinctrl-0 = <&spi0_pins>;
+				spi-max-frequency = <1000000>;
+			};
+		};
+	};
+
+	fragment@4 {
+		target-path = "/";
+		__overlay__ {
+			pcm5102a-codec {
+				#sound-dai-cells = <0>;
+				compatible = "ti,pcm5102a";
+				status = "okay";
+			};
+		};
+	};
+
+	fragment@5 {
 		target = <&sound>;
 		__overlay__ {
 			compatible = "blokaslabs,pisound";
@@ -49,7 +97,7 @@
 		};
 	};
 
-	fragment@1 {
+	fragment@6 {
 		target = <&gpio>;
 		__overlay__ {
 			pinctrl-names = "default";
@@ -63,52 +111,10 @@
 		};
 	};
 
-	fragment@2 {
+	fragment@7 {
 		target = <&i2s>;
 		__overlay__ {
 			status = "okay";
 		};
 	};
-
-	fragment@3 {
-		target-path = "/";
-		__overlay__ {
-			pcm5102a-codec {
-				#sound-dai-cells = <0>;
-				compatible = "ti,pcm5102a";
-				status = "okay";
-			};
-		};
-	};
-
-	fragment@4 {
-		target = <&spi0>;
-		__overlay__ {
-			status = "okay";
-
-			spidev@0{
-				status = "disabled";
-			};
-
-			spidev@1{
-				status = "okay";
-			};
-		};
-	};
-
-	fragment@5 {
-		target = <&spi0>;
-		__overlay__ {
-			#address-cells = <1>;
-			#size-cells = <0>;
-
-			pisound_spi: pisound_spi@0{
-				compatible = "blokaslabs,pisound-spi";
-				reg = <0>;
-				pinctrl-names = "default";
-				pinctrl-0 = <&spi0_pins>;
-				spi-max-frequency = <1000000>;
-			};
-		};
-	};
 };
--- a/sound/soc/bcm/pisound.c
+++ b/sound/soc/bcm/pisound.c
@@ -954,6 +954,8 @@ static int pisnd_probe(struct platform_d
 
 static int pisnd_remove(struct platform_device *pdev)
 {
+	printi("Unloading.\n");
+
 	if (pisnd_kobj) {
 		kobject_put(pisnd_kobj);
 		pisnd_kobj = NULL;
