From b71f1fd962c66ba3fa46483f193cc2263146c5bf Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Mon, 21 Jan 2019 12:23:55 +0000
Subject: [PATCH] overlays: Add mcp342x overlay

Support the MCP342x family of ADCs from Microchip.

See: https://github.com/raspberrypi/linux/issues/2819

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
---
 arch/arm/boot/dts/overlays/Makefile           |  1 +
 arch/arm/boot/dts/overlays/README             | 16 ++++
 .../arm/boot/dts/overlays/mcp342x-overlay.dts | 93 +++++++++++++++++++
 3 files changed, 110 insertions(+)
 create mode 100644 arch/arm/boot/dts/overlays/mcp342x-overlay.dts

--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
@@ -79,6 +79,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
 	mcp2515-can1.dtbo \
 	mcp3008.dtbo \
 	mcp3202.dtbo \
+	mcp342x.dtbo \
 	media-center.dtbo \
 	midi-uart0.dtbo \
 	midi-uart1.dtbo \
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -1277,6 +1277,22 @@ Params: spi<n>-<m>-present      boolean,
         spi<n>-<m>-speed        integer, set the spi bus speed for this device
 
 
+Name:   mcp342x
+Info:   Overlay for activation of Microchip MCP3421-3428 ADCs over I2C
+Load:   dtoverlay=mcp342x,<param>=<val>
+Params: addr                    I2C bus address of device, for devices with
+                                addresses that are configurable, e.g. by
+                                hardware links (default=0x68)
+        mcp3421                 The device is an MCP3421
+        mcp3422                 The device is an MCP3422
+        mcp3423                 The device is an MCP3423
+        mcp3424                 The device is an MCP3424
+        mcp3425                 The device is an MCP3425
+        mcp3426                 The device is an MCP3426
+        mcp3427                 The device is an MCP3427
+        mcp3428                 The device is an MCP3428
+
+
 Name:   media-center
 Info:   Media Center HAT - 2.83" Touch Display + extras by Pi Supply
 Load:   dtoverlay=media-center,<param>=<val>
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/mcp342x-overlay.dts
@@ -0,0 +1,93 @@
+// Overlay for MCP3421-8 ADCs from Microchip Semiconductor
+
+/dts-v1/;
+/plugin/;
+
+/ {
+	compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
+
+	fragment@0 {
+		target = <&i2c1>;
+		__overlay__ {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			status = "okay";
+
+			mcp342x: mcp@68 {
+				reg = <0x68>;
+
+				status = "okay";
+			};
+		};
+	};
+
+	fragment@1 {
+		target = <&mcp342x>;
+		__dormant__ {
+			compatible = "microchip,mcp3421";
+		};
+	};
+
+	fragment@2 {
+		target = <&mcp342x>;
+		__dormant__ {
+			compatible = "microchip,mcp3422";
+		};
+	};
+
+	fragment@3 {
+		target = <&mcp342x>;
+		__dormant__ {
+			compatible = "microchip,mcp3423";
+		};
+	};
+
+	fragment@4 {
+		target = <&mcp342x>;
+		__dormant__ {
+			compatible = "microchip,mcp3424";
+		};
+	};
+
+	fragment@5 {
+		target = <&mcp342x>;
+		__dormant__ {
+			compatible = "microchip,mcp3425";
+		};
+	};
+
+	fragment@6 {
+		target = <&mcp342x>;
+		__dormant__ {
+			compatible = "microchip,mcp3426";
+		};
+	};
+
+	fragment@7 {
+		target = <&mcp342x>;
+		__dormant__ {
+			compatible = "microchip,mcp3427";
+		};
+	};
+
+	fragment@8 {
+		target = <&mcp342x>;
+		__dormant__ {
+			compatible = "microchip,mcp3428";
+		};
+	};
+
+	__overrides__ {
+		addr = <&mcp342x>,"reg:0";
+		mcp3421 = <0>,"=1";
+		mcp3422 = <0>,"=2";
+		mcp3423 = <0>,"=3";
+		mcp3424 = <0>,"=4";
+		mcp3425 = <0>,"=5";
+		mcp3426 = <0>,"=6";
+		mcp3427 = <0>,"=7";
+		mcp3428 = <0>,"=8";
+	};
+};
+