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