162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * omap3-n950.dts - Device Tree file for Nokia N950 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Written by: Aaro Koskinen <aaro.koskinen@iki.fi> 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci/dts-v1/; 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#include "omap3-n950-n9.dtsi" 1162306a36Sopenharmony_ci#include <dt-bindings/input/input.h> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci/ { 1462306a36Sopenharmony_ci model = "Nokia N950"; 1562306a36Sopenharmony_ci compatible = "nokia,omap3-n950", "ti,omap3630", "ti,omap3"; 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci keys { 1862306a36Sopenharmony_ci compatible = "gpio-keys"; 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci keypad_slide { 2162306a36Sopenharmony_ci label = "Keypad Slide"; 2262306a36Sopenharmony_ci gpios = <&gpio4 13 GPIO_ACTIVE_LOW>; /* 109 */ 2362306a36Sopenharmony_ci linux,input-type = <EV_SW>; 2462306a36Sopenharmony_ci linux,code = <SW_KEYPAD_SLIDE>; 2562306a36Sopenharmony_ci wakeup-source; 2662306a36Sopenharmony_ci pinctrl-names = "default"; 2762306a36Sopenharmony_ci pinctrl-0 = <&keypad_slide_pins>; 2862306a36Sopenharmony_ci }; 2962306a36Sopenharmony_ci }; 3062306a36Sopenharmony_ci}; 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci&omap3_pmx_core { 3362306a36Sopenharmony_ci keypad_slide_pins: debug-led-pins { 3462306a36Sopenharmony_ci pinctrl-single,pins = < 3562306a36Sopenharmony_ci OMAP3_CORE1_IOPAD(0x212a, PIN_INPUT | MUX_MODE4) /* cam_d10.gpio_109 */ 3662306a36Sopenharmony_ci >; 3762306a36Sopenharmony_ci }; 3862306a36Sopenharmony_ci}; 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci&omap3_pmx_core { 4162306a36Sopenharmony_ci spi4_pins: spi4-pins { 4262306a36Sopenharmony_ci pinctrl-single,pins = < 4362306a36Sopenharmony_ci OMAP3_CORE1_IOPAD(0x218c, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mcspi4_clk */ 4462306a36Sopenharmony_ci OMAP3_CORE1_IOPAD(0x2190, PIN_OUTPUT | MUX_MODE1) /* mcspi4_simo */ 4562306a36Sopenharmony_ci OMAP3_CORE1_IOPAD(0x2192, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mcspi4_somi */ 4662306a36Sopenharmony_ci OMAP3_CORE1_IOPAD(0x2196, PIN_OUTPUT | MUX_MODE1) /* mcspi4_cs0 */ 4762306a36Sopenharmony_ci >; 4862306a36Sopenharmony_ci }; 4962306a36Sopenharmony_ci}; 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci&omap3_pmx_core { 5262306a36Sopenharmony_ci dsi_pins: dsi-pins { 5362306a36Sopenharmony_ci pinctrl-single,pins = < 5462306a36Sopenharmony_ci OMAP3_CORE1_IOPAD(0x20dc, PIN_OUTPUT | MUX_MODE1) /* dsi_dx0 - data0+ */ 5562306a36Sopenharmony_ci OMAP3_CORE1_IOPAD(0x20de, PIN_OUTPUT | MUX_MODE1) /* dsi_dy0 - data0- */ 5662306a36Sopenharmony_ci OMAP3_CORE1_IOPAD(0x20e0, PIN_OUTPUT | MUX_MODE1) /* dsi_dx1 - clk+ */ 5762306a36Sopenharmony_ci OMAP3_CORE1_IOPAD(0x20e2, PIN_OUTPUT | MUX_MODE1) /* dsi_dy1 - clk- */ 5862306a36Sopenharmony_ci OMAP3_CORE1_IOPAD(0x20e4, PIN_OUTPUT | MUX_MODE1) /* dsi_dx2 - data1+ */ 5962306a36Sopenharmony_ci OMAP3_CORE1_IOPAD(0x20e6, PIN_OUTPUT | MUX_MODE1) /* dsi_dy2 - data1- */ 6062306a36Sopenharmony_ci >; 6162306a36Sopenharmony_ci }; 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci display_pins: display-pins { 6462306a36Sopenharmony_ci pinctrl-single,pins = < 6562306a36Sopenharmony_ci OMAP3_CORE1_IOPAD(0x20ca, PIN_INPUT | MUX_MODE4) /* gpio 62 - display te */ 6662306a36Sopenharmony_ci OMAP3_CORE1_IOPAD(0x20fe, PIN_OUTPUT | MUX_MODE4) /* gpio 87 - display reset */ 6762306a36Sopenharmony_ci >; 6862306a36Sopenharmony_ci }; 6962306a36Sopenharmony_ci}; 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci&i2c2 { 7262306a36Sopenharmony_ci smia_1: camera@10 { 7362306a36Sopenharmony_ci compatible = "nokia,smia"; 7462306a36Sopenharmony_ci reg = <0x10>; 7562306a36Sopenharmony_ci /* No reset gpio */ 7662306a36Sopenharmony_ci vana-supply = <&vaux3>; 7762306a36Sopenharmony_ci clocks = <&isp 0>; 7862306a36Sopenharmony_ci clock-frequency = <9600000>; 7962306a36Sopenharmony_ci flash-leds = <&as3645a_flash &as3645a_indicator>; 8062306a36Sopenharmony_ci port { 8162306a36Sopenharmony_ci smia_1_1: endpoint { 8262306a36Sopenharmony_ci link-frequencies = /bits/ 64 <210000000 333600000 398400000>; 8362306a36Sopenharmony_ci clock-lanes = <0>; 8462306a36Sopenharmony_ci data-lanes = <1 2>; 8562306a36Sopenharmony_ci remote-endpoint = <&csi2a_ep>; 8662306a36Sopenharmony_ci }; 8762306a36Sopenharmony_ci }; 8862306a36Sopenharmony_ci }; 8962306a36Sopenharmony_ci}; 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci&isp { 9262306a36Sopenharmony_ci vdd-csiphy1-supply = <&vaux2>; 9362306a36Sopenharmony_ci vdd-csiphy2-supply = <&vaux2>; 9462306a36Sopenharmony_ci ports { 9562306a36Sopenharmony_ci port@2 { 9662306a36Sopenharmony_ci reg = <2>; 9762306a36Sopenharmony_ci csi2a_ep: endpoint { 9862306a36Sopenharmony_ci remote-endpoint = <&smia_1_1>; 9962306a36Sopenharmony_ci clock-lanes = <2>; 10062306a36Sopenharmony_ci data-lanes = <3 1>; 10162306a36Sopenharmony_ci crc = <1>; 10262306a36Sopenharmony_ci lane-polarities = <1 1 1>; 10362306a36Sopenharmony_ci }; 10462306a36Sopenharmony_ci }; 10562306a36Sopenharmony_ci }; 10662306a36Sopenharmony_ci}; 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ci&mcspi4 { 10962306a36Sopenharmony_ci status = "okay"; 11062306a36Sopenharmony_ci pinctrl-names = "default"; 11162306a36Sopenharmony_ci pinctrl-0 = <&spi4_pins>; 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ci wlcore: wlcore@0 { 11462306a36Sopenharmony_ci compatible = "ti,wl1271"; 11562306a36Sopenharmony_ci pinctrl-names = "default"; 11662306a36Sopenharmony_ci pinctrl-0 = <&wlan_pins>; 11762306a36Sopenharmony_ci reg = <0>; 11862306a36Sopenharmony_ci spi-max-frequency = <48000000>; 11962306a36Sopenharmony_ci clock-xtal; 12062306a36Sopenharmony_ci ref-clock-frequency = <38400000>; 12162306a36Sopenharmony_ci interrupts-extended = <&gpio2 10 IRQ_TYPE_LEVEL_HIGH>; /* gpio 42 */ 12262306a36Sopenharmony_ci vwlan-supply = <&vwlan_fixed>; 12362306a36Sopenharmony_ci }; 12462306a36Sopenharmony_ci}; 12562306a36Sopenharmony_ci 12662306a36Sopenharmony_ci&modem { 12762306a36Sopenharmony_ci compatible = "nokia,n950-modem"; 12862306a36Sopenharmony_ci}; 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ci&twl { 13162306a36Sopenharmony_ci twl_audio: audio { 13262306a36Sopenharmony_ci compatible = "ti,twl4030-audio"; 13362306a36Sopenharmony_ci ti,enable-vibra = <1>; 13462306a36Sopenharmony_ci }; 13562306a36Sopenharmony_ci}; 13662306a36Sopenharmony_ci 13762306a36Sopenharmony_ci&twl_keypad { 13862306a36Sopenharmony_ci linux,keymap = < MATRIX_KEY(0x00, 0x00, KEY_BACKSLASH) 13962306a36Sopenharmony_ci MATRIX_KEY(0x01, 0x00, KEY_LEFTSHIFT) 14062306a36Sopenharmony_ci MATRIX_KEY(0x02, 0x00, KEY_COMPOSE) 14162306a36Sopenharmony_ci MATRIX_KEY(0x03, 0x00, KEY_LEFTMETA) 14262306a36Sopenharmony_ci MATRIX_KEY(0x04, 0x00, KEY_RIGHTCTRL) 14362306a36Sopenharmony_ci MATRIX_KEY(0x05, 0x00, KEY_BACKSPACE) 14462306a36Sopenharmony_ci MATRIX_KEY(0x06, 0x00, KEY_VOLUMEDOWN) 14562306a36Sopenharmony_ci MATRIX_KEY(0x07, 0x00, KEY_VOLUMEUP) 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ci MATRIX_KEY(0x03, 0x01, KEY_Z) 14862306a36Sopenharmony_ci MATRIX_KEY(0x04, 0x01, KEY_A) 14962306a36Sopenharmony_ci MATRIX_KEY(0x05, 0x01, KEY_Q) 15062306a36Sopenharmony_ci MATRIX_KEY(0x06, 0x01, KEY_W) 15162306a36Sopenharmony_ci MATRIX_KEY(0x07, 0x01, KEY_E) 15262306a36Sopenharmony_ci 15362306a36Sopenharmony_ci MATRIX_KEY(0x03, 0x02, KEY_X) 15462306a36Sopenharmony_ci MATRIX_KEY(0x04, 0x02, KEY_S) 15562306a36Sopenharmony_ci MATRIX_KEY(0x05, 0x02, KEY_D) 15662306a36Sopenharmony_ci MATRIX_KEY(0x06, 0x02, KEY_C) 15762306a36Sopenharmony_ci MATRIX_KEY(0x07, 0x02, KEY_V) 15862306a36Sopenharmony_ci 15962306a36Sopenharmony_ci MATRIX_KEY(0x03, 0x03, KEY_O) 16062306a36Sopenharmony_ci MATRIX_KEY(0x04, 0x03, KEY_I) 16162306a36Sopenharmony_ci MATRIX_KEY(0x05, 0x03, KEY_U) 16262306a36Sopenharmony_ci MATRIX_KEY(0x06, 0x03, KEY_L) 16362306a36Sopenharmony_ci MATRIX_KEY(0x07, 0x03, KEY_APOSTROPHE) 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ci MATRIX_KEY(0x03, 0x04, KEY_Y) 16662306a36Sopenharmony_ci MATRIX_KEY(0x04, 0x04, KEY_K) 16762306a36Sopenharmony_ci MATRIX_KEY(0x05, 0x04, KEY_J) 16862306a36Sopenharmony_ci MATRIX_KEY(0x06, 0x04, KEY_H) 16962306a36Sopenharmony_ci MATRIX_KEY(0x07, 0x04, KEY_G) 17062306a36Sopenharmony_ci 17162306a36Sopenharmony_ci MATRIX_KEY(0x03, 0x05, KEY_B) 17262306a36Sopenharmony_ci MATRIX_KEY(0x04, 0x05, KEY_COMMA) 17362306a36Sopenharmony_ci MATRIX_KEY(0x05, 0x05, KEY_M) 17462306a36Sopenharmony_ci MATRIX_KEY(0x06, 0x05, KEY_N) 17562306a36Sopenharmony_ci MATRIX_KEY(0x07, 0x05, KEY_DOT) 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_ci MATRIX_KEY(0x00, 0x06, KEY_SPACE) 17862306a36Sopenharmony_ci MATRIX_KEY(0x03, 0x06, KEY_T) 17962306a36Sopenharmony_ci MATRIX_KEY(0x04, 0x06, KEY_UP) 18062306a36Sopenharmony_ci MATRIX_KEY(0x05, 0x06, KEY_LEFT) 18162306a36Sopenharmony_ci MATRIX_KEY(0x06, 0x06, KEY_RIGHT) 18262306a36Sopenharmony_ci MATRIX_KEY(0x07, 0x06, KEY_DOWN) 18362306a36Sopenharmony_ci 18462306a36Sopenharmony_ci MATRIX_KEY(0x03, 0x07, KEY_P) 18562306a36Sopenharmony_ci MATRIX_KEY(0x04, 0x07, KEY_ENTER) 18662306a36Sopenharmony_ci MATRIX_KEY(0x05, 0x07, KEY_SLASH) 18762306a36Sopenharmony_ci MATRIX_KEY(0x06, 0x07, KEY_F) 18862306a36Sopenharmony_ci MATRIX_KEY(0x07, 0x07, KEY_R) 18962306a36Sopenharmony_ci >; 19062306a36Sopenharmony_ci}; 19162306a36Sopenharmony_ci 19262306a36Sopenharmony_ci&lis302 { 19362306a36Sopenharmony_ci st,axis-x = <(-2)>; /* LIS3_INV_DEV_Y */ 19462306a36Sopenharmony_ci st,axis-y = <(-1)>; /* LIS3_INV_DEV_X */ 19562306a36Sopenharmony_ci st,axis-z = <(-3)>; /* LIS3_INV_DEV_Z */ 19662306a36Sopenharmony_ci 19762306a36Sopenharmony_ci st,min-limit-x = <(-32)>; 19862306a36Sopenharmony_ci st,min-limit-y = <3>; 19962306a36Sopenharmony_ci st,min-limit-z = <3>; 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_ci st,max-limit-x = <(-3)>; 20262306a36Sopenharmony_ci st,max-limit-y = <32>; 20362306a36Sopenharmony_ci st,max-limit-z = <32>; 20462306a36Sopenharmony_ci}; 20562306a36Sopenharmony_ci 20662306a36Sopenharmony_ci&dss { 20762306a36Sopenharmony_ci status = "okay"; 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_ci vdda_video-supply = <&vdac>; 21062306a36Sopenharmony_ci}; 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_ci&dsi { 21362306a36Sopenharmony_ci status = "okay"; 21462306a36Sopenharmony_ci 21562306a36Sopenharmony_ci pinctrl-names = "default"; 21662306a36Sopenharmony_ci pinctrl-0 = <&dsi_pins>; 21762306a36Sopenharmony_ci 21862306a36Sopenharmony_ci vdd-supply = <&vpll2>; 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_ci port { 22162306a36Sopenharmony_ci dsi_out_ep: endpoint { 22262306a36Sopenharmony_ci remote-endpoint = <&lcd0_in>; 22362306a36Sopenharmony_ci lanes = <2 3 0 1 4 5>; 22462306a36Sopenharmony_ci }; 22562306a36Sopenharmony_ci }; 22662306a36Sopenharmony_ci 22762306a36Sopenharmony_ci lcd0: panel@0 { 22862306a36Sopenharmony_ci compatible = "nokia,himalaya", "panel-dsi-cm"; 22962306a36Sopenharmony_ci reg = <0>; 23062306a36Sopenharmony_ci label = "lcd0"; 23162306a36Sopenharmony_ci 23262306a36Sopenharmony_ci pinctrl-names = "default"; 23362306a36Sopenharmony_ci pinctrl-0 = <&display_pins>; 23462306a36Sopenharmony_ci 23562306a36Sopenharmony_ci vpnl-supply = <&vmmc2>; 23662306a36Sopenharmony_ci vddi-supply = <&vio>; 23762306a36Sopenharmony_ci 23862306a36Sopenharmony_ci reset-gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>; /* 87 */ 23962306a36Sopenharmony_ci te-gpios = <&gpio2 30 GPIO_ACTIVE_HIGH>; /* 62 */ 24062306a36Sopenharmony_ci 24162306a36Sopenharmony_ci width-mm = <49>; /* 48.960 mm */ 24262306a36Sopenharmony_ci height-mm = <88>; /* 88.128 mm */ 24362306a36Sopenharmony_ci 24462306a36Sopenharmony_ci /* TODO: 24562306a36Sopenharmony_ci * - panel is upside-down 24662306a36Sopenharmony_ci * - top + bottom 5px are not visible 24762306a36Sopenharmony_ci */ 24862306a36Sopenharmony_ci panel-timing { 24962306a36Sopenharmony_ci clock-frequency = <0>; /* Calculated by dsi */ 25062306a36Sopenharmony_ci 25162306a36Sopenharmony_ci hback-porch = <2>; 25262306a36Sopenharmony_ci hactive = <480>; 25362306a36Sopenharmony_ci hfront-porch = <0>; 25462306a36Sopenharmony_ci hsync-len = <2>; 25562306a36Sopenharmony_ci 25662306a36Sopenharmony_ci vback-porch = <1>; 25762306a36Sopenharmony_ci vactive = <864>; 25862306a36Sopenharmony_ci vfront-porch = <0>; 25962306a36Sopenharmony_ci vsync-len = <1>; 26062306a36Sopenharmony_ci 26162306a36Sopenharmony_ci hsync-active = <0>; 26262306a36Sopenharmony_ci vsync-active = <0>; 26362306a36Sopenharmony_ci de-active = <1>; 26462306a36Sopenharmony_ci pixelclk-active = <1>; 26562306a36Sopenharmony_ci }; 26662306a36Sopenharmony_ci 26762306a36Sopenharmony_ci port { 26862306a36Sopenharmony_ci lcd0_in: endpoint { 26962306a36Sopenharmony_ci remote-endpoint = <&dsi_out_ep>; 27062306a36Sopenharmony_ci }; 27162306a36Sopenharmony_ci }; 27262306a36Sopenharmony_ci }; 27362306a36Sopenharmony_ci}; 274