blob: 530cb2ef2dde3a708012e8006d853e2bb0b23707 [file] [log] [blame]
/*
* 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.
*/
/ {
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>;
};
};
&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>;
animation-addr = /bits/ 8 <0x03 0x09 0x0f>;
animation-data = /bits/ 8 <0x00 0x49 0x00 0x92 0x01 0x24 0xf0
0x00 0x9f 0x80 0x90 0x01 0x8e 0xe0 0x8e 0xf0 0x8f 0x40
0xf0 0x00 0x9f 0x81 0x90 0x02 0x8e 0x80 0x8e 0x90 0x8e
0xe0 0xf0 0x00 0x9f 0x82 0x90 0x03 0x8e 0x20 0x8e 0x30
0x8e 0x80 0x94 0x00 0x98 0x00 0x4c 0x00 0x92 0x01 0x8e
0x11 0xa0 0x04 0x0c 0x5a 0x04 0x96 0x23 0x0a 0x09 0x8c
0x0f 0x32 0x43 0x0a 0x0c 0x3c 0x04 0x96 0x95 0x01 0x8e
0x1b 0x8c 0x17 0xa0 0x05 0x09 0xe6 0x44 0x14 0x43 0x1e
0xc0 0x00>;
chan0 {
led-cur = /bits/ 8 <47>;
max-cur = /bits/ 8 <200>;
};
chan1 {
led-cur = /bits/ 8 <47>;
max-cur = /bits/ 8 <200>;
};
chan2 {
led-cur = /bits/ 8 <47>;
max-cur = /bits/ 8 <200>;
};
chan3 {
led-cur = /bits/ 8 <53>;
max-cur = /bits/ 8 <200>;
};
chan4 {
led-cur = /bits/ 8 <53>;
max-cur = /bits/ 8 <200>;
};
chan5 {
led-cur = /bits/ 8 <53>;
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>;
animation-addr = /bits/ 8 <0x03 0x09 0x0f>;
animation-data = /bits/ 8 <0x00 0x49 0x00 0x92 0x01 0x24 0xf0
0x00 0x9f 0x80 0x90 0x07 0x8e 0xe0 0x8e 0xf0 0x8f 0x40
0xf0 0x00 0x9f 0x81 0x90 0x08 0x8e 0x80 0x8e 0x90 0x8e
0xe0 0xf0 0x00 0x9f 0x82 0x90 0x09 0x8e 0x20 0x8e 0x30
0x8e 0x80 0x94 0x00 0x98 0x00 0x4c 0x00 0x92 0x01 0x8e
0x11 0xa0 0x04 0x0c 0x5a 0x04 0x96 0x23 0x0a 0x09 0x8c
0x0f 0x32 0x43 0x0a 0x0c 0x3c 0x04 0x96 0x95 0x01 0x8e
0x1b 0x8c 0x17 0xa0 0x05 0x09 0xe6 0x44 0x14 0x43 0x1e
0xc0 0x00>;
chan0 {
led-cur = /bits/ 8 <47>;
max-cur = /bits/ 8 <200>;
};
chan1 {
led-cur = /bits/ 8 <47>;
max-cur = /bits/ 8 <200>;
};
chan2 {
led-cur = /bits/ 8 <47>;
max-cur = /bits/ 8 <200>;
};
chan3 {
led-cur = /bits/ 8 <53>;
max-cur = /bits/ 8 <200>;
};
chan4 {
led-cur = /bits/ 8 <53>;
max-cur = /bits/ 8 <200>;
};
chan5 {
led-cur = /bits/ 8 <53>;
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>;
animation-addr = /bits/ 8 <0x03 0x09 0x0f>;
animation-data = /bits/ 8 <0x00 0x49 0x00 0x92 0x01 0x24 0xf0
0x00 0x9f 0x80 0x90 0x04 0x8e 0xe0 0x8e 0xf0 0x8f 0x40
0xf0 0x00 0x9f 0x81 0x90 0x05 0x8e 0x80 0x8e 0x90 0x8e
0xe0 0xf0 0x00 0x9f 0x82 0x90 0x06 0x8e 0x20 0x8e 0x30
0x8e 0x80 0x94 0x00 0x98 0x00 0x4c 0x00 0x92 0x01 0x8e
0x11 0xa0 0x04 0x0c 0x5a 0x04 0x96 0x23 0x0a 0x09 0x8c
0x0f 0x32 0x43 0x0a 0x0c 0x3c 0x04 0x96 0x95 0x01 0x8e
0x1b 0x8c 0x17 0xa0 0x05 0x09 0xe6 0x44 0x14 0x43 0x1e
0xc0 0x00>;
chan0 {
led-cur = /bits/ 8 <47>;
max-cur = /bits/ 8 <200>;
};
chan1 {
led-cur = /bits/ 8 <47>;
max-cur = /bits/ 8 <200>;
};
chan2 {
led-cur = /bits/ 8 <47>;
max-cur = /bits/ 8 <200>;
};
chan3 {
led-cur = /bits/ 8 <53>;
max-cur = /bits/ 8 <200>;
};
chan4 {
led-cur = /bits/ 8 <53>;
max-cur = /bits/ 8 <200>;
};
chan5 {
led-cur = /bits/ 8 <53>;
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 {
hog {
kpb_hogs: kpb-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_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 */
>;
};
};
i2c2 {
pinctrl_i2c2_2: i2c2grp-2 {
fsl,pins = <
MX6SX_PAD_QSPI1B_DATA2__I2C2_SDA 0x4001f899
MX6SX_PAD_QSPI1B_DATA3__I2C2_SCL 0x4001f899
>;
};
};
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
>;
};
};
};
/* 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";
};