Commit 64bf0a0a authored by Tim Harvey's avatar Tim Harvey Committed by Shawn Guo
Browse files

ARM: dts: imx6qdl-gw: add Gateworks System Controller support



Add Gateworks System Controller support to Gateworks Ventana boards:
- add dt bindings for GSC mfd driver and hwmon driver for ADC's and
  fan controllers.
- add dt bindings for gpio-keys driver for push-button and interrupt events

Signed-off-by: default avatarTim Harvey <tharvey@gateworks.com>
Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
parent f9ecf10c
Loading
Loading
Loading
Loading
+146 −7
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@
 */

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/linux-event-codes.h>

/ {
	/* these are used by bootloader for disabling nodes */
@@ -19,6 +20,53 @@
		bootargs = "console=ttymxc1,115200";
	};

	gpio-keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;

		user-pb {
			label = "user_pb";
			gpios = <&gsc_gpio 0 GPIO_ACTIVE_LOW>;
			linux,code = <BTN_0>;
		};

		user-pb1x {
			label = "user_pb1x";
			linux,code = <BTN_1>;
			interrupt-parent = <&gsc>;
			interrupts = <0>;
		};

		key-erased {
			label = "key-erased";
			linux,code = <BTN_2>;
			interrupt-parent = <&gsc>;
			interrupts = <1>;
		};

		eeprom-wp {
			label = "eeprom_wp";
			linux,code = <BTN_3>;
			interrupt-parent = <&gsc>;
			interrupts = <2>;
		};

		tamper {
			label = "tamper";
			linux,code = <BTN_4>;
			interrupt-parent = <&gsc>;
			interrupts = <5>;
		};

		switch-hold {
			label = "switch_hold";
			linux,code = <BTN_5>;
			interrupt-parent = <&gsc>;
			interrupts = <7>;
		};
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
@@ -102,6 +150,103 @@
	pinctrl-0 = <&pinctrl_i2c1>;
	status = "okay";

	gsc: gsc@20 {
		compatible = "gw,gsc";
		reg = <0x20>;
		interrupt-parent = <&gpio1>;
		interrupts = <4 GPIO_ACTIVE_LOW>;
		interrupt-controller;
		#interrupt-cells = <1>;
		#size-cells = <0>;

		adc {
			compatible = "gw,gsc-adc";
			#address-cells = <1>;
			#size-cells = <0>;

			channel@0 {
				gw,mode = <0>;
				reg = <0x00>;
				label = "temp";
			};

			channel@2 {
				gw,mode = <1>;
				reg = <0x02>;
				label = "vdd_vin";
			};

			channel@5 {
				gw,mode = <1>;
				reg = <0x05>;
				label = "vdd_3p3";
			};

			channel@8 {
				gw,mode = <1>;
				reg = <0x08>;
				label = "vdd_bat";
			};

			channel@b {
				gw,mode = <1>;
				reg = <0x0b>;
				label = "vdd_5p0";
			};

			channel@e {
				gw,mode = <1>;
				reg = <0xe>;
				label = "vdd_arm";
			};

			channel@11 {
				gw,mode = <1>;
				reg = <0x11>;
				label = "vdd_soc";
			};

			channel@14 {
				gw,mode = <1>;
				reg = <0x14>;
				label = "vdd_3p0";
			};

			channel@17 {
				gw,mode = <1>;
				reg = <0x17>;
				label = "vdd_1p5";
			};

			channel@1d {
				gw,mode = <1>;
				reg = <0x1d>;
				label = "vdd_1p8";
			};

			channel@20 {
				gw,mode = <1>;
				reg = <0x20>;
				label = "vdd_an1";
			};

			channel@23 {
				gw,mode = <1>;
				reg = <0x23>;
				label = "vdd_2p5";
			};
		};
	};

	gsc_gpio: gpio@23 {
		compatible = "nxp,pca9555";
		reg = <0x23>;
		gpio-controller;
		#gpio-cells = <2>;
		interrupt-parent = <&gsc>;
		interrupts = <4>;
	};

	eeprom1: eeprom@50 {
		compatible = "atmel,24c02";
		reg = <0x50>;
@@ -126,13 +271,6 @@
		pagesize = <16>;
	};

	gpio: pca9555@23 {
		compatible = "nxp,pca9555";
		reg = <0x23>;
		gpio-controller;
		#gpio-cells = <2>;
	};

	rtc: ds1672@68 {
		compatible = "dallas,ds1672";
		reg = <0x68>;
@@ -387,6 +525,7 @@
		fsl,pins = <
			MX6QDL_PAD_EIM_D21__I2C1_SCL		0x4001b8b1
			MX6QDL_PAD_EIM_D28__I2C1_SDA		0x4001b8b1
			MX6QDL_PAD_GPIO_4__GPIO1_IO04		0x0001b0b0 /* GSC_IRQ# */
		>;
	};

+152 −7
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@
 */

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/linux-event-codes.h>

/ {
	/* these are used by bootloader for disabling nodes */
@@ -28,6 +29,53 @@
		default-brightness-level = <7>;
	};

	gpio-keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;

		user-pb {
			label = "user_pb";
			gpios = <&gsc_gpio 0 GPIO_ACTIVE_LOW>;
			linux,code = <BTN_0>;
		};

		user-pb1x {
			label = "user_pb1x";
			linux,code = <BTN_1>;
			interrupt-parent = <&gsc>;
			interrupts = <0>;
		};

		key-erased {
			label = "key-erased";
			linux,code = <BTN_2>;
			interrupt-parent = <&gsc>;
			interrupts = <1>;
		};

		eeprom-wp {
			label = "eeprom_wp";
			linux,code = <BTN_3>;
			interrupt-parent = <&gsc>;
			interrupts = <2>;
		};

		tamper {
			label = "tamper";
			linux,code = <BTN_4>;
			interrupt-parent = <&gsc>;
			interrupts = <5>;
		};

		switch-hold {
			label = "switch_hold";
			linux,code = <BTN_5>;
			interrupt-parent = <&gsc>;
			interrupts = <7>;
		};
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
@@ -165,6 +213,109 @@
	pinctrl-0 = <&pinctrl_i2c1>;
	status = "okay";

	gsc: gsc@20 {
		compatible = "gw,gsc";
		reg = <0x20>;
		interrupt-parent = <&gpio1>;
		interrupts = <4 GPIO_ACTIVE_LOW>;
		interrupt-controller;
		#interrupt-cells = <1>;
		#size-cells = <0>;

		adc {
			compatible = "gw,gsc-adc";
			#address-cells = <1>;
			#size-cells = <0>;

			channel@0 {
				gw,mode = <0>;
				reg = <0x00>;
				label = "temp";
			};

			channel@2 {
				gw,mode = <1>;
				reg = <0x02>;
				label = "vdd_vin";
			};

			channel@5 {
				gw,mode = <1>;
				reg = <0x05>;
				label = "vdd_3p3";
			};

			channel@8 {
				gw,mode = <1>;
				reg = <0x08>;
				label = "vdd_bat";
			};

			channel@b {
				gw,mode = <1>;
				reg = <0x0b>;
				label = "vdd_5p0";
			};

			channel@e {
				gw,mode = <1>;
				reg = <0xe>;
				label = "vdd_arm";
			};

			channel@11 {
				gw,mode = <1>;
				reg = <0x11>;
				label = "vdd_soc";
			};

			channel@14 {
				gw,mode = <1>;
				reg = <0x14>;
				label = "vdd_3p0";
			};

			channel@17 {
				gw,mode = <1>;
				reg = <0x17>;
				label = "vdd_1p5";
			};

			channel@1d {
				gw,mode = <1>;
				reg = <0x1d>;
				label = "vdd_1p8";
			};

			channel@20 {
				gw,mode = <1>;
				reg = <0x20>;
				label = "vdd_1p0";
			};

			channel@23 {
				gw,mode = <1>;
				reg = <0x23>;
				label = "vdd_2p5";
			};

			channel@29 {
				gw,mode = <1>;
				reg = <0x29>;
				label = "vdd_an1";
			};
		};
	};

	gsc_gpio: gpio@23 {
		compatible = "nxp,pca9555";
		reg = <0x23>;
		gpio-controller;
		#gpio-cells = <2>;
		interrupt-parent = <&gsc>;
		interrupts = <4>;
	};

	eeprom1: eeprom@50 {
		compatible = "atmel,24c02";
		reg = <0x50>;
@@ -189,13 +340,6 @@
		pagesize = <16>;
	};

	gpio: pca9555@23 {
		compatible = "nxp,pca9555";
		reg = <0x23>;
		gpio-controller;
		#gpio-cells = <2>;
	};

	rtc: ds1672@68 {
		compatible = "dallas,ds1672";
		reg = <0x68>;
@@ -505,6 +649,7 @@
		fsl,pins = <
			MX6QDL_PAD_EIM_D21__I2C1_SCL		0x4001b8b1
			MX6QDL_PAD_EIM_D28__I2C1_SDA		0x4001b8b1
			MX6QDL_PAD_GPIO_4__GPIO1_IO04		0xb0b1
		>;
	};

+158 −7
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@
 */

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/linux-event-codes.h>

/ {
	/* these are used by bootloader for disabling nodes */
@@ -28,6 +29,53 @@
		default-brightness-level = <7>;
	};

	gpio-keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;

		user-pb {
			label = "user_pb";
			gpios = <&gsc_gpio 0 GPIO_ACTIVE_LOW>;
			linux,code = <BTN_0>;
		};

		user-pb1x {
			label = "user_pb1x";
			linux,code = <BTN_1>;
			interrupt-parent = <&gsc>;
			interrupts = <0>;
		};

		key-erased {
			label = "key-erased";
			linux,code = <BTN_2>;
			interrupt-parent = <&gsc>;
			interrupts = <1>;
		};

		eeprom-wp {
			label = "eeprom_wp";
			linux,code = <BTN_3>;
			interrupt-parent = <&gsc>;
			interrupts = <2>;
		};

		tamper {
			label = "tamper";
			linux,code = <BTN_4>;
			interrupt-parent = <&gsc>;
			interrupts = <5>;
		};

		switch-hold {
			label = "switch_hold";
			linux,code = <BTN_5>;
			interrupt-parent = <&gsc>;
			interrupts = <7>;
		};
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
@@ -158,6 +206,115 @@
	pinctrl-0 = <&pinctrl_i2c1>;
	status = "okay";

	gsc: gsc@20 {
		compatible = "gw,gsc";
		reg = <0x20>;
		interrupt-parent = <&gpio1>;
		interrupts = <4 GPIO_ACTIVE_LOW>;
		interrupt-controller;
		#interrupt-cells = <1>;
		#size-cells = <0>;

		adc {
			compatible = "gw,gsc-adc";
			#address-cells = <1>;
			#size-cells = <0>;

			channel@0 {
				gw,mode = <0>;
				reg = <0x00>;
				label = "temp";
			};

			channel@2 {
				gw,mode = <1>;
				reg = <0x02>;
				label = "vdd_vin";
			};

			channel@5 {
				gw,mode = <1>;
				reg = <0x05>;
				label = "vdd_3p3";
			};

			channel@8 {
				gw,mode = <1>;
				reg = <0x08>;
				label = "vdd_bat";
			};

			channel@b {
				gw,mode = <1>;
				reg = <0x0b>;
				label = "vdd_5p0";
			};

			channel@e {
				gw,mode = <1>;
				reg = <0xe>;
				label = "vdd_arm";
			};

			channel@11 {
				gw,mode = <1>;
				reg = <0x11>;
				label = "vdd_soc";
			};

			channel@14 {
				gw,mode = <1>;
				reg = <0x14>;
				label = "vdd_3p0";
			};

			channel@17 {
				gw,mode = <1>;
				reg = <0x17>;
				label = "vdd_1p5";
			};

			channel@1d {
				gw,mode = <1>;
				reg = <0x1d>;
				label = "vdd_1p8";
			};

			channel@20 {
				gw,mode = <1>;
				reg = <0x20>;
				label = "vdd_1p0";
			};

			channel@23 {
				gw,mode = <1>;
				reg = <0x23>;
				label = "vdd_2p5";
			};

			channel@26 {
				gw,mode = <1>;
				reg = <0x26>;
				label = "vdd_gps";
			};

			channel@29 {
				gw,mode = <1>;
				reg = <0x29>;
				label = "vdd_an1";
			};
		};
	};

	gsc_gpio: gpio@23 {
		compatible = "nxp,pca9555";
		reg = <0x23>;
		gpio-controller;
		#gpio-cells = <2>;
		interrupt-parent = <&gsc>;
		interrupts = <4>;
	};

	eeprom1: eeprom@50 {
		compatible = "atmel,24c02";
		reg = <0x50>;
@@ -182,13 +339,6 @@
		pagesize = <16>;
	};

	gpio: pca9555@23 {
		compatible = "nxp,pca9555";
		reg = <0x23>;
		gpio-controller;
		#gpio-cells = <2>;
	};

	rtc: ds1672@68 {
		compatible = "dallas,ds1672";
		reg = <0x68>;
@@ -487,6 +637,7 @@
		fsl,pins = <
			MX6QDL_PAD_EIM_D21__I2C1_SCL		0x4001b8b1
			MX6QDL_PAD_EIM_D28__I2C1_SDA		0x4001b8b1
			MX6QDL_PAD_GPIO_4__GPIO1_IO04		0xb0b1
		>;
	};

+160 −7
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@
 */

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/sound/fsl-imx-audmux.h>

/ {
@@ -29,6 +30,53 @@
		default-brightness-level = <7>;
	};

	gpio-keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;

		user-pb {
			label = "user_pb";
			gpios = <&gsc_gpio 0 GPIO_ACTIVE_LOW>;
			linux,code = <BTN_0>;
		};

		user-pb1x {
			label = "user_pb1x";
			linux,code = <BTN_1>;
			interrupt-parent = <&gsc>;
			interrupts = <0>;
		};

		key-erased {
			label = "key-erased";
			linux,code = <BTN_2>;
			interrupt-parent = <&gsc>;
			interrupts = <1>;
		};

		eeprom-wp {
			label = "eeprom_wp";
			linux,code = <BTN_3>;
			interrupt-parent = <&gsc>;
			interrupts = <2>;
		};

		tamper {
			label = "tamper";
			linux,code = <BTN_4>;
			interrupt-parent = <&gsc>;
			interrupts = <5>;
		};

		switch-hold {
			label = "switch_hold";
			linux,code = <BTN_5>;
			interrupt-parent = <&gsc>;
			interrupts = <7>;
		};
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
@@ -195,6 +243,117 @@
	pinctrl-0 = <&pinctrl_i2c1>;
	status = "okay";

	gsc: gsc@20 {
		compatible = "gw,gsc";
		reg = <0x20>;
		interrupt-parent = <&gpio1>;
		interrupts = <4 GPIO_ACTIVE_LOW>;
		interrupt-controller;
		#interrupt-cells = <1>;
		#address-cells = <1>;
		#size-cells = <0>;

		adc {
			compatible = "gw,gsc-adc";
			#address-cells = <1>;
			#size-cells = <0>;

			channel@0 {
				gw,mode = <0>;
				reg = <0x00>;
				label = "temp";
			};

			channel@2 {
				gw,mode = <1>;
				reg = <0x02>;
				label = "vdd_vin";
			};

			channel@5 {
				gw,mode = <1>;
				reg = <0x05>;
				label = "vdd_3p3";
			};

			channel@8 {
				gw,mode = <1>;
				reg = <0x08>;
				label = "vdd_bat";
			};

			channel@b {
				gw,mode = <1>;
				reg = <0x0b>;
				label = "vdd_5p0";
			};

			channel@e {
				gw,mode = <1>;
				reg = <0xe>;
				label = "vdd_arm";
			};

			channel@11 {
				gw,mode = <1>;
				reg = <0x11>;
				label = "vdd_soc";
			};

			channel@14 {
				gw,mode = <1>;
				reg = <0x14>;
				label = "vdd_3p0";
			};

			channel@17 {
				gw,mode = <1>;
				reg = <0x17>;
				label = "vdd_1p5";
			};

			channel@1d {
				gw,mode = <1>;
				reg = <0x1d>;
				label = "vdd_1p8";
			};

			channel@20 {
				gw,mode = <1>;
				reg = <0x20>;
				label = "vdd_1p0";
			};

			channel@23 {
				gw,mode = <1>;
				reg = <0x23>;
				label = "vdd_2p5";
			};

			channel@26 {
				gw,mode = <1>;
				reg = <0x26>;
				label = "vdd_gps";
			};
		};

		fan-controller@2c {
			compatible = "gw,gsc-fan";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x2c>;
		};
	};

	gsc_gpio: gpio@23 {
		compatible = "nxp,pca9555";
		reg = <0x23>;
		gpio-controller;
		#gpio-cells = <2>;
		interrupt-parent = <&gsc>;
		interrupts = <4>;
	};

	eeprom1: eeprom@50 {
		compatible = "atmel,24c02";
		reg = <0x50>;
@@ -219,13 +378,6 @@
		pagesize = <16>;
	};

	gpio: pca9555@23 {
		compatible = "nxp,pca9555";
		reg = <0x23>;
		gpio-controller;
		#gpio-cells = <2>;
	};

	rtc: ds1672@68 {
		compatible = "dallas,ds1672";
		reg = <0x68>;
@@ -572,6 +724,7 @@
		fsl,pins = <
			MX6QDL_PAD_EIM_D21__I2C1_SCL		0x4001b8b1
			MX6QDL_PAD_EIM_D28__I2C1_SDA		0x4001b8b1
			MX6QDL_PAD_GPIO_4__GPIO1_IO04		0xb0b1
		>;
	};

+140 −7
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/tda1997x.h>
#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/sound/fsl-imx-audmux.h>

/ {
@@ -63,6 +64,53 @@
		bootargs = "console=ttymxc1,115200";
	};

	gpio-keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;

		user-pb {
			label = "user_pb";
			gpios = <&gsc_gpio 0 GPIO_ACTIVE_LOW>;
			linux,code = <BTN_0>;
		};

		user-pb1x {
			label = "user_pb1x";
			linux,code = <BTN_1>;
			interrupt-parent = <&gsc>;
			interrupts = <0>;
		};

		key-erased {
			label = "key-erased";
			linux,code = <BTN_2>;
			interrupt-parent = <&gsc>;
			interrupts = <1>;
		};

		eeprom-wp {
			label = "eeprom_wp";
			linux,code = <BTN_3>;
			interrupt-parent = <&gsc>;
			interrupts = <2>;
		};

		tamper {
			label = "tamper";
			linux,code = <BTN_4>;
			interrupt-parent = <&gsc>;
			interrupts = <5>;
		};

		switch-hold {
			label = "switch_hold";
			linux,code = <BTN_5>;
			interrupt-parent = <&gsc>;
			interrupts = <7>;
		};
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
@@ -167,6 +215,97 @@
	pinctrl-0 = <&pinctrl_i2c1>;
	status = "okay";

	gsc: gsc@20 {
		compatible = "gw,gsc";
		reg = <0x20>;
		interrupt-parent = <&gpio1>;
		interrupts = <4 GPIO_ACTIVE_LOW>;
		interrupt-controller;
		#interrupt-cells = <1>;
		#size-cells = <0>;

		adc {
			compatible = "gw,gsc-adc";
			#address-cells = <1>;
			#size-cells = <0>;

			channel@0 {
				gw,mode = <0>;
				reg = <0x00>;
				label = "temp";
			};

			channel@2 {
				gw,mode = <1>;
				reg = <0x02>;
				label = "vdd_vin";
			};

			channel@5 {
				gw,mode = <1>;
				reg = <0x05>;
				label = "vdd_3p3";
			};

			channel@8 {
				gw,mode = <1>;
				reg = <0x08>;
				label = "vdd_bat";
			};

			channel@b {
				gw,mode = <1>;
				reg = <0x0b>;
				label = "vdd_5p0";
			};

			channel@e {
				gw,mode = <1>;
				reg = <0xe>;
				label = "vdd_arm";
			};

			channel@11 {
				gw,mode = <1>;
				reg = <0x11>;
				label = "vdd_soc";
			};

			channel@14 {
				gw,mode = <1>;
				reg = <0x14>;
				label = "vdd_3p0";
			};

			channel@17 {
				gw,mode = <1>;
				reg = <0x17>;
				label = "vdd_1p5";
			};

			channel@1d {
				gw,mode = <1>;
				reg = <0x1d>;
				label = "vdd_1p8a";
			};

			channel@20 {
				gw,mode = <1>;
				reg = <0x20>;
				label = "vdd_1p0b";
			};
		};
	};

	gsc_gpio: gpio@23 {
		compatible = "nxp,pca9555";
		reg = <0x23>;
		gpio-controller;
		#gpio-cells = <2>;
		interrupt-parent = <&gsc>;
		interrupts = <4>;
	};

	eeprom1: eeprom@50 {
		compatible = "atmel,24c02";
		reg = <0x50>;
@@ -191,13 +330,6 @@
		pagesize = <16>;
	};

	gpio: pca9555@23 {
		compatible = "nxp,pca9555";
		reg = <0x23>;
		gpio-controller;
		#gpio-cells = <2>;
	};

	rtc: ds1672@68 {
		compatible = "dallas,ds1672";
		reg = <0x68>;
@@ -464,6 +596,7 @@
		fsl,pins = <
			MX6QDL_PAD_EIM_D21__I2C1_SCL		0x4001b8b1
			MX6QDL_PAD_EIM_D28__I2C1_SDA		0x4001b8b1
			MX6QDL_PAD_GPIO_4__GPIO1_IO04		0xb0b1
		>;
	};

Loading