Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp3249441ybt; Mon, 22 Jun 2020 19:54:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzOJ5yDyTKmCNLA74e4x9gzv9oCufbsNyocclPWyqVl7+GfwYBmZqJrJnUT6F4WYi+SNtin X-Received: by 2002:a05:6402:22a5:: with SMTP id cx5mr20749180edb.246.1592880860829; Mon, 22 Jun 2020 19:54:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592880860; cv=none; d=google.com; s=arc-20160816; b=PKOz4601iy6S/HH95seLyspufKhuqsU3GGeqOjAqs0YqeYBG5NwaZ3coqWTybfLgL5 DaPocrIjH/8JuZwFVQpQdN13WgJ09OS6vGzIJPOUrd15Fo1Ld1Ao+hixJBmovWwt67bq EQG5WpftLXDlAvWG4Awz/dGNrvZr+zXyayykXO/A492F23FEeZQkPpEVfpzSW2F4P5Bw RWNJwa4YAFXAzVf00CmhJHQ2c2xxyvE9FEwKEhTK0IDiBPf1HJbyrPfjJUyhPHNtnyzl 87yi6RefkttNYJ2MD8r2kgAW2Y4eQE5o9eZoIKAyux7PFzyLsKB+o4V2ai30Q833SLWU wDvQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=5btw9hSyjkyBRg/0osSqmflxnUc1PvTzq1kf5jUdgaI=; b=NPb3eCP0No1H/ksRbOLDZIobjxWz5a7yyOfS0ljQzj2vM9EHXZd8NFFPL7vnx4WKZM XIz5CkU4bVLaHg7/CBSGSzK4W1/btlFApFGurNqOachmcucdPJ8sqFYvy8GwtoeCOu51 q9seoByUJk56X+Qy7Vq5Yf5hINIt0+BcUQm+AWERHQWsGbJcsjH/CNv8FcJO8oVtTjhv N/UvykQSSp7ABTiV76FuxBJg0tOj67MBH9eecZtBc13NRhAd1Ga32k5+fqGeInF2rNZF GYVk5cm0xEihR7PoN2i1SBK0tCVFaNH0BjoC0TPKcAJhxnfW1b/UfYDoUpxY62Rus8bk ICwQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=PSwCPUMW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w17si4413789ejz.332.2020.06.22.19.53.57; Mon, 22 Jun 2020 19:54:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=PSwCPUMW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731773AbgFWCtz (ORCPT + 99 others); Mon, 22 Jun 2020 22:49:55 -0400 Received: from mail.kernel.org ([198.145.29.99]:51634 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731557AbgFWCty (ORCPT ); Mon, 22 Jun 2020 22:49:54 -0400 Received: from dragon (unknown [80.251.214.228]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 24FCD20780; Tue, 23 Jun 2020 02:49:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592880591; bh=11iQQOgHHzL5BxpG/bAQDhMmMidSU3Y6mIWUilTP2OA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=PSwCPUMWrGWPVB1M97MoAi1acMbpKYGgGCcb2uOgo92ixv1uiW20M1DCW1Al1NOST jAPGLW5aABV6AwVJAemPRMy/tmgdjFOmSCQzBY1w6yu9oSL0t45aT1tAmKh1zuvwVn CGo2FWcUSQxJKEaUo3wE56oWNqOmTBXDp1bPeSC8= Date: Tue, 23 Jun 2020 10:49:36 +0800 From: Shawn Guo To: Tim Harvey Cc: Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , devicetree@vger.kernel.org, Rob Herring , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, rjones@gateworks.com Subject: Re: [PATCH v2] ARM: dts: imx6qdl-gw: add Gateworks System Controller support Message-ID: <20200623024935.GG30139@dragon> References: <1589985459-4874-1-git-send-email-tharvey@gateworks.com> <1592497149-22526-1-git-send-email-tharvey@gateworks.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1592497149-22526-1-git-send-email-tharvey@gateworks.com> User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jun 18, 2020 at 09:19:09AM -0700, Tim Harvey wrote: > 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: Tim Harvey > --- > v2: > - use keycode bindings from linux-event-codes.h > - fix gw5910/gw5913 vdd_bat ADC mode (these boards use 16bit pre-scaled ADC) > > --- > arch/arm/boot/dts/imx6qdl-gw51xx.dtsi | 153 +++++++++++++++++++++++++++++-- > arch/arm/boot/dts/imx6qdl-gw52xx.dtsi | 159 ++++++++++++++++++++++++++++++-- > arch/arm/boot/dts/imx6qdl-gw53xx.dtsi | 165 +++++++++++++++++++++++++++++++-- > arch/arm/boot/dts/imx6qdl-gw54xx.dtsi | 167 ++++++++++++++++++++++++++++++++-- > arch/arm/boot/dts/imx6qdl-gw551x.dtsi | 147 ++++++++++++++++++++++++++++-- > arch/arm/boot/dts/imx6qdl-gw552x.dtsi | 153 +++++++++++++++++++++++++++++-- > arch/arm/boot/dts/imx6qdl-gw553x.dtsi | 141 +++++++++++++++++++++++++++- > arch/arm/boot/dts/imx6qdl-gw560x.dtsi | 164 +++++++++++++++++++++++++++++++-- > arch/arm/boot/dts/imx6qdl-gw5903.dtsi | 140 +++++++++++++++++++++++++++- > arch/arm/boot/dts/imx6qdl-gw5904.dtsi | 141 +++++++++++++++++++++++++++- > arch/arm/boot/dts/imx6qdl-gw5907.dtsi | 142 ++++++++++++++++++++++++++++- > arch/arm/boot/dts/imx6qdl-gw5910.dtsi | 160 +++++++++++++++++++++++++++++++- > arch/arm/boot/dts/imx6qdl-gw5912.dtsi | 147 +++++++++++++++++++++++++++++- > arch/arm/boot/dts/imx6qdl-gw5913.dtsi | 153 ++++++++++++++++++++++++++++++- > 14 files changed, 2075 insertions(+), 57 deletions(-) > > diff --git a/arch/arm/boot/dts/imx6qdl-gw51xx.dtsi b/arch/arm/boot/dts/imx6qdl-gw51xx.dtsi > index 419a7cd..712458d 100644 > --- a/arch/arm/boot/dts/imx6qdl-gw51xx.dtsi > +++ b/arch/arm/boot/dts/imx6qdl-gw51xx.dtsi > @@ -4,6 +4,7 @@ > */ > > #include > +#include > > / { > /* these are used by bootloader for disabling nodes */ > @@ -19,6 +20,53 @@ > bootargs = "console=ttymxc1,115200"; > }; > > + gpio_keys { We use hyphen instead of underscore in node name. Shawn > + compatible = "gpio-keys"; > + #address-cells = <1>; > + #size-cells = <0>; > + > + user_pb { > + label = "user_pb"; > + gpios = <&gsc_gpio 0 GPIO_ACTIVE_LOW>; > + linux,code = ; > + }; > + > + user_pb1x { > + label = "user_pb1x"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <0>; > + }; > + > + key_erased { > + label = "key-erased"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <1>; > + }; > + > + eeprom_wp { > + label = "eeprom_wp"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <2>; > + }; > + > + tamper { > + label = "tamper"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <5>; > + }; > + > + switch_hold { > + label = "switch_hold"; > + linux,code = ; > + 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: pca9555@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# */ > >; > }; > > diff --git a/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi b/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi > index 60563ff..68dd8ef31 100644 > --- a/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi > +++ b/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi > @@ -4,6 +4,7 @@ > */ > > #include > +#include > > / { > /* 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 = ; > + }; > + > + user_pb1x { > + label = "user_pb1x"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <0>; > + }; > + > + key_erased { > + label = "key-erased"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <1>; > + }; > + > + eeprom_wp { > + label = "eeprom_wp"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <2>; > + }; > + > + tamper { > + label = "tamper"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <5>; > + }; > + > + switch_hold { > + label = "switch_hold"; > + linux,code = ; > + 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: pca9555@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>; > @@ -504,6 +648,7 @@ > fsl,pins = < > MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1 > MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1 > + MX6QDL_PAD_GPIO_4__GPIO1_IO04 0xb0b1 > >; > }; > > diff --git a/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi b/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi > index 8942bec..b583226 100644 > --- a/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi > +++ b/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi > @@ -4,6 +4,7 @@ > */ > > #include > +#include > > / { > /* 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 = ; > + }; > + > + user_pb1x { > + label = "user_pb1x"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <0>; > + }; > + > + key_erased { > + label = "key-erased"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <1>; > + }; > + > + eeprom_wp { > + label = "eeprom_wp"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <2>; > + }; > + > + tamper { > + label = "tamper"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <5>; > + }; > + > + switch_hold { > + label = "switch_hold"; > + linux,code = ; > + 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: pca9555@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>; > @@ -486,6 +636,7 @@ > fsl,pins = < > MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1 > MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1 > + MX6QDL_PAD_GPIO_4__GPIO1_IO04 0xb0b1 > >; > }; > > diff --git a/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi b/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi > index c40583d..3c00423 100644 > --- a/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi > +++ b/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi > @@ -4,6 +4,7 @@ > */ > > #include > +#include > #include > > / { > @@ -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 = ; > + }; > + > + user_pb1x { > + label = "user_pb1x"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <0>; > + }; > + > + key_erased { > + label = "key-erased"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <1>; > + }; > + > + eeprom_wp { > + label = "eeprom_wp"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <2>; > + }; > + > + tamper { > + label = "tamper"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <5>; > + }; > + > + switch_hold { > + label = "switch_hold"; > + linux,code = ; > + 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: pca9555@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>; > @@ -571,6 +723,7 @@ > fsl,pins = < > MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1 > MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1 > + MX6QDL_PAD_GPIO_4__GPIO1_IO04 0xb0b1 > >; > }; > > diff --git a/arch/arm/boot/dts/imx6qdl-gw551x.dtsi b/arch/arm/boot/dts/imx6qdl-gw551x.dtsi > index c38e86e..1e2c7a7 100644 > --- a/arch/arm/boot/dts/imx6qdl-gw551x.dtsi > +++ b/arch/arm/boot/dts/imx6qdl-gw551x.dtsi > @@ -47,6 +47,7 @@ > > #include > #include > +#include > #include > > / { > @@ -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 = ; > + }; > + > + user_pb1x { > + label = "user_pb1x"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <0>; > + }; > + > + key_erased { > + label = "key-erased"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <1>; > + }; > + > + eeprom_wp { > + label = "eeprom_wp"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <2>; > + }; > + > + tamper { > + label = "tamper"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <5>; > + }; > + > + switch_hold { > + label = "switch_hold"; > + linux,code = ; > + 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: pca9555@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 > >; > }; > > diff --git a/arch/arm/boot/dts/imx6qdl-gw552x.dtsi b/arch/arm/boot/dts/imx6qdl-gw552x.dtsi > index bb35971..46f21a3 100644 > --- a/arch/arm/boot/dts/imx6qdl-gw552x.dtsi > +++ b/arch/arm/boot/dts/imx6qdl-gw552x.dtsi > @@ -4,6 +4,7 @@ > */ > > #include > +#include > > / { > /* these are used by bootloader for disabling nodes */ > @@ -20,6 +21,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 = ; > + }; > + > + user_pb1x { > + label = "user_pb1x"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <0>; > + }; > + > + key_erased { > + label = "key-erased"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <1>; > + }; > + > + eeprom_wp { > + label = "eeprom_wp"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <2>; > + }; > + > + tamper { > + label = "tamper"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <5>; > + }; > + > + switch_hold { > + label = "switch_hold"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <7>; > + }; > + }; > + > leds { > compatible = "gpio-leds"; > pinctrl-names = "default"; > @@ -92,6 +140,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_1p0"; > + }; > + > + channel@23 { > + gw,mode = <1>; > + reg = <0x23>; > + label = "vdd_2p5"; > + }; > + }; > + }; > + > + gsc_gpio: pca9555@23 { > + compatible = "nxp,pca9555"; > + reg = <0x23>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-parent = <&gsc>; > + interrupts = <4>; > + }; > + > eeprom1: eeprom@50 { > compatible = "atmel,24c02"; > reg = <0x50>; > @@ -116,13 +261,6 @@ > pagesize = <16>; > }; > > - gpio: pca9555@23 { > - compatible = "nxp,pca9555"; > - reg = <0x23>; > - gpio-controller; > - #gpio-cells = <2>; > - }; > - > rtc: ds1672@68 { > compatible = "dallas,ds1672"; > reg = <0x68>; > @@ -305,6 +443,7 @@ > fsl,pins = < > MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1 > MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1 > + MX6QDL_PAD_GPIO_4__GPIO1_IO04 0xb0b1 > >; > }; > > diff --git a/arch/arm/boot/dts/imx6qdl-gw553x.dtsi b/arch/arm/boot/dts/imx6qdl-gw553x.dtsi > index ee85031..036ead6 100644 > --- a/arch/arm/boot/dts/imx6qdl-gw553x.dtsi > +++ b/arch/arm/boot/dts/imx6qdl-gw553x.dtsi > @@ -46,6 +46,7 @@ > */ > > #include > +#include > > / { > /* these are used by bootloader for disabling nodes */ > @@ -61,6 +62,53 @@ > stdout-path = &uart2; > }; > > + 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 = ; > + }; > + > + user_pb1x { > + label = "user_pb1x"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <0>; > + }; > + > + key_erased { > + label = "key-erased"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <1>; > + }; > + > + eeprom_wp { > + label = "eeprom_wp"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <2>; > + }; > + > + tamper { > + label = "tamper"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <5>; > + }; > + > + switch_hold { > + label = "switch_hold"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <7>; > + }; > + }; > + > leds { > compatible = "gpio-leds"; > pinctrl-names = "default"; > @@ -130,11 +178,101 @@ > pinctrl-0 = <&pinctrl_i2c1>; > status = "okay"; > > - gpio: pca9555@23 { > + 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"; > + }; > + > + channel@26 { > + gw,mode = <1>; > + reg = <0x26>; > + label = "vdd_an1"; > + }; > + }; > + }; > + > + gsc_gpio: pca9555@23 { > compatible = "nxp,pca9555"; > reg = <0x23>; > gpio-controller; > #gpio-cells = <2>; > + interrupt-parent = <&gsc>; > + interrupts = <4>; > }; > > eeprom1: eeprom@50 { > @@ -428,6 +566,7 @@ > fsl,pins = < > MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1 > MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1 > + MX6QDL_PAD_GPIO_4__GPIO1_IO04 0xb0b1 > >; > }; > > diff --git a/arch/arm/boot/dts/imx6qdl-gw560x.dtsi b/arch/arm/boot/dts/imx6qdl-gw560x.dtsi > index 69ca70d..e497b13 100644 > --- a/arch/arm/boot/dts/imx6qdl-gw560x.dtsi > +++ b/arch/arm/boot/dts/imx6qdl-gw560x.dtsi > @@ -88,6 +88,53 @@ > default-on; > }; > > + 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 = ; > + }; > + > + user_pb1x { > + label = "user_pb1x"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <0>; > + }; > + > + key_erased { > + label = "key-erased"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <1>; > + }; > + > + eeprom_wp { > + label = "eeprom_wp"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <2>; > + }; > + > + tamper { > + label = "tamper"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <5>; > + }; > + > + switch_hold { > + label = "switch_hold"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <7>; > + }; > + }; > + > leds { > compatible = "gpio-leds"; > pinctrl-names = "default"; > @@ -243,6 +290,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_an1"; > + }; > + > + 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_an2"; > + }; > + }; > + }; > + > + gsc_gpio: pca9555@23 { > + compatible = "nxp,pca9555"; > + reg = <0x23>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-parent = <&gsc>; > + interrupts = <4>; > + }; > + > eeprom1: eeprom@50 { > compatible = "atmel,24c02"; > reg = <0x50>; > @@ -267,13 +423,6 @@ > pagesize = <16>; > }; > > - pca9555: gpio@23 { > - compatible = "nxp,pca9555"; > - reg = <0x23>; > - gpio-controller; > - #gpio-cells = <2>; > - }; > - > ds1672: rtc@68 { > compatible = "dallas,ds1672"; > reg = <0x68>; > @@ -608,6 +757,7 @@ > fsl,pins = < > MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1 > MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1 > + MX6QDL_PAD_GPIO_4__GPIO1_IO04 0xb0b1 > >; > }; > > diff --git a/arch/arm/boot/dts/imx6qdl-gw5903.dtsi b/arch/arm/boot/dts/imx6qdl-gw5903.dtsi > index aee9221..768ae46 100644 > --- a/arch/arm/boot/dts/imx6qdl-gw5903.dtsi > +++ b/arch/arm/boot/dts/imx6qdl-gw5903.dtsi > @@ -46,6 +46,7 @@ > */ > > #include > +#include > > / { > chosen { > @@ -71,6 +72,53 @@ > default-brightness-level = <100>; > }; > > + 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 = ; > + }; > + > + user_pb1x { > + label = "user_pb1x"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <0>; > + }; > + > + key_erased { > + label = "key-erased"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <1>; > + }; > + > + eeprom_wp { > + label = "eeprom_wp"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <2>; > + }; > + > + tamper { > + label = "tamper"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <5>; > + }; > + > + switch_hold { > + label = "switch_hold"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <7>; > + }; > + }; > + > leds { > compatible = "gpio-leds"; > pinctrl-names = "default"; > @@ -183,11 +231,101 @@ > pinctrl-0 = <&pinctrl_i2c1>; > status = "okay"; > > - pca9555: gpio@23 { > + 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: pca9555@23 { > compatible = "nxp,pca9555"; > reg = <0x23>; > gpio-controller; > #gpio-cells = <2>; > + interrupt-parent = <&gsc>; > + interrupts = <4>; > }; > > eeprom1: eeprom@50 { > diff --git a/arch/arm/boot/dts/imx6qdl-gw5904.dtsi b/arch/arm/boot/dts/imx6qdl-gw5904.dtsi > index 76d6cf5..7eba6ed 100644 > --- a/arch/arm/boot/dts/imx6qdl-gw5904.dtsi > +++ b/arch/arm/boot/dts/imx6qdl-gw5904.dtsi > @@ -46,6 +46,7 @@ > */ > > #include > +#include > > / { > /* these are used by bootloader for disabling nodes */ > @@ -68,6 +69,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 = ; > + }; > + > + user_pb1x { > + label = "user_pb1x"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <0>; > + }; > + > + key_erased { > + label = "key-erased"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <1>; > + }; > + > + eeprom_wp { > + label = "eeprom_wp"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <2>; > + }; > + > + tamper { > + label = "tamper"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <5>; > + }; > + > + switch_hold { > + label = "switch_hold"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <7>; > + }; > + }; > + > leds { > compatible = "gpio-leds"; > pinctrl-names = "default"; > @@ -205,11 +253,101 @@ > pinctrl-0 = <&pinctrl_i2c1>; > status = "okay"; > > - pca9555: gpio@23 { > + 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: pca9555@23 { > compatible = "nxp,pca9555"; > reg = <0x23>; > gpio-controller; > #gpio-cells = <2>; > + interrupt-parent = <&gsc>; > + interrupts = <4>; > }; > > eeprom1: eeprom@50 { > @@ -503,6 +641,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# */ > >; > }; > > diff --git a/arch/arm/boot/dts/imx6qdl-gw5907.dtsi b/arch/arm/boot/dts/imx6qdl-gw5907.dtsi > index 0bdebdd..0e155fb 100644 > --- a/arch/arm/boot/dts/imx6qdl-gw5907.dtsi > +++ b/arch/arm/boot/dts/imx6qdl-gw5907.dtsi > @@ -4,6 +4,7 @@ > */ > > #include > +#include > > / { > /* these are used by bootloader for disabling nodes */ > @@ -19,6 +20,53 @@ > stdout-path = &uart2; > }; > > + 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 = ; > + }; > + > + user_pb1x { > + label = "user_pb1x"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <0>; > + }; > + > + key_erased { > + label = "key-erased"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <1>; > + }; > + > + eeprom_wp { > + label = "eeprom_wp"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <2>; > + }; > + > + tamper { > + label = "tamper"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <5>; > + }; > + > + switch_hold { > + label = "switch_hold"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <7>; > + }; > + }; > + > leds { > compatible = "gpio-leds"; > pinctrl-names = "default"; > @@ -102,11 +150,101 @@ > pinctrl-0 = <&pinctrl_i2c1>; > status = "okay"; > > - gpio@23 { > + 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: pca9555@23 { > compatible = "nxp,pca9555"; > reg = <0x23>; > gpio-controller; > #gpio-cells = <2>; > + interrupt-parent = <&gsc>; > + interrupts = <4>; > }; > > eeprom@50 { > @@ -133,7 +271,7 @@ > pagesize = <16>; > }; > > - rtc@68 { > + ds1672@68 { > compatible = "dallas,ds1672"; > reg = <0x68>; > }; > diff --git a/arch/arm/boot/dts/imx6qdl-gw5910.dtsi b/arch/arm/boot/dts/imx6qdl-gw5910.dtsi > index 0857de5..7571eb1 100644 > --- a/arch/arm/boot/dts/imx6qdl-gw5910.dtsi > +++ b/arch/arm/boot/dts/imx6qdl-gw5910.dtsi > @@ -4,6 +4,7 @@ > */ > > #include > +#include > > / { > /* these are used by bootloader for disabling nodes */ > @@ -22,6 +23,53 @@ > reg = <0x10000000 0x20000000>; > }; > > + 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 = ; > + }; > + > + user_pb1x { > + label = "user_pb1x"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <0>; > + }; > + > + key_erased { > + label = "key-erased"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <1>; > + }; > + > + eeprom_wp { > + label = "eeprom_wp"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <2>; > + }; > + > + tamper { > + label = "tamper"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <5>; > + }; > + > + switch_hold { > + label = "switch_hold"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <7>; > + }; > + }; > + > leds { > compatible = "gpio-leds"; > pinctrl-names = "default"; > @@ -111,11 +159,121 @@ > pinctrl-0 = <&pinctrl_i2c1>; > status = "okay"; > > - gpio@23 { > + 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@6 { > + gw,mode = <0>; > + reg = <0x06>; > + label = "temp"; > + }; > + > + channel@8 { > + gw,mode = <3>; > + reg = <0x08>; > + label = "vdd_bat"; > + }; > + > + channel@82 { > + gw,mode = <2>; > + reg = <0x82>; > + label = "vdd_vin"; > + gw,voltage-divider-ohms = <22100 1000>; > + gw,voltage-offset-microvolt = <800000>; > + }; > + > + channel@84 { > + gw,mode = <2>; > + reg = <0x84>; > + label = "vdd_5p0"; > + gw,voltage-divider-ohms = <22100 10000>; > + }; > + > + channel@86 { > + gw,mode = <2>; > + reg = <0x86>; > + label = "vdd_3p3"; > + gw,voltage-divider-ohms = <10000 10000>; > + }; > + > + channel@88 { > + gw,mode = <2>; > + reg = <0x88>; > + label = "vdd_2p5"; > + gw,voltage-divider-ohms = <10000 10000>; > + }; > + > + channel@8c { > + gw,mode = <2>; > + reg = <0x8c>; > + label = "vdd_3p0"; > + }; > + > + channel@8e { > + gw,mode = <2>; > + reg = <0x8e>; > + label = "vdd_arm"; > + }; > + > + channel@90 { > + gw,mode = <2>; > + reg = <0x90>; > + label = "vdd_soc"; > + }; > + > + channel@92 { > + gw,mode = <2>; > + reg = <0x92>; > + label = "vdd_1p5"; > + }; > + > + channel@98 { > + gw,mode = <2>; > + reg = <0x98>; > + label = "vdd_1p8"; > + }; > + > + channel@9a { > + gw,mode = <2>; > + reg = <0x9a>; > + label = "vdd_1p0"; > + gw,voltage-divider-ohms = <10000 10000>; > + }; > + > + channel@9c { > + gw,mode = <2>; > + reg = <0x9c>; > + label = "vdd_an1"; > + gw,voltage-divider-ohms = <10000 10000>; > + }; > + > + channel@a2 { > + gw,mode = <2>; > + reg = <0xa2>; > + label = "vdd_gsc"; > + gw,voltage-divider-ohms = <10000 10000>; > + }; > + }; > + }; > + > + gsc_gpio: pca9555@23 { > compatible = "nxp,pca9555"; > reg = <0x23>; > gpio-controller; > #gpio-cells = <2>; > + interrupt-parent = <&gsc>; > + interrupts = <4>; > }; > > eeprom@50 { > diff --git a/arch/arm/boot/dts/imx6qdl-gw5912.dtsi b/arch/arm/boot/dts/imx6qdl-gw5912.dtsi > index 8c57fd2..e87870f 100644 > --- a/arch/arm/boot/dts/imx6qdl-gw5912.dtsi > +++ b/arch/arm/boot/dts/imx6qdl-gw5912.dtsi > @@ -4,6 +4,7 @@ > */ > > #include > +#include > > / { > /* these are used by bootloader for disabling nodes */ > @@ -20,6 +21,53 @@ > stdout-path = &uart2; > }; > > + 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 = ; > + }; > + > + user_pb1x { > + label = "user_pb1x"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <0>; > + }; > + > + key_erased { > + label = "key-erased"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <1>; > + }; > + > + eeprom_wp { > + label = "eeprom_wp"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <2>; > + }; > + > + tamper { > + label = "tamper"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <5>; > + }; > + > + switch_hold { > + label = "switch_hold"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <7>; > + }; > + }; > + > leds { > compatible = "gpio-leds"; > pinctrl-names = "default"; > @@ -106,11 +154,108 @@ > pinctrl-0 = <&pinctrl_i2c1>; > status = "okay"; > > - gpio@23 { > + 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"; > + }; > + }; > + > + fan-controller@a { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "gw,gsc-fan"; > + reg = <0x0a>; > + }; > + }; > + > + gsc_gpio: pca9555@23 { > compatible = "nxp,pca9555"; > reg = <0x23>; > gpio-controller; > #gpio-cells = <2>; > + interrupt-parent = <&gsc>; > + interrupts = <4>; > }; > > eeprom@50 { > diff --git a/arch/arm/boot/dts/imx6qdl-gw5913.dtsi b/arch/arm/boot/dts/imx6qdl-gw5913.dtsi > index 635c203..8ad2d77 100644 > --- a/arch/arm/boot/dts/imx6qdl-gw5913.dtsi > +++ b/arch/arm/boot/dts/imx6qdl-gw5913.dtsi > @@ -4,6 +4,7 @@ > */ > > #include > +#include > > / { > /* these are used by bootloader for disabling nodes */ > @@ -19,6 +20,53 @@ > stdout-path = &uart2; > }; > > + 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 = ; > + }; > + > + user_pb1x { > + label = "user_pb1x"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <0>; > + }; > + > + key_erased { > + label = "key-erased"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <1>; > + }; > + > + eeprom_wp { > + label = "eeprom_wp"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <2>; > + }; > + > + tamper { > + label = "tamper"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <5>; > + }; > + > + switch_hold { > + label = "switch_hold"; > + linux,code = ; > + interrupt-parent = <&gsc>; > + interrupts = <7>; > + }; > + }; > + > leds { > compatible = "gpio-leds"; > pinctrl-names = "default"; > @@ -87,11 +135,114 @@ > pinctrl-0 = <&pinctrl_i2c1>; > status = "okay"; > > - gpio@23 { > + 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@6 { > + gw,mode = <0>; > + reg = <0x06>; > + label = "temp"; > + }; > + > + channel@8 { > + gw,mode = <3>; > + reg = <0x08>; > + label = "vdd_bat"; > + }; > + > + channel@82 { > + gw,mode = <2>; > + reg = <0x82>; > + label = "vdd_vin"; > + gw,voltage-divider-ohms = <22100 1000>; > + gw,voltage-offset-microvolt = <800000>; > + }; > + > + channel@84 { > + gw,mode = <2>; > + reg = <0x84>; > + label = "vdd_5p0"; > + gw,voltage-divider-ohms = <22100 10000>; > + }; > + > + channel@86 { > + gw,mode = <2>; > + reg = <0x86>; > + label = "vdd_3p3"; > + gw,voltage-divider-ohms = <10000 10000>; > + }; > + > + channel@88 { > + gw,mode = <2>; > + reg = <0x88>; > + label = "vdd_2p5"; > + gw,voltage-divider-ohms = <10000 10000>; > + }; > + > + channel@8c { > + gw,mode = <2>; > + reg = <0x8c>; > + label = "vdd_arm"; > + }; > + > + channel@8e { > + gw,mode = <2>; > + reg = <0x8e>; > + label = "vdd_soc"; > + }; > + > + channel@90 { > + gw,mode = <2>; > + reg = <0x90>; > + label = "vdd_1p5"; > + }; > + > + channel@92 { > + gw,mode = <2>; > + reg = <0x92>; > + label = "vdd_1p0"; > + }; > + > + channel@98 { > + gw,mode = <2>; > + reg = <0x98>; > + label = "vdd_3p0"; > + }; > + > + channel@9a { > + gw,mode = <2>; > + reg = <0x9a>; > + label = "vdd_an1"; > + gw,voltage-divider-ohms = <10000 10000>; > + }; > + > + channel@a2 { > + gw,mode = <2>; > + reg = <0xa2>; > + label = "vdd_gsc"; > + gw,voltage-divider-ohms = <10000 10000>; > + }; > + }; > + }; > + > + gsc_gpio: pca9555@23 { > compatible = "nxp,pca9555"; > reg = <0x23>; > gpio-controller; > #gpio-cells = <2>; > + interrupt-parent = <&gsc>; > + interrupts = <4>; > }; > > eeprom@50 { > -- > 2.7.4 >