| /* |
| * Copyright (C) 2015 Nest Labs, Inc. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| */ |
| |
| / { |
| |
| air-gpios { |
| reg = <0x0 0>; |
| compatible = "nestlabs,gpio-exporter"; |
| input-names = "airdatagpio"; |
| input-gpios = <&gpio6 21 GPIO_ACTIVE_HIGH>; |
| output-names = "airresetgpio", "airbootgpio"; |
| output-gpios = <&gpio6 16 GPIO_ACTIVE_HIGH &gpio6 20 GPIO_ACTIVE_HIGH>; |
| }; |
| |
| led-trigger-gpios { |
| reg = <0x0 0>; |
| compatible = "nestlabs,gpio-exporter"; |
| output-names = "ring", "keypad", "info"; |
| output-gpios = <&gpio4 18 GPIO_ACTIVE_LOW |
| &gpio7 1 GPIO_ACTIVE_LOW |
| &gpio7 4 GPIO_ACTIVE_LOW>; |
| }; |
| }; |
| |
| /* AIR Micro SPI */ |
| &ecspi2 { |
| fsl,spi-num-chipselects = <1>; |
| cs-gpios = <&gpio6 14 GPIO_ACTIVE_LOW>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pinctrl_ecspi2_1>; |
| dmas; |
| status = "okay"; |
| |
| spidev_air@0 { |
| compatible = "spidev"; |
| spi-max-frequency = <20000000>; |
| reg = <0>; |
| }; |
| }; |
| |
| &i2c2 { |
| clock-frequency = <400000>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pinctrl_i2c2_2>; |
| status = "okay"; |
| |
| /* NFC */ |
| pn548@28 { |
| compatible = "nxp,pn547"; |
| reg = <0x28>; |
| |
| interrupt-parent = <&gpio5>; |
| interrupts = <5 GPIO_ACTIVE_HIGH>; |
| |
| nxp,pn54x-irq = <&gpio5 5 GPIO_ACTIVE_HIGH>; |
| nxp,pn54x-ven = <&gpio1 11 GPIO_ACTIVE_HIGH>; |
| nxp,pn54x-firm = <&gpio1 10 GPIO_ACTIVE_HIGH>; |
| }; |
| |
| /* Ring LEDS 1,2,3 */ |
| lp55231@32 { |
| compatible = "national,lp55231", "national,lp5523"; |
| label = "ctrl0"; |
| reg = <0x32>; |
| clock-mode = /bits/ 8 <1>; |
| enable-gpio = <&gpio7 2 GPIO_ACTIVE_HIGH>; |
| |
| chan0 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan1 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan2 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan3 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan4 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan5 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan6 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <250>; |
| }; |
| |
| chan7 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <250>; |
| }; |
| |
| chan8 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <250>; |
| }; |
| }; |
| |
| /* Ring LEDS 7,8,9 */ |
| lp55231@33 { |
| compatible = "national,lp55231", "national,lp5523"; |
| label = "ctrl1"; |
| reg = <0x33>; |
| clock-mode = /bits/ 8 <1>; |
| |
| chan0 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan1 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan2 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan3 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan4 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan5 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan6 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <250>; |
| }; |
| |
| chan7 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <250>; |
| }; |
| |
| chan8 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <250>; |
| }; |
| }; |
| |
| /* Keypad LEDS info */ |
| lp55231@35 { |
| compatible = "national,lp55231", "national,lp5523"; |
| label = "ctrl8"; |
| reg = <0x35>; |
| clock-mode = /bits/ 8 <1>; |
| |
| chan0 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan1 { |
| led-cur = /bits/ 8 <0>; |
| max-cur = /bits/ 8 <0>; |
| }; |
| |
| chan2 { |
| led-cur = /bits/ 8 <0>; |
| max-cur = /bits/ 8 <0>; |
| }; |
| |
| chan3 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan4 { |
| led-cur = /bits/ 8 <0>; |
| max-cur = /bits/ 8 <0>; |
| }; |
| |
| chan5 { |
| led-cur = /bits/ 8 <0>; |
| max-cur = /bits/ 8 <0>; |
| }; |
| |
| chan6 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <250>; |
| }; |
| |
| chan7 { |
| led-cur = /bits/ 8 <0>; |
| max-cur = /bits/ 8 <0>; |
| }; |
| |
| chan8 { |
| led-cur = /bits/ 8 <0>; |
| max-cur = /bits/ 8 <0>; |
| }; |
| }; |
| |
| /* OPT3001 (ALS) @ 0x44 */ |
| light@44 { |
| compatible = "ti,opt3001"; |
| reg = <0x44>; |
| interrupt-parent = <&gpio1>; |
| interrupts = <9 GPIO_ACTIVE_HIGH>; |
| status = "okay"; |
| }; |
| }; |
| |
| &i2c3 { |
| |
| /* Ring LEDS 4,5,6 */ |
| lp55231@32 { |
| compatible = "national,lp55231", "national,lp5523"; |
| label = "ctrl4"; |
| reg = <0x32>; |
| clock-mode = /bits/ 8 <1>; |
| |
| chan0 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan1 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan2 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan3 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan4 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan5 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan6 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <250>; |
| }; |
| |
| chan7 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <250>; |
| }; |
| |
| chan8 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <250>; |
| }; |
| }; |
| |
| /* Keypad LEDS 1,2,3,4,5,6,7,8,9 */ |
| lp55231@33 { |
| compatible = "national,lp55231", "national,lp5523"; |
| label = "ctrl5"; |
| reg = <0x33>; |
| clock-mode = /bits/ 8 <1>; |
| |
| chan0 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <255>; |
| }; |
| |
| chan1 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <255>; |
| }; |
| |
| chan2 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <255>; |
| }; |
| |
| chan3 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <255>; |
| }; |
| |
| chan4 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <255>; |
| }; |
| |
| chan5 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <255>; |
| }; |
| |
| chan6 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <255>; |
| }; |
| |
| chan7 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <255>; |
| }; |
| |
| chan8 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <255>; |
| }; |
| }; |
| |
| /* Keypad LEDS 0,back,enter */ |
| lp55231@34 { |
| compatible = "national,lp55231", "national,lp5523"; |
| label = "ctrl6"; |
| reg = <0x34>; |
| clock-mode = /bits/ 8 <1>; |
| |
| chan0 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan1 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <255>; |
| }; |
| |
| chan2 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan3 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan4 { |
| led-cur = /bits/ 8 <0>; |
| max-cur = /bits/ 8 <0>; |
| }; |
| |
| chan5 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan6 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <250>; |
| }; |
| |
| chan7 { |
| led-cur = /bits/ 8 <0>; |
| max-cur = /bits/ 8 <0>; |
| }; |
| |
| chan8 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <250>; |
| }; |
| }; |
| |
| /* Keypad LEDS stay, home, away */ |
| lp55231@35 { |
| compatible = "national,lp55231", "national,lp5523"; |
| label = "ctrl7"; |
| reg = <0x35>; |
| clock-mode = /bits/ 8 <1>; |
| |
| chan0 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan1 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan2 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan3 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan4 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan5 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <200>; |
| }; |
| |
| chan6 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <250>; |
| }; |
| |
| chan7 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <250>; |
| }; |
| |
| chan8 { |
| led-cur = /bits/ 8 <1>; |
| max-cur = /bits/ 8 <250>; |
| }; |
| }; |
| }; |
| |
| &iomuxc { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pinctrl_hog &extra_pinctrl_hog>; |
| |
| hog { |
| air_hogs: air-hogs { |
| fsl,pins = < |
| MX6SX_PAD_GPIO1_IO09__GPIO1_IO_9 0x400000b0 /* opt3001 interrupt */ |
| |
| MX6SX_PAD_SD3_DATA0__GPIO7_IO_2 0x004010b0 /* led enable - ring, keypad, info */ |
| |
| MX6SX_PAD_QSPI1A_DATA2__GPIO4_IO_18 0x000000b0 /* led trigger - ring */ |
| MX6SX_PAD_SD3_CMD__GPIO7_IO_1 0x004000b0 /* led trigger - keypad */ |
| MX6SX_PAD_SD3_DATA2__GPIO7_IO_4 0x004000b0 /* led trigger - info */ |
| |
| MX6SX_PAD_SD4_DATA2__GPIO6_IO_16 0x400010b0 /* AIR mcu reset */ |
| MX6SX_PAD_SD4_DATA6__GPIO6_IO_20 0x400010b0 /* AIR mcu boot0 */ |
| MX6SX_PAD_SD4_DATA0__GPIO6_IO_14 0x400010b0 /* for ecspi2 */ |
| |
| MX6SX_PAD_RGMII1_RXC__GPIO5_IO_5 0x400010b0 /* NFC OOB: interrupt from NFC */ |
| MX6SX_PAD_GPIO1_IO10__GPIO1_IO_10 0x400010b0 /* NFC OOB: firmware download */ |
| MX6SX_PAD_GPIO1_IO11__GPIO1_IO_11 0x400010b0 /* NFC OOB: enable */ |
| >; |
| }; |
| }; |
| |
| ecspi2 { |
| pinctrl_ecspi2_1: ecspi2grp-1 { |
| fsl,pins = < |
| MX6SX_PAD_SD4_CMD__ECSPI2_MOSI 0x100b1 |
| MX6SX_PAD_SD4_CLK__ECSPI2_MISO 0x100b1 |
| MX6SX_PAD_SD4_DATA1__ECSPI2_SCLK 0x100b1 |
| >; |
| }; |
| }; |
| |
| i2c2 { |
| pinctrl_i2c2_2: i2c2grp-2 { |
| fsl,pins = < |
| MX6SX_PAD_QSPI1B_DATA2__I2C2_SDA 0x4001f899 |
| MX6SX_PAD_QSPI1B_DATA3__I2C2_SCL 0x4001f899 |
| >; |
| }; |
| }; |
| |
| uart5 { |
| pinctrl_uart5_2: uart5grp-2 { |
| fsl,pins = < |
| MX6SX_PAD_SD4_DATA4__UART5_RX 0x1b0b1 |
| MX6SX_PAD_SD4_DATA5__UART5_TX 0x1b0b1 |
| >; |
| }; |
| }; |
| |
| kpp { |
| pinctrl_kpp_0: kppgrp-0 { |
| fsl,pins = < |
| MX6SX_PAD_KEY_COL0__KPP_COL_0 0x110b0 |
| MX6SX_PAD_KEY_COL1__KPP_COL_1 0x110b0 |
| MX6SX_PAD_KEY_COL2__KPP_COL_2 0x110b0 |
| MX6SX_PAD_KEY_COL3__KPP_COL_3 0x110b0 |
| MX6SX_PAD_KEY_ROW0__KPP_ROW_0 0x1f010 |
| MX6SX_PAD_KEY_ROW1__KPP_ROW_1 0x1f010 |
| MX6SX_PAD_KEY_ROW2__KPP_ROW_2 0x1f010 |
| MX6SX_PAD_KEY_ROW3__KPP_ROW_3 0x1f010 |
| >; |
| }; |
| |
| pinctrl_kpp_0_sleep: kppgrp-0-sleep { |
| fsl,pins = < |
| MX6SX_PAD_KEY_COL0__GPIO2_IO_10 0x3080 |
| MX6SX_PAD_KEY_COL1__GPIO2_IO_11 0x3080 |
| MX6SX_PAD_KEY_COL2__GPIO2_IO_12 0x3080 |
| MX6SX_PAD_KEY_COL3__GPIO2_IO_13 0x3080 |
| MX6SX_PAD_KEY_ROW0__GPIO2_IO_15 0x3080 |
| MX6SX_PAD_KEY_ROW1__GPIO2_IO_16 0x3080 |
| MX6SX_PAD_KEY_ROW2__GPIO2_IO_17 0x3080 |
| MX6SX_PAD_KEY_ROW3__GPIO2_IO_18 0x3080 |
| >; |
| }; |
| }; |
| }; |
| |
| /* AIR Micro UART */ |
| &uart5 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pinctrl_uart5_2>; |
| status = "okay"; |
| }; |
| |
| /* Keypad */ |
| &kpp { |
| pinctrl-names = "default", "sleep"; |
| pinctrl-0 = <&pinctrl_kpp_0>; |
| pinctrl-1 = <&pinctrl_kpp_0_sleep>; |
| linux,keymap = <0x00000002 /* KEY_1 */ |
| 0x00010003 /* KEY_2 */ |
| 0x00020004 /* KEY_3 */ |
| 0x0003003c /* KEY_F2 (STAY) */ |
| 0x01000005 /* KEY_4 */ |
| 0x0101003e /* KEY_F4 (INFO) */ |
| 0x01020007 /* KEY_6 */ |
| 0x0103003b /* KEY_F1 (HOME) */ |
| 0x02000008 /* KEY_7 */ |
| 0x02010009 /* KEY_8 */ |
| 0x0202000a /* KEY_9 */ |
| 0x0203003d /* KEY_F3 (AWAY) */ |
| 0x0300009e /* KEY_BACK */ |
| 0x0301000b /* KEY_0 */ |
| 0x03020160>; /* KEY_OK */ |
| linux,input-no-autorepeat; |
| status = "okay"; |
| }; |