|
@@ -1,4 +1,4 @@
|
|
-From 7174c08bd5f4e4976259c7a0894d302acc67321e Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From ddce02de6ff1d13503f66bb08b971ff532b89b43 Mon Sep 17 00:00:00 2001
|
|
From: Waldemar Brodkorb <wbrodkorb@conet.de>
|
|
From: Waldemar Brodkorb <wbrodkorb@conet.de>
|
|
Date: Mon, 2 Feb 2015 11:08:33 +0100
|
|
Date: Mon, 2 Feb 2015 11:08:33 +0100
|
|
Subject: [PATCH] add support for rpi-proto hardware
|
|
Subject: [PATCH] add support for rpi-proto hardware
|
|
@@ -10,12 +10,12 @@ kernel. Patch works fine for our embedded system.
|
|
Signed-off-by: Waldemar Brodkorb <wbrodkorb@conet.de>
|
|
Signed-off-by: Waldemar Brodkorb <wbrodkorb@conet.de>
|
|
---
|
|
---
|
|
arch/arm/boot/dts/Makefile | 1 +
|
|
arch/arm/boot/dts/Makefile | 1 +
|
|
- arch/arm/boot/dts/rpi-proto-overlay.dts | 34 +++++++++
|
|
|
|
|
|
+ arch/arm/boot/dts/rpi-proto-overlay.dts | 39 ++++++++
|
|
arch/arm/mach-bcm2708/bcm2708.c | 20 +++++
|
|
arch/arm/mach-bcm2708/bcm2708.c | 20 +++++
|
|
sound/soc/bcm/Kconfig | 8 ++
|
|
sound/soc/bcm/Kconfig | 8 ++
|
|
sound/soc/bcm/Makefile | 2 +
|
|
sound/soc/bcm/Makefile | 2 +
|
|
- sound/soc/bcm/rpi-proto.c | 130 ++++++++++++++++++++++++++++++++
|
|
|
|
- 6 files changed, 195 insertions(+)
|
|
|
|
|
|
+ sound/soc/bcm/rpi-proto.c | 152 ++++++++++++++++++++++++++++++++
|
|
|
|
+ 6 files changed, 222 insertions(+)
|
|
create mode 100644 arch/arm/boot/dts/rpi-proto-overlay.dts
|
|
create mode 100644 arch/arm/boot/dts/rpi-proto-overlay.dts
|
|
create mode 100644 sound/soc/bcm/rpi-proto.c
|
|
create mode 100644 sound/soc/bcm/rpi-proto.c
|
|
|
|
|
|
@@ -33,10 +33,10 @@ index 1b66478..7171eb6 100644
|
|
dtb-$(CONFIG_BCM2708_DT) += pps-gpio-overlay.dtb
|
|
dtb-$(CONFIG_BCM2708_DT) += pps-gpio-overlay.dtb
|
|
diff --git a/arch/arm/boot/dts/rpi-proto-overlay.dts b/arch/arm/boot/dts/rpi-proto-overlay.dts
|
|
diff --git a/arch/arm/boot/dts/rpi-proto-overlay.dts b/arch/arm/boot/dts/rpi-proto-overlay.dts
|
|
new file mode 100644
|
|
new file mode 100644
|
|
-index 0000000..984545b
|
|
|
|
|
|
+index 0000000..2029930
|
|
--- /dev/null
|
|
--- /dev/null
|
|
+++ b/arch/arm/boot/dts/rpi-proto-overlay.dts
|
|
+++ b/arch/arm/boot/dts/rpi-proto-overlay.dts
|
|
-@@ -0,0 +1,34 @@
|
|
|
|
|
|
+@@ -0,0 +1,39 @@
|
|
+// Definitions for Rpi-Proto
|
|
+// Definitions for Rpi-Proto
|
|
+/dts-v1/;
|
|
+/dts-v1/;
|
|
+/plugin/;
|
|
+/plugin/;
|
|
@@ -47,7 +47,7 @@ index 0000000..984545b
|
|
+ fragment@0 {
|
|
+ fragment@0 {
|
|
+ target = <&sound>;
|
|
+ target = <&sound>;
|
|
+ __overlay__ {
|
|
+ __overlay__ {
|
|
-+ compatible = "rpi-proto";
|
|
|
|
|
|
++ compatible = "rpi,rpi-proto";
|
|
+ i2s-controller = <&i2s>;
|
|
+ i2s-controller = <&i2s>;
|
|
+ status = "okay";
|
|
+ status = "okay";
|
|
+ };
|
|
+ };
|
|
@@ -61,11 +61,16 @@ index 0000000..984545b
|
|
+ };
|
|
+ };
|
|
+
|
|
+
|
|
+ fragment@2 {
|
|
+ fragment@2 {
|
|
-+ target-path = "/";
|
|
|
|
|
|
++ target = <&i2c1>;
|
|
+ __overlay__ {
|
|
+ __overlay__ {
|
|
-+ wm8731-codec {
|
|
|
|
|
|
++ #address-cells = <1>;
|
|
|
|
++ #size-cells = <0>;
|
|
|
|
++ status = "okay";
|
|
|
|
++
|
|
|
|
++ wm8731@1a {
|
|
+ #sound-dai-cells = <0>;
|
|
+ #sound-dai-cells = <0>;
|
|
+ compatible = "wlf,wm8731";
|
|
+ compatible = "wlf,wm8731";
|
|
|
|
++ reg = <0x1a>;
|
|
+ status = "okay";
|
|
+ status = "okay";
|
|
+ };
|
|
+ };
|
|
+ };
|
|
+ };
|
|
@@ -148,10 +153,10 @@ index 17ea2b0..883241b 100644
|
|
obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o
|
|
obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o
|
|
diff --git a/sound/soc/bcm/rpi-proto.c b/sound/soc/bcm/rpi-proto.c
|
|
diff --git a/sound/soc/bcm/rpi-proto.c b/sound/soc/bcm/rpi-proto.c
|
|
new file mode 100644
|
|
new file mode 100644
|
|
-index 0000000..70b0166
|
|
|
|
|
|
+index 0000000..cdc8b51
|
|
--- /dev/null
|
|
--- /dev/null
|
|
+++ b/sound/soc/bcm/rpi-proto.c
|
|
+++ b/sound/soc/bcm/rpi-proto.c
|
|
-@@ -0,0 +1,130 @@
|
|
|
|
|
|
+@@ -0,0 +1,152 @@
|
|
+/*
|
|
+/*
|
|
+ * ASoC driver for PROTO AudioCODEC (with a WM8731)
|
|
+ * ASoC driver for PROTO AudioCODEC (with a WM8731)
|
|
+ * connected to a Raspberry Pi
|
|
+ * connected to a Raspberry Pi
|
|
@@ -253,6 +258,21 @@ index 0000000..70b0166
|
|
+ int ret = 0;
|
|
+ int ret = 0;
|
|
+
|
|
+
|
|
+ snd_rpi_proto.dev = &pdev->dev;
|
|
+ snd_rpi_proto.dev = &pdev->dev;
|
|
|
|
++
|
|
|
|
++ if (pdev->dev.of_node) {
|
|
|
|
++ struct device_node *i2s_node;
|
|
|
|
++ struct snd_soc_dai_link *dai = &snd_rpi_proto_dai[0];
|
|
|
|
++ i2s_node = of_parse_phandle(pdev->dev.of_node,
|
|
|
|
++ "i2s-controller", 0);
|
|
|
|
++
|
|
|
|
++ if (i2s_node) {
|
|
|
|
++ dai->cpu_dai_name = NULL;
|
|
|
|
++ dai->cpu_of_node = i2s_node;
|
|
|
|
++ dai->platform_name = NULL;
|
|
|
|
++ dai->platform_of_node = i2s_node;
|
|
|
|
++ }
|
|
|
|
++ }
|
|
|
|
++
|
|
+ ret = snd_soc_register_card(&snd_rpi_proto);
|
|
+ ret = snd_soc_register_card(&snd_rpi_proto);
|
|
+ if (ret) {
|
|
+ if (ret) {
|
|
+ dev_err(&pdev->dev,
|
|
+ dev_err(&pdev->dev,
|
|
@@ -268,10 +288,17 @@ index 0000000..70b0166
|
|
+ return snd_soc_unregister_card(&snd_rpi_proto);
|
|
+ return snd_soc_unregister_card(&snd_rpi_proto);
|
|
+}
|
|
+}
|
|
+
|
|
+
|
|
|
|
++static const struct of_device_id snd_rpi_proto_of_match[] = {
|
|
|
|
++ { .compatible = "rpi,rpi-proto", },
|
|
|
|
++ {},
|
|
|
|
++};
|
|
|
|
++MODULE_DEVICE_TABLE(of, snd_rpi_proto_of_match);
|
|
|
|
++
|
|
+static struct platform_driver snd_rpi_proto_driver = {
|
|
+static struct platform_driver snd_rpi_proto_driver = {
|
|
+ .driver = {
|
|
+ .driver = {
|
|
+ .name = "snd-rpi-proto",
|
|
+ .name = "snd-rpi-proto",
|
|
+ .owner = THIS_MODULE,
|
|
+ .owner = THIS_MODULE,
|
|
|
|
++ .of_match_table = snd_rpi_proto_of_match,
|
|
+ },
|
|
+ },
|
|
+ .probe = snd_rpi_proto_probe,
|
|
+ .probe = snd_rpi_proto_probe,
|
|
+ .remove = snd_rpi_proto_remove,
|
|
+ .remove = snd_rpi_proto_remove,
|