mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-29 22:14:41 +08:00
252130d8d6
Add basic panel support for the Nokia N950. It must be tweaked a little bit later, since the panel was built into the device upside-down. Also the first 5 and the last 5 pixels are covered by plastic. Signed-off-By: Sebastian Reichel <sebastian.reichel@collabora.co.uk> Acked-by: Pavel Machek <pavel@ucw.cz> Signed-off-by: Tony Lindgren <tony@atomide.com>
277 lines
6.3 KiB
Plaintext
277 lines
6.3 KiB
Plaintext
/*
|
|
* omap3-n950.dts - Device Tree file for Nokia N950
|
|
*
|
|
* Written by: Aaro Koskinen <aaro.koskinen@iki.fi>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
/dts-v1/;
|
|
|
|
#include "omap3-n950-n9.dtsi"
|
|
#include <dt-bindings/input/input.h>
|
|
|
|
/ {
|
|
model = "Nokia N950";
|
|
compatible = "nokia,omap3-n950", "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>;
|
|
nokia,nvm-size = <(16 * 64)>;
|
|
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 = "ok";
|
|
|
|
vdda_video-supply = <&vdac>;
|
|
};
|
|
|
|
&dsi {
|
|
status = "ok";
|
|
|
|
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: display {
|
|
compatible = "nokia,himalaya", "panel-dsi-cm";
|
|
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>;
|
|
};
|
|
};
|
|
};
|
|
};
|