274 lines
6.2 KiB
Plaintext
274 lines
6.2 KiB
Plaintext
|
// SPDX-License-Identifier: GPL-2.0-only
|
||
|
/*
|
||
|
* omap3-n950.dts - Device Tree file for Nokia N950
|
||
|
*
|
||
|
* Written by: Aaro Koskinen <aaro.koskinen@iki.fi>
|
||
|
*/
|
||
|
|
||
|
/dts-v1/;
|
||
|
|
||
|
#include "omap3-n950-n9.dtsi"
|
||
|
#include <dt-bindings/input/input.h>
|
||
|
|
||
|
/ {
|
||
|
model = "Nokia N950";
|
||
|
compatible = "nokia,omap3-n950", "ti,omap3630", "ti,omap36xx", "ti,omap3";
|
||
|
|
||
|
keys {
|
||
|
compatible = "gpio-keys";
|
||
|
|
||
|
keypad_slide {
|
||
|
label = "Keypad Slide";
|
||
|
gpios = <&gpio4 13 GPIO_ACTIVE_LOW>; /* 109 */
|
||
|
linux,input-type = <EV_SW>;
|
||
|
linux,code = <SW_KEYPAD_SLIDE>;
|
||
|
wakeup-source;
|
||
|
pinctrl-names = "default";
|
||
|
pinctrl-0 = <&keypad_slide_pins>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&omap3_pmx_core {
|
||
|
keypad_slide_pins: pinmux_debug_led_pins {
|
||
|
pinctrl-single,pins = <
|
||
|
OMAP3_CORE1_IOPAD(0x212a, PIN_INPUT | MUX_MODE4) /* cam_d10.gpio_109 */
|
||
|
>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&omap3_pmx_core {
|
||
|
spi4_pins: pinmux_spi4_pins {
|
||
|
pinctrl-single,pins = <
|
||
|
OMAP3_CORE1_IOPAD(0x218c, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mcspi4_clk */
|
||
|
OMAP3_CORE1_IOPAD(0x2190, PIN_OUTPUT | MUX_MODE1) /* mcspi4_simo */
|
||
|
OMAP3_CORE1_IOPAD(0x2192, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mcspi4_somi */
|
||
|
OMAP3_CORE1_IOPAD(0x2196, PIN_OUTPUT | MUX_MODE1) /* mcspi4_cs0 */
|
||
|
>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&omap3_pmx_core {
|
||
|
dsi_pins: pinmux_dsi_pins {
|
||
|
pinctrl-single,pins = <
|
||
|
OMAP3_CORE1_IOPAD(0x20dc, PIN_OUTPUT | MUX_MODE1) /* dsi_dx0 - data0+ */
|
||
|
OMAP3_CORE1_IOPAD(0x20de, PIN_OUTPUT | MUX_MODE1) /* dsi_dy0 - data0- */
|
||
|
OMAP3_CORE1_IOPAD(0x20e0, PIN_OUTPUT | MUX_MODE1) /* dsi_dx1 - clk+ */
|
||
|
OMAP3_CORE1_IOPAD(0x20e2, PIN_OUTPUT | MUX_MODE1) /* dsi_dy1 - clk- */
|
||
|
OMAP3_CORE1_IOPAD(0x20e4, PIN_OUTPUT | MUX_MODE1) /* dsi_dx2 - data1+ */
|
||
|
OMAP3_CORE1_IOPAD(0x20e6, PIN_OUTPUT | MUX_MODE1) /* dsi_dy2 - data1- */
|
||
|
>;
|
||
|
};
|
||
|
|
||
|
display_pins: pinmux_display_pins {
|
||
|
pinctrl-single,pins = <
|
||
|
OMAP3_CORE1_IOPAD(0x20ca, PIN_INPUT | MUX_MODE4) /* gpio 62 - display te */
|
||
|
OMAP3_CORE1_IOPAD(0x20fe, PIN_OUTPUT | MUX_MODE4) /* gpio 87 - display reset */
|
||
|
>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&i2c2 {
|
||
|
smia_1: camera@10 {
|
||
|
compatible = "nokia,smia";
|
||
|
reg = <0x10>;
|
||
|
/* No reset gpio */
|
||
|
vana-supply = <&vaux3>;
|
||
|
clocks = <&isp 0>;
|
||
|
clock-frequency = <9600000>;
|
||
|
flash-leds = <&as3645a_flash &as3645a_indicator>;
|
||
|
port {
|
||
|
smia_1_1: endpoint {
|
||
|
link-frequencies = /bits/ 64 <210000000 333600000 398400000>;
|
||
|
clock-lanes = <0>;
|
||
|
data-lanes = <1 2>;
|
||
|
remote-endpoint = <&csi2a_ep>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&isp {
|
||
|
vdd-csiphy1-supply = <&vaux2>;
|
||
|
vdd-csiphy2-supply = <&vaux2>;
|
||
|
ports {
|
||
|
port@2 {
|
||
|
reg = <2>;
|
||
|
csi2a_ep: endpoint {
|
||
|
remote-endpoint = <&smia_1_1>;
|
||
|
clock-lanes = <2>;
|
||
|
data-lanes = <3 1>;
|
||
|
crc = <1>;
|
||
|
lane-polarities = <1 1 1>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&mcspi4 {
|
||
|
status = "okay";
|
||
|
pinctrl-names = "default";
|
||
|
pinctrl-0 = <&spi4_pins>;
|
||
|
|
||
|
wlcore: wlcore@0 {
|
||
|
compatible = "ti,wl1271";
|
||
|
pinctrl-names = "default";
|
||
|
pinctrl-0 = <&wlan_pins>;
|
||
|
reg = <0>;
|
||
|
spi-max-frequency = <48000000>;
|
||
|
clock-xtal;
|
||
|
ref-clock-frequency = <38400000>;
|
||
|
interrupts-extended = <&gpio2 10 IRQ_TYPE_LEVEL_HIGH>; /* gpio 42 */
|
||
|
vwlan-supply = <&vwlan_fixed>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&modem {
|
||
|
compatible = "nokia,n950-modem";
|
||
|
};
|
||
|
|
||
|
&twl {
|
||
|
twl_audio: audio {
|
||
|
compatible = "ti,twl4030-audio";
|
||
|
ti,enable-vibra = <1>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&twl_keypad {
|
||
|
linux,keymap = < MATRIX_KEY(0x00, 0x00, KEY_BACKSLASH)
|
||
|
MATRIX_KEY(0x01, 0x00, KEY_LEFTSHIFT)
|
||
|
MATRIX_KEY(0x02, 0x00, KEY_COMPOSE)
|
||
|
MATRIX_KEY(0x03, 0x00, KEY_LEFTMETA)
|
||
|
MATRIX_KEY(0x04, 0x00, KEY_RIGHTCTRL)
|
||
|
MATRIX_KEY(0x05, 0x00, KEY_BACKSPACE)
|
||
|
MATRIX_KEY(0x06, 0x00, KEY_VOLUMEDOWN)
|
||
|
MATRIX_KEY(0x07, 0x00, KEY_VOLUMEUP)
|
||
|
|
||
|
MATRIX_KEY(0x03, 0x01, KEY_Z)
|
||
|
MATRIX_KEY(0x04, 0x01, KEY_A)
|
||
|
MATRIX_KEY(0x05, 0x01, KEY_Q)
|
||
|
MATRIX_KEY(0x06, 0x01, KEY_W)
|
||
|
MATRIX_KEY(0x07, 0x01, KEY_E)
|
||
|
|
||
|
MATRIX_KEY(0x03, 0x02, KEY_X)
|
||
|
MATRIX_KEY(0x04, 0x02, KEY_S)
|
||
|
MATRIX_KEY(0x05, 0x02, KEY_D)
|
||
|
MATRIX_KEY(0x06, 0x02, KEY_C)
|
||
|
MATRIX_KEY(0x07, 0x02, KEY_V)
|
||
|
|
||
|
MATRIX_KEY(0x03, 0x03, KEY_O)
|
||
|
MATRIX_KEY(0x04, 0x03, KEY_I)
|
||
|
MATRIX_KEY(0x05, 0x03, KEY_U)
|
||
|
MATRIX_KEY(0x06, 0x03, KEY_L)
|
||
|
MATRIX_KEY(0x07, 0x03, KEY_APOSTROPHE)
|
||
|
|
||
|
MATRIX_KEY(0x03, 0x04, KEY_Y)
|
||
|
MATRIX_KEY(0x04, 0x04, KEY_K)
|
||
|
MATRIX_KEY(0x05, 0x04, KEY_J)
|
||
|
MATRIX_KEY(0x06, 0x04, KEY_H)
|
||
|
MATRIX_KEY(0x07, 0x04, KEY_G)
|
||
|
|
||
|
MATRIX_KEY(0x03, 0x05, KEY_B)
|
||
|
MATRIX_KEY(0x04, 0x05, KEY_COMMA)
|
||
|
MATRIX_KEY(0x05, 0x05, KEY_M)
|
||
|
MATRIX_KEY(0x06, 0x05, KEY_N)
|
||
|
MATRIX_KEY(0x07, 0x05, KEY_DOT)
|
||
|
|
||
|
MATRIX_KEY(0x00, 0x06, KEY_SPACE)
|
||
|
MATRIX_KEY(0x03, 0x06, KEY_T)
|
||
|
MATRIX_KEY(0x04, 0x06, KEY_UP)
|
||
|
MATRIX_KEY(0x05, 0x06, KEY_LEFT)
|
||
|
MATRIX_KEY(0x06, 0x06, KEY_RIGHT)
|
||
|
MATRIX_KEY(0x07, 0x06, KEY_DOWN)
|
||
|
|
||
|
MATRIX_KEY(0x03, 0x07, KEY_P)
|
||
|
MATRIX_KEY(0x04, 0x07, KEY_ENTER)
|
||
|
MATRIX_KEY(0x05, 0x07, KEY_SLASH)
|
||
|
MATRIX_KEY(0x06, 0x07, KEY_F)
|
||
|
MATRIX_KEY(0x07, 0x07, KEY_R)
|
||
|
>;
|
||
|
};
|
||
|
|
||
|
&lis302 {
|
||
|
st,axis-x = <(-2)>; /* LIS3_INV_DEV_Y */
|
||
|
st,axis-y = <(-1)>; /* LIS3_INV_DEV_X */
|
||
|
st,axis-z = <(-3)>; /* LIS3_INV_DEV_Z */
|
||
|
|
||
|
st,min-limit-x = <(-32)>;
|
||
|
st,min-limit-y = <3>;
|
||
|
st,min-limit-z = <3>;
|
||
|
|
||
|
st,max-limit-x = <(-3)>;
|
||
|
st,max-limit-y = <32>;
|
||
|
st,max-limit-z = <32>;
|
||
|
};
|
||
|
|
||
|
&dss {
|
||
|
status = "okay";
|
||
|
|
||
|
vdda_video-supply = <&vdac>;
|
||
|
};
|
||
|
|
||
|
&dsi {
|
||
|
status = "okay";
|
||
|
|
||
|
pinctrl-names = "default";
|
||
|
pinctrl-0 = <&dsi_pins>;
|
||
|
|
||
|
vdd-supply = <&vpll2>;
|
||
|
|
||
|
port {
|
||
|
dsi_out_ep: endpoint {
|
||
|
remote-endpoint = <&lcd0_in>;
|
||
|
lanes = <2 3 0 1 4 5>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
lcd0: panel@0 {
|
||
|
compatible = "nokia,himalaya", "panel-dsi-cm";
|
||
|
reg = <0>;
|
||
|
label = "lcd0";
|
||
|
|
||
|
pinctrl-names = "default";
|
||
|
pinctrl-0 = <&display_pins>;
|
||
|
|
||
|
vpnl-supply = <&vmmc2>;
|
||
|
vddi-supply = <&vio>;
|
||
|
|
||
|
reset-gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>; /* 87 */
|
||
|
te-gpios = <&gpio2 30 GPIO_ACTIVE_HIGH>; /* 62 */
|
||
|
|
||
|
width-mm = <49>; /* 48.960 mm */
|
||
|
height-mm = <88>; /* 88.128 mm */
|
||
|
|
||
|
/* TODO:
|
||
|
* - panel is upside-down
|
||
|
* - top + bottom 5px are not visible
|
||
|
*/
|
||
|
panel-timing {
|
||
|
clock-frequency = <0>; /* Calculated by dsi */
|
||
|
|
||
|
hback-porch = <2>;
|
||
|
hactive = <480>;
|
||
|
hfront-porch = <0>;
|
||
|
hsync-len = <2>;
|
||
|
|
||
|
vback-porch = <1>;
|
||
|
vactive = <864>;
|
||
|
vfront-porch = <0>;
|
||
|
vsync-len = <1>;
|
||
|
|
||
|
hsync-active = <0>;
|
||
|
vsync-active = <0>;
|
||
|
de-active = <1>;
|
||
|
pixelclk-active = <1>;
|
||
|
};
|
||
|
|
||
|
port {
|
||
|
lcd0_in: endpoint {
|
||
|
remote-endpoint = <&dsi_out_ep>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|