1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0-only 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * omap3-n950.dts - Device Tree file for Nokia N950 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Written by: Aaro Koskinen <aaro.koskinen@iki.fi> 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun/dts-v1/; 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun#include "omap3-n950-n9.dtsi" 11*4882a593Smuzhiyun#include <dt-bindings/input/input.h> 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun/ { 14*4882a593Smuzhiyun model = "Nokia N950"; 15*4882a593Smuzhiyun compatible = "nokia,omap3-n950", "ti,omap3630", "ti,omap36xx", "ti,omap3"; 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun keys { 18*4882a593Smuzhiyun compatible = "gpio-keys"; 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun keypad_slide { 21*4882a593Smuzhiyun label = "Keypad Slide"; 22*4882a593Smuzhiyun gpios = <&gpio4 13 GPIO_ACTIVE_LOW>; /* 109 */ 23*4882a593Smuzhiyun linux,input-type = <EV_SW>; 24*4882a593Smuzhiyun linux,code = <SW_KEYPAD_SLIDE>; 25*4882a593Smuzhiyun wakeup-source; 26*4882a593Smuzhiyun pinctrl-names = "default"; 27*4882a593Smuzhiyun pinctrl-0 = <&keypad_slide_pins>; 28*4882a593Smuzhiyun }; 29*4882a593Smuzhiyun }; 30*4882a593Smuzhiyun}; 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun&omap3_pmx_core { 33*4882a593Smuzhiyun keypad_slide_pins: pinmux_debug_led_pins { 34*4882a593Smuzhiyun pinctrl-single,pins = < 35*4882a593Smuzhiyun OMAP3_CORE1_IOPAD(0x212a, PIN_INPUT | MUX_MODE4) /* cam_d10.gpio_109 */ 36*4882a593Smuzhiyun >; 37*4882a593Smuzhiyun }; 38*4882a593Smuzhiyun}; 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun&omap3_pmx_core { 41*4882a593Smuzhiyun spi4_pins: pinmux_spi4_pins { 42*4882a593Smuzhiyun pinctrl-single,pins = < 43*4882a593Smuzhiyun OMAP3_CORE1_IOPAD(0x218c, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mcspi4_clk */ 44*4882a593Smuzhiyun OMAP3_CORE1_IOPAD(0x2190, PIN_OUTPUT | MUX_MODE1) /* mcspi4_simo */ 45*4882a593Smuzhiyun OMAP3_CORE1_IOPAD(0x2192, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mcspi4_somi */ 46*4882a593Smuzhiyun OMAP3_CORE1_IOPAD(0x2196, PIN_OUTPUT | MUX_MODE1) /* mcspi4_cs0 */ 47*4882a593Smuzhiyun >; 48*4882a593Smuzhiyun }; 49*4882a593Smuzhiyun}; 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun&omap3_pmx_core { 52*4882a593Smuzhiyun dsi_pins: pinmux_dsi_pins { 53*4882a593Smuzhiyun pinctrl-single,pins = < 54*4882a593Smuzhiyun OMAP3_CORE1_IOPAD(0x20dc, PIN_OUTPUT | MUX_MODE1) /* dsi_dx0 - data0+ */ 55*4882a593Smuzhiyun OMAP3_CORE1_IOPAD(0x20de, PIN_OUTPUT | MUX_MODE1) /* dsi_dy0 - data0- */ 56*4882a593Smuzhiyun OMAP3_CORE1_IOPAD(0x20e0, PIN_OUTPUT | MUX_MODE1) /* dsi_dx1 - clk+ */ 57*4882a593Smuzhiyun OMAP3_CORE1_IOPAD(0x20e2, PIN_OUTPUT | MUX_MODE1) /* dsi_dy1 - clk- */ 58*4882a593Smuzhiyun OMAP3_CORE1_IOPAD(0x20e4, PIN_OUTPUT | MUX_MODE1) /* dsi_dx2 - data1+ */ 59*4882a593Smuzhiyun OMAP3_CORE1_IOPAD(0x20e6, PIN_OUTPUT | MUX_MODE1) /* dsi_dy2 - data1- */ 60*4882a593Smuzhiyun >; 61*4882a593Smuzhiyun }; 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun display_pins: pinmux_display_pins { 64*4882a593Smuzhiyun pinctrl-single,pins = < 65*4882a593Smuzhiyun OMAP3_CORE1_IOPAD(0x20ca, PIN_INPUT | MUX_MODE4) /* gpio 62 - display te */ 66*4882a593Smuzhiyun OMAP3_CORE1_IOPAD(0x20fe, PIN_OUTPUT | MUX_MODE4) /* gpio 87 - display reset */ 67*4882a593Smuzhiyun >; 68*4882a593Smuzhiyun }; 69*4882a593Smuzhiyun}; 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun&i2c2 { 72*4882a593Smuzhiyun smia_1: camera@10 { 73*4882a593Smuzhiyun compatible = "nokia,smia"; 74*4882a593Smuzhiyun reg = <0x10>; 75*4882a593Smuzhiyun /* No reset gpio */ 76*4882a593Smuzhiyun vana-supply = <&vaux3>; 77*4882a593Smuzhiyun clocks = <&isp 0>; 78*4882a593Smuzhiyun clock-frequency = <9600000>; 79*4882a593Smuzhiyun flash-leds = <&as3645a_flash &as3645a_indicator>; 80*4882a593Smuzhiyun port { 81*4882a593Smuzhiyun smia_1_1: endpoint { 82*4882a593Smuzhiyun link-frequencies = /bits/ 64 <210000000 333600000 398400000>; 83*4882a593Smuzhiyun clock-lanes = <0>; 84*4882a593Smuzhiyun data-lanes = <1 2>; 85*4882a593Smuzhiyun remote-endpoint = <&csi2a_ep>; 86*4882a593Smuzhiyun }; 87*4882a593Smuzhiyun }; 88*4882a593Smuzhiyun }; 89*4882a593Smuzhiyun}; 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun&isp { 92*4882a593Smuzhiyun vdd-csiphy1-supply = <&vaux2>; 93*4882a593Smuzhiyun vdd-csiphy2-supply = <&vaux2>; 94*4882a593Smuzhiyun ports { 95*4882a593Smuzhiyun port@2 { 96*4882a593Smuzhiyun reg = <2>; 97*4882a593Smuzhiyun csi2a_ep: endpoint { 98*4882a593Smuzhiyun remote-endpoint = <&smia_1_1>; 99*4882a593Smuzhiyun clock-lanes = <2>; 100*4882a593Smuzhiyun data-lanes = <3 1>; 101*4882a593Smuzhiyun crc = <1>; 102*4882a593Smuzhiyun lane-polarities = <1 1 1>; 103*4882a593Smuzhiyun }; 104*4882a593Smuzhiyun }; 105*4882a593Smuzhiyun }; 106*4882a593Smuzhiyun}; 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun&mcspi4 { 109*4882a593Smuzhiyun status = "okay"; 110*4882a593Smuzhiyun pinctrl-names = "default"; 111*4882a593Smuzhiyun pinctrl-0 = <&spi4_pins>; 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun wlcore: wlcore@0 { 114*4882a593Smuzhiyun compatible = "ti,wl1271"; 115*4882a593Smuzhiyun pinctrl-names = "default"; 116*4882a593Smuzhiyun pinctrl-0 = <&wlan_pins>; 117*4882a593Smuzhiyun reg = <0>; 118*4882a593Smuzhiyun spi-max-frequency = <48000000>; 119*4882a593Smuzhiyun clock-xtal; 120*4882a593Smuzhiyun ref-clock-frequency = <38400000>; 121*4882a593Smuzhiyun interrupts-extended = <&gpio2 10 IRQ_TYPE_LEVEL_HIGH>; /* gpio 42 */ 122*4882a593Smuzhiyun vwlan-supply = <&vwlan_fixed>; 123*4882a593Smuzhiyun }; 124*4882a593Smuzhiyun}; 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun&modem { 127*4882a593Smuzhiyun compatible = "nokia,n950-modem"; 128*4882a593Smuzhiyun}; 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun&twl { 131*4882a593Smuzhiyun twl_audio: audio { 132*4882a593Smuzhiyun compatible = "ti,twl4030-audio"; 133*4882a593Smuzhiyun ti,enable-vibra = <1>; 134*4882a593Smuzhiyun }; 135*4882a593Smuzhiyun}; 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun&twl_keypad { 138*4882a593Smuzhiyun linux,keymap = < MATRIX_KEY(0x00, 0x00, KEY_BACKSLASH) 139*4882a593Smuzhiyun MATRIX_KEY(0x01, 0x00, KEY_LEFTSHIFT) 140*4882a593Smuzhiyun MATRIX_KEY(0x02, 0x00, KEY_COMPOSE) 141*4882a593Smuzhiyun MATRIX_KEY(0x03, 0x00, KEY_LEFTMETA) 142*4882a593Smuzhiyun MATRIX_KEY(0x04, 0x00, KEY_RIGHTCTRL) 143*4882a593Smuzhiyun MATRIX_KEY(0x05, 0x00, KEY_BACKSPACE) 144*4882a593Smuzhiyun MATRIX_KEY(0x06, 0x00, KEY_VOLUMEDOWN) 145*4882a593Smuzhiyun MATRIX_KEY(0x07, 0x00, KEY_VOLUMEUP) 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun MATRIX_KEY(0x03, 0x01, KEY_Z) 148*4882a593Smuzhiyun MATRIX_KEY(0x04, 0x01, KEY_A) 149*4882a593Smuzhiyun MATRIX_KEY(0x05, 0x01, KEY_Q) 150*4882a593Smuzhiyun MATRIX_KEY(0x06, 0x01, KEY_W) 151*4882a593Smuzhiyun MATRIX_KEY(0x07, 0x01, KEY_E) 152*4882a593Smuzhiyun 153*4882a593Smuzhiyun MATRIX_KEY(0x03, 0x02, KEY_X) 154*4882a593Smuzhiyun MATRIX_KEY(0x04, 0x02, KEY_S) 155*4882a593Smuzhiyun MATRIX_KEY(0x05, 0x02, KEY_D) 156*4882a593Smuzhiyun MATRIX_KEY(0x06, 0x02, KEY_C) 157*4882a593Smuzhiyun MATRIX_KEY(0x07, 0x02, KEY_V) 158*4882a593Smuzhiyun 159*4882a593Smuzhiyun MATRIX_KEY(0x03, 0x03, KEY_O) 160*4882a593Smuzhiyun MATRIX_KEY(0x04, 0x03, KEY_I) 161*4882a593Smuzhiyun MATRIX_KEY(0x05, 0x03, KEY_U) 162*4882a593Smuzhiyun MATRIX_KEY(0x06, 0x03, KEY_L) 163*4882a593Smuzhiyun MATRIX_KEY(0x07, 0x03, KEY_APOSTROPHE) 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun MATRIX_KEY(0x03, 0x04, KEY_Y) 166*4882a593Smuzhiyun MATRIX_KEY(0x04, 0x04, KEY_K) 167*4882a593Smuzhiyun MATRIX_KEY(0x05, 0x04, KEY_J) 168*4882a593Smuzhiyun MATRIX_KEY(0x06, 0x04, KEY_H) 169*4882a593Smuzhiyun MATRIX_KEY(0x07, 0x04, KEY_G) 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun MATRIX_KEY(0x03, 0x05, KEY_B) 172*4882a593Smuzhiyun MATRIX_KEY(0x04, 0x05, KEY_COMMA) 173*4882a593Smuzhiyun MATRIX_KEY(0x05, 0x05, KEY_M) 174*4882a593Smuzhiyun MATRIX_KEY(0x06, 0x05, KEY_N) 175*4882a593Smuzhiyun MATRIX_KEY(0x07, 0x05, KEY_DOT) 176*4882a593Smuzhiyun 177*4882a593Smuzhiyun MATRIX_KEY(0x00, 0x06, KEY_SPACE) 178*4882a593Smuzhiyun MATRIX_KEY(0x03, 0x06, KEY_T) 179*4882a593Smuzhiyun MATRIX_KEY(0x04, 0x06, KEY_UP) 180*4882a593Smuzhiyun MATRIX_KEY(0x05, 0x06, KEY_LEFT) 181*4882a593Smuzhiyun MATRIX_KEY(0x06, 0x06, KEY_RIGHT) 182*4882a593Smuzhiyun MATRIX_KEY(0x07, 0x06, KEY_DOWN) 183*4882a593Smuzhiyun 184*4882a593Smuzhiyun MATRIX_KEY(0x03, 0x07, KEY_P) 185*4882a593Smuzhiyun MATRIX_KEY(0x04, 0x07, KEY_ENTER) 186*4882a593Smuzhiyun MATRIX_KEY(0x05, 0x07, KEY_SLASH) 187*4882a593Smuzhiyun MATRIX_KEY(0x06, 0x07, KEY_F) 188*4882a593Smuzhiyun MATRIX_KEY(0x07, 0x07, KEY_R) 189*4882a593Smuzhiyun >; 190*4882a593Smuzhiyun}; 191*4882a593Smuzhiyun 192*4882a593Smuzhiyun&lis302 { 193*4882a593Smuzhiyun st,axis-x = <(-2)>; /* LIS3_INV_DEV_Y */ 194*4882a593Smuzhiyun st,axis-y = <(-1)>; /* LIS3_INV_DEV_X */ 195*4882a593Smuzhiyun st,axis-z = <(-3)>; /* LIS3_INV_DEV_Z */ 196*4882a593Smuzhiyun 197*4882a593Smuzhiyun st,min-limit-x = <(-32)>; 198*4882a593Smuzhiyun st,min-limit-y = <3>; 199*4882a593Smuzhiyun st,min-limit-z = <3>; 200*4882a593Smuzhiyun 201*4882a593Smuzhiyun st,max-limit-x = <(-3)>; 202*4882a593Smuzhiyun st,max-limit-y = <32>; 203*4882a593Smuzhiyun st,max-limit-z = <32>; 204*4882a593Smuzhiyun}; 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun&dss { 207*4882a593Smuzhiyun status = "okay"; 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun vdda_video-supply = <&vdac>; 210*4882a593Smuzhiyun}; 211*4882a593Smuzhiyun 212*4882a593Smuzhiyun&dsi { 213*4882a593Smuzhiyun status = "okay"; 214*4882a593Smuzhiyun 215*4882a593Smuzhiyun pinctrl-names = "default"; 216*4882a593Smuzhiyun pinctrl-0 = <&dsi_pins>; 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun vdd-supply = <&vpll2>; 219*4882a593Smuzhiyun 220*4882a593Smuzhiyun port { 221*4882a593Smuzhiyun dsi_out_ep: endpoint { 222*4882a593Smuzhiyun remote-endpoint = <&lcd0_in>; 223*4882a593Smuzhiyun lanes = <2 3 0 1 4 5>; 224*4882a593Smuzhiyun }; 225*4882a593Smuzhiyun }; 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun lcd0: panel@0 { 228*4882a593Smuzhiyun compatible = "nokia,himalaya", "panel-dsi-cm"; 229*4882a593Smuzhiyun reg = <0>; 230*4882a593Smuzhiyun label = "lcd0"; 231*4882a593Smuzhiyun 232*4882a593Smuzhiyun pinctrl-names = "default"; 233*4882a593Smuzhiyun pinctrl-0 = <&display_pins>; 234*4882a593Smuzhiyun 235*4882a593Smuzhiyun vpnl-supply = <&vmmc2>; 236*4882a593Smuzhiyun vddi-supply = <&vio>; 237*4882a593Smuzhiyun 238*4882a593Smuzhiyun reset-gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>; /* 87 */ 239*4882a593Smuzhiyun te-gpios = <&gpio2 30 GPIO_ACTIVE_HIGH>; /* 62 */ 240*4882a593Smuzhiyun 241*4882a593Smuzhiyun width-mm = <49>; /* 48.960 mm */ 242*4882a593Smuzhiyun height-mm = <88>; /* 88.128 mm */ 243*4882a593Smuzhiyun 244*4882a593Smuzhiyun /* TODO: 245*4882a593Smuzhiyun * - panel is upside-down 246*4882a593Smuzhiyun * - top + bottom 5px are not visible 247*4882a593Smuzhiyun */ 248*4882a593Smuzhiyun panel-timing { 249*4882a593Smuzhiyun clock-frequency = <0>; /* Calculated by dsi */ 250*4882a593Smuzhiyun 251*4882a593Smuzhiyun hback-porch = <2>; 252*4882a593Smuzhiyun hactive = <480>; 253*4882a593Smuzhiyun hfront-porch = <0>; 254*4882a593Smuzhiyun hsync-len = <2>; 255*4882a593Smuzhiyun 256*4882a593Smuzhiyun vback-porch = <1>; 257*4882a593Smuzhiyun vactive = <864>; 258*4882a593Smuzhiyun vfront-porch = <0>; 259*4882a593Smuzhiyun vsync-len = <1>; 260*4882a593Smuzhiyun 261*4882a593Smuzhiyun hsync-active = <0>; 262*4882a593Smuzhiyun vsync-active = <0>; 263*4882a593Smuzhiyun de-active = <1>; 264*4882a593Smuzhiyun pixelclk-active = <1>; 265*4882a593Smuzhiyun }; 266*4882a593Smuzhiyun 267*4882a593Smuzhiyun port { 268*4882a593Smuzhiyun lcd0_in: endpoint { 269*4882a593Smuzhiyun remote-endpoint = <&dsi_out_ep>; 270*4882a593Smuzhiyun }; 271*4882a593Smuzhiyun }; 272*4882a593Smuzhiyun }; 273*4882a593Smuzhiyun}; 274