openwrt/target/linux/brcm2708/patches-4.19/950-0263-BCM270X-Adding-dev...

136 lines
3.3 KiB
Diff

From 0d2a0f4f4c00c958fb6e7a2673adbe51c2a932f2 Mon Sep 17 00:00:00 2001
From: b-ak <anur.bhargav@gmail.com>
Date: Thu, 3 Jan 2019 00:29:14 +0530
Subject: [PATCH] BCM270X: Adding device tree support for AudioSense-Pi
add-on soundcard
Device tree overlay for AudioSense-Pi card.
To enable support for the hardware add the following
line to the RPi /boot/config.txt:
dtoverlay=audiosense-pi
More documentation @ arch/arm/boot/dts/overlays/README
Signed-off-by: b-ak <anur.bhargav@gmail.com>
---
arch/arm/boot/dts/overlays/Makefile | 1 +
arch/arm/boot/dts/overlays/README | 8 ++
.../dts/overlays/audiosense-pi-overlay.dts | 82 +++++++++++++++++++
3 files changed, 91 insertions(+)
create mode 100644 arch/arm/boot/dts/overlays/audiosense-pi-overlay.dts
--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
@@ -20,6 +20,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
audioinjector-addons.dtbo \
audioinjector-ultra.dtbo \
audioinjector-wm8731-audio.dtbo \
+ audiosense-pi.dtbo \
audremap.dtbo \
balena-fin.dtbo \
bmp085_i2c-sensor.dtbo \
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -453,6 +453,14 @@ Load: dtoverlay=audioinjector-wm8731-a
Params: <None>
+Name: audiosense-pi
+Info: Configures the audiosense-pi add on soundcard
+ For more information refer to
+ https://gitlab.com/kakar0t/audiosense-pi
+Load: dtoverlay=audiosense-pi
+Params: <None>
+
+
Name: audremap
Info: Switches PWM sound output to pins 12 (Right) & 13 (Left)
Load: dtoverlay=audremap,<param>=<val>
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/audiosense-pi-overlay.dts
@@ -0,0 +1,82 @@
+// Definitions for audiosense add on soundcard
+/dts-v1/;
+/plugin/;
+#include <dt-bindings/pinctrl/bcm2835.h>
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+ compatible = "brcm,bcm2837", "brcm,bcm2836", "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
+
+ fragment@0 {
+ target = <&i2s>;
+ __overlay__ {
+ status = "okay";
+ };
+ };
+
+ fragment@1 {
+ target-path = "/";
+ __overlay__ {
+ codec_reg_1v8: codec-reg-1v8 {
+ compatible = "regulator-fixed";
+ regulator-name = "tlv320aic3204_1v8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-always-on;
+ };
+ };
+ };
+
+ fragment@2 {
+ target = <&gpio>;
+ __overlay__ {
+ codec_rst: codec-rst {
+ brcm,pins = <26>;
+ brcm,function = <BCM2835_FSEL_GPIO_OUT>;
+ };
+ };
+ };
+
+ fragment@3 {
+ target = <&i2c1>;
+ __overlay__ {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ /* audio external oscillator */
+ codec_osc: codec_osc {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <12000000>; /* 12 MHz */
+ };
+
+ codec: tlv320aic32x4@18 {
+ #sound-dai-cells = <0>;
+ compatible = "ti,tlv320aic32x4";
+ reg = <0x18>;
+
+ clocks = <&codec_osc>;
+ clock-names = "mclk";
+
+ iov-supply = <&vdd_3v3_reg>;
+ ldoin-supply = <&vdd_3v3_reg>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+ reset-gpios = <&gpio 26 GPIO_ACTIVE_HIGH>;
+
+ status = "okay";
+ };
+ };
+ };
+
+ fragment@4 {
+ target = <&sound>;
+ __overlay__ {
+ compatible = "as,audiosense-pi";
+ i2s-controller = <&i2s>;
+ status = "okay";
+ };
+ };
+};