0001 // SPDX-License-Identifier: GPL-2.0-only
0002 /*
0003 * omap3-n950.dts - Device Tree file for Nokia N950
0004 *
0005 * Written by: Aaro Koskinen <aaro.koskinen@iki.fi>
0006 */
0007
0008 /dts-v1/;
0009
0010 #include "omap3-n950-n9.dtsi"
0011 #include <dt-bindings/input/input.h>
0012
0013 / {
0014 model = "Nokia N950";
0015 compatible = "nokia,omap3-n950", "ti,omap3630", "ti,omap36xx", "ti,omap3";
0016
0017 keys {
0018 compatible = "gpio-keys";
0019
0020 keypad_slide {
0021 label = "Keypad Slide";
0022 gpios = <&gpio4 13 GPIO_ACTIVE_LOW>; /* 109 */
0023 linux,input-type = <EV_SW>;
0024 linux,code = <SW_KEYPAD_SLIDE>;
0025 wakeup-source;
0026 pinctrl-names = "default";
0027 pinctrl-0 = <&keypad_slide_pins>;
0028 };
0029 };
0030 };
0031
0032 &omap3_pmx_core {
0033 keypad_slide_pins: pinmux_debug_led_pins {
0034 pinctrl-single,pins = <
0035 OMAP3_CORE1_IOPAD(0x212a, PIN_INPUT | MUX_MODE4) /* cam_d10.gpio_109 */
0036 >;
0037 };
0038 };
0039
0040 &omap3_pmx_core {
0041 spi4_pins: pinmux_spi4_pins {
0042 pinctrl-single,pins = <
0043 OMAP3_CORE1_IOPAD(0x218c, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mcspi4_clk */
0044 OMAP3_CORE1_IOPAD(0x2190, PIN_OUTPUT | MUX_MODE1) /* mcspi4_simo */
0045 OMAP3_CORE1_IOPAD(0x2192, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mcspi4_somi */
0046 OMAP3_CORE1_IOPAD(0x2196, PIN_OUTPUT | MUX_MODE1) /* mcspi4_cs0 */
0047 >;
0048 };
0049 };
0050
0051 &omap3_pmx_core {
0052 dsi_pins: pinmux_dsi_pins {
0053 pinctrl-single,pins = <
0054 OMAP3_CORE1_IOPAD(0x20dc, PIN_OUTPUT | MUX_MODE1) /* dsi_dx0 - data0+ */
0055 OMAP3_CORE1_IOPAD(0x20de, PIN_OUTPUT | MUX_MODE1) /* dsi_dy0 - data0- */
0056 OMAP3_CORE1_IOPAD(0x20e0, PIN_OUTPUT | MUX_MODE1) /* dsi_dx1 - clk+ */
0057 OMAP3_CORE1_IOPAD(0x20e2, PIN_OUTPUT | MUX_MODE1) /* dsi_dy1 - clk- */
0058 OMAP3_CORE1_IOPAD(0x20e4, PIN_OUTPUT | MUX_MODE1) /* dsi_dx2 - data1+ */
0059 OMAP3_CORE1_IOPAD(0x20e6, PIN_OUTPUT | MUX_MODE1) /* dsi_dy2 - data1- */
0060 >;
0061 };
0062
0063 display_pins: pinmux_display_pins {
0064 pinctrl-single,pins = <
0065 OMAP3_CORE1_IOPAD(0x20ca, PIN_INPUT | MUX_MODE4) /* gpio 62 - display te */
0066 OMAP3_CORE1_IOPAD(0x20fe, PIN_OUTPUT | MUX_MODE4) /* gpio 87 - display reset */
0067 >;
0068 };
0069 };
0070
0071 &i2c2 {
0072 smia_1: camera@10 {
0073 compatible = "nokia,smia";
0074 reg = <0x10>;
0075 /* No reset gpio */
0076 vana-supply = <&vaux3>;
0077 clocks = <&isp 0>;
0078 clock-frequency = <9600000>;
0079 flash-leds = <&as3645a_flash &as3645a_indicator>;
0080 port {
0081 smia_1_1: endpoint {
0082 link-frequencies = /bits/ 64 <210000000 333600000 398400000>;
0083 clock-lanes = <0>;
0084 data-lanes = <1 2>;
0085 remote-endpoint = <&csi2a_ep>;
0086 };
0087 };
0088 };
0089 };
0090
0091 &isp {
0092 vdd-csiphy1-supply = <&vaux2>;
0093 vdd-csiphy2-supply = <&vaux2>;
0094 ports {
0095 port@2 {
0096 reg = <2>;
0097 csi2a_ep: endpoint {
0098 remote-endpoint = <&smia_1_1>;
0099 clock-lanes = <2>;
0100 data-lanes = <3 1>;
0101 crc = <1>;
0102 lane-polarities = <1 1 1>;
0103 };
0104 };
0105 };
0106 };
0107
0108 &mcspi4 {
0109 status = "okay";
0110 pinctrl-names = "default";
0111 pinctrl-0 = <&spi4_pins>;
0112
0113 wlcore: wlcore@0 {
0114 compatible = "ti,wl1271";
0115 pinctrl-names = "default";
0116 pinctrl-0 = <&wlan_pins>;
0117 reg = <0>;
0118 spi-max-frequency = <48000000>;
0119 clock-xtal;
0120 ref-clock-frequency = <38400000>;
0121 interrupts-extended = <&gpio2 10 IRQ_TYPE_LEVEL_HIGH>; /* gpio 42 */
0122 vwlan-supply = <&vwlan_fixed>;
0123 };
0124 };
0125
0126 &modem {
0127 compatible = "nokia,n950-modem";
0128 };
0129
0130 &twl {
0131 twl_audio: audio {
0132 compatible = "ti,twl4030-audio";
0133 ti,enable-vibra = <1>;
0134 };
0135 };
0136
0137 &twl_keypad {
0138 linux,keymap = < MATRIX_KEY(0x00, 0x00, KEY_BACKSLASH)
0139 MATRIX_KEY(0x01, 0x00, KEY_LEFTSHIFT)
0140 MATRIX_KEY(0x02, 0x00, KEY_COMPOSE)
0141 MATRIX_KEY(0x03, 0x00, KEY_LEFTMETA)
0142 MATRIX_KEY(0x04, 0x00, KEY_RIGHTCTRL)
0143 MATRIX_KEY(0x05, 0x00, KEY_BACKSPACE)
0144 MATRIX_KEY(0x06, 0x00, KEY_VOLUMEDOWN)
0145 MATRIX_KEY(0x07, 0x00, KEY_VOLUMEUP)
0146
0147 MATRIX_KEY(0x03, 0x01, KEY_Z)
0148 MATRIX_KEY(0x04, 0x01, KEY_A)
0149 MATRIX_KEY(0x05, 0x01, KEY_Q)
0150 MATRIX_KEY(0x06, 0x01, KEY_W)
0151 MATRIX_KEY(0x07, 0x01, KEY_E)
0152
0153 MATRIX_KEY(0x03, 0x02, KEY_X)
0154 MATRIX_KEY(0x04, 0x02, KEY_S)
0155 MATRIX_KEY(0x05, 0x02, KEY_D)
0156 MATRIX_KEY(0x06, 0x02, KEY_C)
0157 MATRIX_KEY(0x07, 0x02, KEY_V)
0158
0159 MATRIX_KEY(0x03, 0x03, KEY_O)
0160 MATRIX_KEY(0x04, 0x03, KEY_I)
0161 MATRIX_KEY(0x05, 0x03, KEY_U)
0162 MATRIX_KEY(0x06, 0x03, KEY_L)
0163 MATRIX_KEY(0x07, 0x03, KEY_APOSTROPHE)
0164
0165 MATRIX_KEY(0x03, 0x04, KEY_Y)
0166 MATRIX_KEY(0x04, 0x04, KEY_K)
0167 MATRIX_KEY(0x05, 0x04, KEY_J)
0168 MATRIX_KEY(0x06, 0x04, KEY_H)
0169 MATRIX_KEY(0x07, 0x04, KEY_G)
0170
0171 MATRIX_KEY(0x03, 0x05, KEY_B)
0172 MATRIX_KEY(0x04, 0x05, KEY_COMMA)
0173 MATRIX_KEY(0x05, 0x05, KEY_M)
0174 MATRIX_KEY(0x06, 0x05, KEY_N)
0175 MATRIX_KEY(0x07, 0x05, KEY_DOT)
0176
0177 MATRIX_KEY(0x00, 0x06, KEY_SPACE)
0178 MATRIX_KEY(0x03, 0x06, KEY_T)
0179 MATRIX_KEY(0x04, 0x06, KEY_UP)
0180 MATRIX_KEY(0x05, 0x06, KEY_LEFT)
0181 MATRIX_KEY(0x06, 0x06, KEY_RIGHT)
0182 MATRIX_KEY(0x07, 0x06, KEY_DOWN)
0183
0184 MATRIX_KEY(0x03, 0x07, KEY_P)
0185 MATRIX_KEY(0x04, 0x07, KEY_ENTER)
0186 MATRIX_KEY(0x05, 0x07, KEY_SLASH)
0187 MATRIX_KEY(0x06, 0x07, KEY_F)
0188 MATRIX_KEY(0x07, 0x07, KEY_R)
0189 >;
0190 };
0191
0192 &lis302 {
0193 st,axis-x = <(-2)>; /* LIS3_INV_DEV_Y */
0194 st,axis-y = <(-1)>; /* LIS3_INV_DEV_X */
0195 st,axis-z = <(-3)>; /* LIS3_INV_DEV_Z */
0196
0197 st,min-limit-x = <(-32)>;
0198 st,min-limit-y = <3>;
0199 st,min-limit-z = <3>;
0200
0201 st,max-limit-x = <(-3)>;
0202 st,max-limit-y = <32>;
0203 st,max-limit-z = <32>;
0204 };
0205
0206 &dss {
0207 status = "okay";
0208
0209 vdda_video-supply = <&vdac>;
0210 };
0211
0212 &dsi {
0213 status = "okay";
0214
0215 pinctrl-names = "default";
0216 pinctrl-0 = <&dsi_pins>;
0217
0218 vdd-supply = <&vpll2>;
0219
0220 port {
0221 dsi_out_ep: endpoint {
0222 remote-endpoint = <&lcd0_in>;
0223 lanes = <2 3 0 1 4 5>;
0224 };
0225 };
0226
0227 lcd0: panel@0 {
0228 compatible = "nokia,himalaya", "panel-dsi-cm";
0229 reg = <0>;
0230 label = "lcd0";
0231
0232 pinctrl-names = "default";
0233 pinctrl-0 = <&display_pins>;
0234
0235 vpnl-supply = <&vmmc2>;
0236 vddi-supply = <&vio>;
0237
0238 reset-gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>; /* 87 */
0239 te-gpios = <&gpio2 30 GPIO_ACTIVE_HIGH>; /* 62 */
0240
0241 width-mm = <49>; /* 48.960 mm */
0242 height-mm = <88>; /* 88.128 mm */
0243
0244 /* TODO:
0245 * - panel is upside-down
0246 * - top + bottom 5px are not visible
0247 */
0248 panel-timing {
0249 clock-frequency = <0>; /* Calculated by dsi */
0250
0251 hback-porch = <2>;
0252 hactive = <480>;
0253 hfront-porch = <0>;
0254 hsync-len = <2>;
0255
0256 vback-porch = <1>;
0257 vactive = <864>;
0258 vfront-porch = <0>;
0259 vsync-len = <1>;
0260
0261 hsync-active = <0>;
0262 vsync-active = <0>;
0263 de-active = <1>;
0264 pixelclk-active = <1>;
0265 };
0266
0267 port {
0268 lcd0_in: endpoint {
0269 remote-endpoint = <&dsi_out_ep>;
0270 };
0271 };
0272 };
0273 };