123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- // SPDX-License-Identifier: GPL-2.0-only
- /*
- * omap3-n950.dts - Device Tree file for Nokia N950
- *
- * Written by: Aaro Koskinen <[email protected]>
- */
- /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>;
- };
- };
- };
- };
|