| /* | 
 |  * Copyright (C) 2015 | 
 |  *   Nikolaus Schaller <hns@goldelico.com> | 
 |  * | 
 |  * Common device tree include for OpenPandora devices. | 
 |  * | 
 |  * 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. | 
 |  */ | 
 |  | 
 | #include <dt-bindings/input/input.h> | 
 |  | 
 | / { | 
 | 	cpus { | 
 | 		cpu@0 { | 
 | 			cpu0-supply = <&vcc>; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	memory@80000000 { | 
 | 		device_type = "memory"; | 
 | 		reg = <0x80000000 0x20000000>; /* 512 MB */ | 
 | 	}; | 
 |  | 
 | 	aliases { | 
 | 		display0 = &lcd; | 
 | 	}; | 
 |  | 
 | 	tv: connector { | 
 | 		compatible = "connector-analog-tv"; | 
 | 		label = "tv"; | 
 |  | 
 | 		port { | 
 | 			tv_connector_in: endpoint { | 
 | 				remote-endpoint = <&venc_out>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	gpio-leds { | 
 |  | 
 | 		compatible = "gpio-leds"; | 
 |  | 
 | 		pinctrl-names = "default"; | 
 | 		pinctrl-0 = <&led_pins>; | 
 |  | 
 | 		led1 { | 
 | 			label = "pandora::sd1"; | 
 | 			gpios = <&gpio5 0 GPIO_ACTIVE_HIGH>;	/* GPIO_128 */ | 
 | 			linux,default-trigger = "mmc0"; | 
 | 			default-state = "off"; | 
 | 		}; | 
 |  | 
 | 		led2 { | 
 | 			label = "pandora::sd2"; | 
 | 			gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;	/* GPIO_129 */ | 
 | 			linux,default-trigger = "mmc1"; | 
 | 			default-state = "off"; | 
 | 		}; | 
 |  | 
 | 		led3 { | 
 | 			label = "pandora::bluetooth"; | 
 | 			gpios = <&gpio5 30 GPIO_ACTIVE_HIGH>;	/* GPIO_158 */ | 
 | 			linux,default-trigger = "heartbeat"; | 
 | 			default-state = "off"; | 
 | 		}; | 
 |  | 
 | 		led4 { | 
 | 			label = "pandora::wifi"; | 
 | 			gpios = <&gpio5 31 GPIO_ACTIVE_HIGH>;	/* GPIO_159 */ | 
 | 			linux,default-trigger = "mmc2"; | 
 | 			default-state = "off"; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	gpio-keys { | 
 | 		compatible = "gpio-keys"; | 
 |  | 
 | 		pinctrl-names = "default"; | 
 | 		pinctrl-0 = <&button_pins>; | 
 |  | 
 | 		up-button { | 
 | 			label = "up"; | 
 | 			linux,code = <KEY_UP>; | 
 | 			gpios = <&gpio4 14 GPIO_ACTIVE_LOW>;	/* GPIO_110 */ | 
 | 			wakeup-source; | 
 | 		}; | 
 |  | 
 | 		down-button { | 
 | 			label = "down"; | 
 | 			linux,code = <KEY_DOWN>; | 
 | 			gpios = <&gpio4 7 GPIO_ACTIVE_LOW>;	/* GPIO_103 */ | 
 | 			wakeup-source; | 
 | 		}; | 
 |  | 
 | 		left-button { | 
 | 			label = "left"; | 
 | 			linux,code = <KEY_LEFT>; | 
 | 			gpios = <&gpio4 0 GPIO_ACTIVE_LOW>;	/* GPIO_96 */ | 
 | 			wakeup-source; | 
 | 		}; | 
 |  | 
 | 		right-button { | 
 | 			label = "right"; | 
 | 			linux,code = <KEY_RIGHT>; | 
 | 			gpios = <&gpio4 2 GPIO_ACTIVE_LOW>;	/* GPIO_98 */ | 
 | 			wakeup-source; | 
 | 		}; | 
 |  | 
 | 		pageup-button { | 
 | 			label = "game 1"; | 
 | 			linux,code = <KEY_PAGEUP>; | 
 | 			gpios = <&gpio4 13 GPIO_ACTIVE_LOW>;	/* GPIO_109 */ | 
 | 			wakeup-source; | 
 | 		}; | 
 |  | 
 | 		pagedown-button { | 
 | 			label = "game 3"; | 
 | 			linux,code = <KEY_PAGEDOWN>; | 
 | 			gpios = <&gpio4 10 GPIO_ACTIVE_LOW>;	/* GPIO_106 */ | 
 | 			wakeup-source; | 
 | 		}; | 
 |  | 
 | 		home-button { | 
 | 			label = "game 4"; | 
 | 			linux,code = <KEY_HOME>; | 
 | 			gpios = <&gpio4 5 GPIO_ACTIVE_LOW>;	/* GPIO_101 */ | 
 | 			wakeup-source; | 
 | 		}; | 
 |  | 
 | 		end-button { | 
 | 			label = "game 2"; | 
 | 			linux,code = <KEY_END>; | 
 | 			gpios = <&gpio4 15 GPIO_ACTIVE_LOW>;	/* GPIO_111 */ | 
 | 			wakeup-source; | 
 | 		}; | 
 |  | 
 | 		right-shift { | 
 | 			label = "l"; | 
 | 			linux,code = <KEY_RIGHTSHIFT>; | 
 | 			gpios = <&gpio4 6 GPIO_ACTIVE_LOW>;	/* GPIO_102 */ | 
 | 			wakeup-source; | 
 | 		}; | 
 |  | 
 | 		kp-plus { | 
 | 			label = "l2"; | 
 | 			linux,code = <KEY_KPPLUS>; | 
 | 			gpios = <&gpio4 1 GPIO_ACTIVE_LOW>;	/* GPIO_97 */ | 
 | 			wakeup-source; | 
 | 		}; | 
 |  | 
 | 		right-ctrl { | 
 | 			label = "r"; | 
 | 			linux,code = <KEY_RIGHTCTRL>; | 
 | 			gpios = <&gpio4 9 GPIO_ACTIVE_LOW>;	/* GPIO_105 */ | 
 | 			wakeup-source; | 
 | 		}; | 
 |  | 
 | 		kp-minus { | 
 | 			label = "r2"; | 
 | 			linux,code = <KEY_KPMINUS>; | 
 | 			gpios = <&gpio4 11 GPIO_ACTIVE_LOW>;	/* GPIO_107 */ | 
 | 			wakeup-source; | 
 | 		}; | 
 |  | 
 | 		left-ctrl { | 
 | 			label = "ctrl"; | 
 | 			linux,code = <KEY_LEFTCTRL>; | 
 | 			gpios = <&gpio4 8 GPIO_ACTIVE_LOW>;	/* GPIO_104 */ | 
 | 			wakeup-source; | 
 | 		}; | 
 |  | 
 | 		menu { | 
 | 			label = "menu"; | 
 | 			linux,code = <KEY_MENU>; | 
 | 			gpios = <&gpio4 3 GPIO_ACTIVE_LOW>;	/* GPIO_99 */ | 
 | 			wakeup-source; | 
 | 		}; | 
 |  | 
 | 		hold { | 
 | 			label = "hold"; | 
 | 			linux,code = <KEY_COFFEE>; | 
 | 			gpios = <&gpio6 16 GPIO_ACTIVE_LOW>;	/* GPIO_176 */ | 
 | 			wakeup-source; | 
 | 		}; | 
 |  | 
 | 		left-alt { | 
 | 			label = "alt"; | 
 | 			linux,code = <KEY_LEFTALT>; | 
 | 			gpios = <&gpio4 4 GPIO_ACTIVE_HIGH>;	/* GPIO_100 */ | 
 | 			wakeup-source; | 
 | 		}; | 
 |  | 
 | 		lid { | 
 | 			label = "lid"; | 
 | 			linux,code = <0x00>;    /* SW_LID lid shut */ | 
 | 			linux,input-type = <0x05>;    /* EV_SW */ | 
 | 			gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>;   /* GPIO_108 */ | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	/* HS USB Host PHY on PORT 2 */ | 
 | 	hsusb2_phy: hsusb2_phy { | 
 | 		compatible = "usb-nop-xceiv"; | 
 | 		reset-gpios = <&gpio1 16 GPIO_ACTIVE_LOW>; /* GPIO_16 */ | 
 | 		vcc-supply = <&vaux2>; | 
 | 	}; | 
 |  | 
 | 	/* HS USB Host VBUS supply | 
 | 	 * disabling this regulator causes current leakage, and LCD flicker | 
 | 	 * on earlier (CC) board revisions, so keep it always on */ | 
 | 	usb_host_5v: fixed-regulator-usb_host_5v { | 
 | 		compatible = "regulator-fixed"; | 
 | 		regulator-name = "usb_host_5v"; | 
 | 		regulator-min-microvolt = <5000000>; | 
 | 		regulator-max-microvolt = <5000000>; | 
 | 		regulator-always-on; | 
 | 		regulator-boot-on; | 
 | 		enable-active-high; | 
 | 		gpio = <&gpio6 4 GPIO_ACTIVE_HIGH>;	/* GPIO_164 */ | 
 | 	}; | 
 |  | 
 | 	/* wg7210 (wifi+bt module) 32k clock buffer */ | 
 | 	wg7210_32k: fixed-regulator-wg7210_32k { | 
 | 		compatible = "regulator-fixed"; | 
 | 		regulator-name = "wg7210_32k"; | 
 | 		regulator-min-microvolt = <1800000>; | 
 | 		regulator-max-microvolt = <1800000>; | 
 | 		regulator-always-on; | 
 | 		enable-active-high; | 
 | 		gpio = <&twl_gpio 13 GPIO_ACTIVE_HIGH>; | 
 | 	}; | 
 | }; | 
 |  | 
 | &omap3_pmx_core { | 
 |  | 
 | 	mmc1_pins: pinmux_mmc1_pins { | 
 | 		pinctrl-single,pins = < | 
 | 			OMAP3_CORE1_IOPAD(0x2144, PIN_INPUT_PULLUP | MUX_MODE0)		/* sdmmc1_clk.sdmmc1_clk */ | 
 | 			OMAP3_CORE1_IOPAD(0x2146, PIN_INPUT_PULLUP | MUX_MODE0)		/* sdmmc1_cmd.sdmmc1_cmd */ | 
 | 			OMAP3_CORE1_IOPAD(0x2148, PIN_INPUT_PULLUP | MUX_MODE0)		/* sdmmc1_dat0.sdmmc1_dat0 */ | 
 | 			OMAP3_CORE1_IOPAD(0x214a, PIN_INPUT_PULLUP | MUX_MODE0)		/* sdmmc1_dat1.sdmmc1_dat1 */ | 
 | 			OMAP3_CORE1_IOPAD(0x214c, PIN_INPUT_PULLUP | MUX_MODE0)		/* sdmmc1_dat2.sdmmc1_dat2 */ | 
 | 			OMAP3_CORE1_IOPAD(0x214e, PIN_INPUT_PULLUP | MUX_MODE0)		/* sdmmc1_dat3.sdmmc1_dat3 */ | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	mmc2_pins: pinmux_mmc2_pins { | 
 | 		pinctrl-single,pins = < | 
 | 			OMAP3_CORE1_IOPAD(0x2158, PIN_INPUT_PULLUP | MUX_MODE0)		/* sdmmc2_clk.sdmmc2_clk */ | 
 | 			OMAP3_CORE1_IOPAD(0x215a, PIN_INPUT_PULLUP | MUX_MODE0)		/* sdmmc2_cmd.sdmmc2_cmd */ | 
 | 			OMAP3_CORE1_IOPAD(0x215c, PIN_INPUT_PULLUP | MUX_MODE0)		/* sdmmc2_dat0.sdmmc2_dat0 */ | 
 | 			OMAP3_CORE1_IOPAD(0x215e, PIN_INPUT_PULLUP | MUX_MODE0)		/* sdmmc2_dat1.sdmmc2_dat1 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2160, PIN_INPUT_PULLUP | MUX_MODE0)		/* sdmmc2_dat2.sdmmc2_dat2 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2162, PIN_INPUT_PULLUP | MUX_MODE0)		/* sdmmc2_dat3.sdmmc2_dat3 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2164, PIN_OUTPUT_PULLUP | MUX_MODE1)	/* sdmmc2_dat4.sdmmc2_dirdat0 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2166, PIN_OUTPUT_PULLUP | MUX_MODE1)	/* sdmmc2_dat5.sdmmc2_dirdat1 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2168, PIN_OUTPUT_PULLUP | MUX_MODE1)	/* sdmmc2_dat6.sdmmc2_dircmd */ | 
 | 			OMAP3_CORE1_IOPAD(0x216a, PIN_INPUT_PULLUP | MUX_MODE1)		/* sdmmc2_dat7.sdmmc2_clkin */ | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	dss_dpi_pins: pinmux_dss_dpi_pins { | 
 | 		pinctrl-single,pins = < | 
 | 			OMAP3_CORE1_IOPAD(0x20d4, PIN_OUTPUT | MUX_MODE0)	/* dss_pclk.dss_pclk */ | 
 | 			OMAP3_CORE1_IOPAD(0x20d6, PIN_OUTPUT | MUX_MODE0)	/* dss_hsync.dss_hsync */ | 
 | 			OMAP3_CORE1_IOPAD(0x20d8, PIN_OUTPUT | MUX_MODE0)	/* dss_vsync.dss_vsync */ | 
 | 			OMAP3_CORE1_IOPAD(0x20da, PIN_OUTPUT | MUX_MODE0)	/* dss_acbias.dss_acbias */ | 
 | 			OMAP3_CORE1_IOPAD(0x20dc, PIN_OUTPUT | MUX_MODE0)	/* dss_data0.dss_data0 */ | 
 | 			OMAP3_CORE1_IOPAD(0x20de, PIN_OUTPUT | MUX_MODE0)	/* dss_data1.dss_data1 */ | 
 | 			OMAP3_CORE1_IOPAD(0x20e0, PIN_OUTPUT | MUX_MODE0)	/* dss_data2.dss_data2 */ | 
 | 			OMAP3_CORE1_IOPAD(0x20e2, PIN_OUTPUT | MUX_MODE0)	/* dss_data3.dss_data3 */ | 
 | 			OMAP3_CORE1_IOPAD(0x20e4, PIN_OUTPUT | MUX_MODE0)	/* dss_data4.dss_data4 */ | 
 | 			OMAP3_CORE1_IOPAD(0x20e6, PIN_OUTPUT | MUX_MODE0)	/* dss_data5.dss_data5 */ | 
 | 			OMAP3_CORE1_IOPAD(0x20e8, PIN_OUTPUT | MUX_MODE0)	/* dss_data6.dss_data6 */ | 
 | 			OMAP3_CORE1_IOPAD(0x20ea, PIN_OUTPUT | MUX_MODE0)	/* dss_data7.dss_data7 */ | 
 | 			OMAP3_CORE1_IOPAD(0x20ec, PIN_OUTPUT | MUX_MODE0)	/* dss_data8.dss_data8 */ | 
 | 			OMAP3_CORE1_IOPAD(0x20ee, PIN_OUTPUT | MUX_MODE0)	/* dss_data9.dss_data9 */ | 
 | 			OMAP3_CORE1_IOPAD(0x20f0, PIN_OUTPUT | MUX_MODE0)	/* dss_data10.dss_data10 */ | 
 | 			OMAP3_CORE1_IOPAD(0x20f2, PIN_OUTPUT | MUX_MODE0)	/* dss_data11.dss_data11 */ | 
 | 			OMAP3_CORE1_IOPAD(0x20f4, PIN_OUTPUT | MUX_MODE0)	/* dss_data12.dss_data12 */ | 
 | 			OMAP3_CORE1_IOPAD(0x20f6, PIN_OUTPUT | MUX_MODE0)	/* dss_data13.dss_data13 */ | 
 | 			OMAP3_CORE1_IOPAD(0x20f8, PIN_OUTPUT | MUX_MODE0)	/* dss_data14.dss_data14 */ | 
 | 			OMAP3_CORE1_IOPAD(0x20fa, PIN_OUTPUT | MUX_MODE0)	/* dss_data15.dss_data15 */ | 
 | 			OMAP3_CORE1_IOPAD(0x20fc, PIN_OUTPUT | MUX_MODE0)	/* dss_data16.dss_data16 */ | 
 | 			OMAP3_CORE1_IOPAD(0x20fe, PIN_OUTPUT | MUX_MODE0)	/* dss_data17.dss_data17 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2100, PIN_OUTPUT | MUX_MODE0)	/* dss_data18.dss_data18 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2102, PIN_OUTPUT | MUX_MODE0)	/* dss_data19.dss_data19 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2104, PIN_OUTPUT | MUX_MODE0)	/* dss_data20.dss_data20 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2106, PIN_OUTPUT | MUX_MODE0)	/* dss_data21.dss_data21 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2108, PIN_OUTPUT | MUX_MODE0)	/* dss_data22.dss_data22 */ | 
 | 			OMAP3_CORE1_IOPAD(0x210a, PIN_OUTPUT | MUX_MODE0)	/* dss_data23.dss_data23 */ | 
 | 			OMAP3_CORE1_IOPAD(0x218e, PIN_OUTPUT | MUX_MODE4)	/* GPIO_157 = lcd reset */ | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	uart3_pins: pinmux_uart3_pins { | 
 | 		pinctrl-single,pins = < | 
 | 			OMAP3_CORE1_IOPAD(0x219e, PIN_INPUT | PIN_OFF_WAKEUPENABLE | MUX_MODE0)	/* uart3_rx_irrx.uart3_rx_irrx */ | 
 | 			OMAP3_CORE1_IOPAD(0x21a0, PIN_OUTPUT | MUX_MODE0) /* uart3_tx_irtx.uart3_tx_irtx */ | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	led_pins: pinmux_leds_pins { | 
 | 		pinctrl-single,pins = < | 
 | 			OMAP3_CORE1_IOPAD(0x2154, PIN_OUTPUT | MUX_MODE4)	/* GPIO_128 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2156, PIN_OUTPUT | MUX_MODE4)	/* GPIO_129 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2190, PIN_OUTPUT | MUX_MODE4)	/* GPIO_158 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2192, PIN_OUTPUT | MUX_MODE4)	/* GPIO_159 */ | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	button_pins: pinmux_button_pins { | 
 | 		pinctrl-single,pins = < | 
 | 			OMAP3_CORE1_IOPAD(0x2110, PIN_INPUT | MUX_MODE4)	/* GPIO_96 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2112, PIN_INPUT | MUX_MODE4)	/* GPIO_97 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2114, PIN_INPUT | MUX_MODE4)	/* GPIO_98 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2116, PIN_INPUT | MUX_MODE4)	/* GPIO_99 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2118, PIN_INPUT | MUX_MODE4)	/* GPIO_100 */ | 
 | 			OMAP3_CORE1_IOPAD(0x211a, PIN_INPUT | MUX_MODE4)	/* GPIO_101 */ | 
 | 			OMAP3_CORE1_IOPAD(0x211c, PIN_INPUT | MUX_MODE4)	/* GPIO_102 */ | 
 | 			OMAP3_CORE1_IOPAD(0x211e, PIN_INPUT | MUX_MODE4)	/* GPIO_103 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2120, PIN_INPUT | MUX_MODE4)	/* GPIO_104 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2122, PIN_INPUT | MUX_MODE4)	/* GPIO_105 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2124, PIN_INPUT | MUX_MODE4)	/* GPIO_106 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2126, PIN_INPUT | MUX_MODE4)	/* GPIO_107 */ | 
 | 			OMAP3_CORE1_IOPAD(0x2128, PIN_INPUT | MUX_MODE4)	/* GPIO_108 */ | 
 | 			OMAP3_CORE1_IOPAD(0x212a, PIN_INPUT | MUX_MODE4)	/* GPIO_109 */ | 
 | 			OMAP3_CORE1_IOPAD(0x212c, PIN_INPUT | MUX_MODE4)	/* GPIO_110 */ | 
 | 			OMAP3_CORE1_IOPAD(0x212e, PIN_INPUT | MUX_MODE4)	/* GPIO_111 */ | 
 | 			OMAP3_CORE1_IOPAD(0x21d2, PIN_INPUT | MUX_MODE4)	/* GPIO_176 */ | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	penirq_pins: pinmux_penirq_pins { | 
 | 		pinctrl-single,pins = < | 
 | 			/* here we could enable to wakeup the cpu from suspend by a pen touch */ | 
 | 			OMAP3_CORE1_IOPAD(0x210c, PIN_INPUT | MUX_MODE4)	/* GPIO_94 */ | 
 | 		>; | 
 | 	}; | 
 |  | 
 | }; | 
 |  | 
 | &omap3_pmx_core2 { | 
 | 	/* define in CPU specific file that includes this one | 
 | 	 * use either OMAP3430_CORE2_IOPAD() or OMAP3630_CORE2_IOPAD() | 
 | 	 */ | 
 | }; | 
 |  | 
 | &i2c1 { | 
 | 	clock-frequency = <2600000>; | 
 |  | 
 | 	twl: twl@48 { | 
 | 		reg = <0x48>; | 
 | 		interrupts = <7>; /* SYS_NIRQ cascaded to intc */ | 
 | 		interrupt-parent = <&intc>; | 
 |  | 
 | 		twl_power: power { | 
 | 			compatible = "ti,twl4030-power-reset"; | 
 | 			ti,use_poweroff; | 
 | 		}; | 
 |  | 
 | 		twl_audio: audio { | 
 | 			compatible = "ti,twl4030-audio"; | 
 |  | 
 | 			codec { | 
 | 				ti,ramp_delay_value = <3>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 | }; | 
 |  | 
 | #include "twl4030.dtsi" | 
 | #include "twl4030_omap3.dtsi" | 
 |  | 
 | &twl_keypad { | 
 | 	keypad,num-rows = <8>; | 
 | 	keypad,num-columns = <6>; | 
 | 	linux,keymap = < | 
 | 		MATRIX_KEY(0, 0, KEY_9) | 
 | 		MATRIX_KEY(0, 1, KEY_8) | 
 | 		MATRIX_KEY(0, 2, KEY_I) | 
 | 		MATRIX_KEY(0, 3, KEY_J) | 
 | 		MATRIX_KEY(0, 4, KEY_N) | 
 | 		MATRIX_KEY(0, 5, KEY_M) | 
 | 		MATRIX_KEY(1, 0, KEY_0) | 
 | 		MATRIX_KEY(1, 1, KEY_7) | 
 | 		MATRIX_KEY(1, 2, KEY_U) | 
 | 		MATRIX_KEY(1, 3, KEY_H) | 
 | 		MATRIX_KEY(1, 4, KEY_B) | 
 | 		MATRIX_KEY(1, 5, KEY_SPACE) | 
 | 		MATRIX_KEY(2, 0, KEY_BACKSPACE) | 
 | 		MATRIX_KEY(2, 1, KEY_6) | 
 | 		MATRIX_KEY(2, 2, KEY_Y) | 
 | 		MATRIX_KEY(2, 3, KEY_G) | 
 | 		MATRIX_KEY(2, 4, KEY_V) | 
 | 		MATRIX_KEY(2, 5, KEY_FN) | 
 | 		MATRIX_KEY(3, 0, KEY_O) | 
 | 		MATRIX_KEY(3, 1, KEY_5) | 
 | 		MATRIX_KEY(3, 2, KEY_T) | 
 | 		MATRIX_KEY(3, 3, KEY_F) | 
 | 		MATRIX_KEY(3, 4, KEY_C) | 
 | 		MATRIX_KEY(4, 0, KEY_P) | 
 | 		MATRIX_KEY(4, 1, KEY_4) | 
 | 		MATRIX_KEY(4, 2, KEY_R) | 
 | 		MATRIX_KEY(4, 3, KEY_D) | 
 | 		MATRIX_KEY(4, 4, KEY_X) | 
 | 		MATRIX_KEY(5, 0, KEY_K) | 
 | 		MATRIX_KEY(5, 1, KEY_3) | 
 | 		MATRIX_KEY(5, 2, KEY_E) | 
 | 		MATRIX_KEY(5, 3, KEY_S) | 
 | 		MATRIX_KEY(5, 4, KEY_Z) | 
 | 		MATRIX_KEY(6, 0, KEY_L) | 
 | 		MATRIX_KEY(6, 1, KEY_2) | 
 | 		MATRIX_KEY(6, 2, KEY_W) | 
 | 		MATRIX_KEY(6, 3, KEY_A) | 
 | 		MATRIX_KEY(6, 4, KEY_RIGHTBRACE) | 
 | 		MATRIX_KEY(7, 0, KEY_ENTER) | 
 | 		MATRIX_KEY(7, 1, KEY_1) | 
 | 		MATRIX_KEY(7, 2, KEY_Q) | 
 | 		MATRIX_KEY(7, 3, KEY_LEFTSHIFT) | 
 | 		MATRIX_KEY(7, 4, KEY_LEFTBRACE ) | 
 | 	 >; | 
 | }; | 
 |  | 
 | /* backup battery charger */ | 
 | &charger { | 
 | 	ti,bb-uvolt = <3200000>; | 
 | 	ti,bb-uamp = <150>; | 
 | }; | 
 |  | 
 | /* MMC2 */ | 
 | &vmmc2 { | 
 | 	regulator-min-microvolt = <1850000>; | 
 | 	regulator-max-microvolt = <3150000>; | 
 | }; | 
 |  | 
 | /* LCD */ | 
 | &vaux1 { | 
 | 	regulator-min-microvolt = <3000000>; | 
 | 	regulator-max-microvolt = <3000000>; | 
 | }; | 
 |  | 
 | /* USB Host PHY */ | 
 | &vaux2 { | 
 | 	regulator-min-microvolt = <1800000>; | 
 | 	regulator-max-microvolt = <1800000>; | 
 | }; | 
 |  | 
 | /* available on expansion connector */ | 
 | &vaux3 { | 
 | 	regulator-min-microvolt = <2800000>; | 
 | 	regulator-max-microvolt = <2800000>; | 
 | }; | 
 |  | 
 | /* ADS7846 and nubs */ | 
 | &vaux4 { | 
 | 	regulator-min-microvolt = <2800000>; | 
 | 	regulator-max-microvolt = <2800000>; | 
 | }; | 
 |  | 
 | /* power audio DAC and LID sensor */ | 
 | &vsim { | 
 | 	regulator-min-microvolt = <2800000>; | 
 | 	regulator-max-microvolt = <2800000>; | 
 | 	regulator-always-on; | 
 | }; | 
 |  | 
 | &i2c2 { | 
 | 	clock-frequency = <100000>; | 
 | 	/* no clients so we should disable clock */ | 
 | }; | 
 |  | 
 | &i2c3 { | 
 | 	clock-frequency = <100000>; | 
 |  | 
 | 	bq27500@55 { | 
 | 		compatible = "ti,bq27500"; | 
 | 		reg = <0x55>; | 
 | 	}; | 
 |  | 
 | }; | 
 |  | 
 | &usb_otg_hs { | 
 | 	interface-type = <0>; | 
 | 	usb-phy = <&usb2_phy>; | 
 | 	phys = <&usb2_phy>; | 
 | 	phy-names = "usb2-phy"; | 
 | 	mode = <3>; | 
 | 	power = <50>; | 
 | }; | 
 |  | 
 | /* | 
 |  * Many pandora boards have been produced with defective write-protect switches | 
 |  * on either slot, so it was decided not to use this feature. If you know | 
 |  * your board has good switches, feel free to uncomment wp-gpios below. | 
 |  */ | 
 | &mmc1 { | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&mmc1_pins>; | 
 | 	vmmc-supply = <&vmmc1>; | 
 | 	bus-width = <4>; | 
 | 	cd-gpios = <&twl_gpio 0 GPIO_ACTIVE_LOW>; | 
 | 	/*wp-gpios = <&gpio4 30 GPIO_ACTIVE_HIGH>;*/	/* GPIO_126 */ | 
 | }; | 
 |  | 
 | &mmc2 { | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&mmc2_pins>; | 
 | 	vmmc-supply = <&vmmc2>; | 
 | 	bus-width = <4>; | 
 | 	cd-gpios = <&twl_gpio 1 GPIO_ACTIVE_LOW>; | 
 | 	/*wp-gpios = <&gpio4 31 GPIO_ACTIVE_HIGH>;*/	/* GPIO_127 */ | 
 | }; | 
 |  | 
 | /* mmc3 is probed using pdata-quirks to pass wl1251 card data */ | 
 | &mmc3 { | 
 | 	status = "disabled"; | 
 | }; | 
 |  | 
 | /* bluetooth*/ | 
 | &uart1 { | 
 | }; | 
 |  | 
 | /* spare (expansion connector) */ | 
 | &uart2 { | 
 | }; | 
 |  | 
 | /* console (expansion connector) */ | 
 | &uart3 { | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&uart3_pins>; | 
 | 	interrupts-extended = <&intc 74 &omap3_pmx_core OMAP3_UART3_RX>; | 
 | }; | 
 |  | 
 | &usbhshost { | 
 | 	port2-mode = "ehci-phy"; | 
 | }; | 
 |  | 
 | &usbhsehci { | 
 | 	phys = <0 &hsusb2_phy>; | 
 | }; | 
 |  | 
 | &gpmc { | 
 | 	ranges = <0 0 0x30000000 0x1000000>; /* CS0: 16MB for NAND */ | 
 |  | 
 | 	nand@0,0 { | 
 | 		compatible = "ti,omap2-nand"; | 
 | 		reg = <0 0 4>; /* CS0, offset 0, IO size 4 */ | 
 | 		interrupt-parent = <&gpmc>; | 
 | 		interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */ | 
 | 			     <1 IRQ_TYPE_NONE>;	/* termcount */ | 
 | 		nand-bus-width = <16>; | 
 | 		ti,nand-ecc-opt = "sw"; | 
 |  | 
 | 		gpmc,sync-clk-ps = <0>; | 
 | 		gpmc,cs-on-ns = <0>; | 
 | 		gpmc,cs-rd-off-ns = <44>; | 
 | 		gpmc,cs-wr-off-ns = <44>; | 
 | 		gpmc,adv-on-ns = <6>; | 
 | 		gpmc,adv-rd-off-ns = <34>; | 
 | 		gpmc,adv-wr-off-ns = <44>; | 
 | 		gpmc,we-off-ns = <40>; | 
 | 		gpmc,oe-off-ns = <54>; | 
 | 		gpmc,access-ns = <64>; | 
 | 		gpmc,rd-cycle-ns = <82>; | 
 | 		gpmc,wr-cycle-ns = <82>; | 
 | 		gpmc,wr-access-ns = <40>; | 
 | 		gpmc,wr-data-mux-bus-ns = <0>; | 
 | 		gpmc,device-width = <2>; | 
 |  | 
 | 		#address-cells = <1>; | 
 | 		#size-cells = <1>; | 
 |  | 
 | 		/* u-boot uses mtdparts=nand:512k(xloader),1920k(uboot),128k(uboot-env),10m(boot),-(rootfs) */ | 
 |  | 
 | 		x-loader@0 { | 
 | 			label = "xloader"; | 
 | 			reg = <0 0x80000>; | 
 | 		}; | 
 |  | 
 | 		bootloaders@80000 { | 
 | 			label = "uboot"; | 
 | 			reg = <0x80000 0x1e0000>; | 
 | 		}; | 
 |  | 
 | 		bootloaders_env@260000 { | 
 | 			label = "uboot-env"; | 
 | 			reg = <0x260000 0x20000>; | 
 | 		}; | 
 |  | 
 | 		kernel@280000 { | 
 | 			label = "boot"; | 
 | 			reg = <0x280000 0xa00000>; | 
 | 		}; | 
 |  | 
 | 		filesystem@c80000 { | 
 | 			label = "rootfs"; | 
 | 			reg = <0xc80000 0>;	/* 0 = MTDPART_SIZ_FULL */ | 
 | 		}; | 
 | 	}; | 
 | }; | 
 |  | 
 | &mcspi1 { | 
 | 	tsc2046@0 { | 
 | 		reg = <0>;	/* CS0 */ | 
 | 		compatible = "ti,tsc2046"; | 
 | 		spi-max-frequency = <1000000>; | 
 | 		pinctrl-names = "default"; | 
 | 		pinctrl-0 = <&penirq_pins>; | 
 | 		interrupt-parent = <&gpio3>; | 
 | 		interrupts = <30 0>;	/* GPIO_94 */ | 
 | 		pendown-gpio = <&gpio3 30 GPIO_ACTIVE_HIGH>; | 
 | 		vcc-supply = <&vaux4>; | 
 |  | 
 | 		ti,x-min = /bits/ 16 <0>; | 
 | 		ti,x-max = /bits/ 16 <8000>; | 
 | 		ti,y-min = /bits/ 16 <0>; | 
 | 		ti,y-max = /bits/ 16 <4800>; | 
 | 		ti,x-plate-ohms = /bits/ 16 <40>; | 
 | 		ti,pressure-max = /bits/ 16 <255>; | 
 |  | 
 | 		wakeup-source; | 
 | 	}; | 
 |  | 
 | 	lcd: lcd@1 { | 
 | 		reg = <1>;	/* CS1 */ | 
 | 		compatible =	"omapdss,tpo,td043mtea1"; | 
 | 		spi-max-frequency = <100000>; | 
 | 		spi-cpol; | 
 | 		spi-cpha; | 
 |  | 
 | 		label = "lcd"; | 
 | 		reset-gpios = <&gpio5 29 GPIO_ACTIVE_LOW>;	/* GPIO_157 */ | 
 | 		vcc-supply = <&vaux1>; | 
 |  | 
 | 		port { | 
 | 			lcd_in: endpoint { | 
 | 				remote-endpoint = <&dpi_out>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 |  | 
 |  | 
 | }; | 
 |  | 
 | /* n/a - used as GPIOs */ | 
 | &mcbsp1 { | 
 | }; | 
 |  | 
 | /* audio DAC */ | 
 | &mcbsp2 { | 
 | }; | 
 |  | 
 | /* bluetooth */ | 
 | &mcbsp3 { | 
 | }; | 
 |  | 
 | /* to twl4030*/ | 
 | &mcbsp4 { | 
 | }; | 
 |  | 
 | &venc { | 
 | 	status = "ok"; | 
 |  | 
 | 	vdda-supply = <&vdac>; | 
 |  | 
 | 	port { | 
 | 		venc_out: endpoint { | 
 | 			remote-endpoint = <&tv_connector_in>; | 
 | 			ti,channels = <2>; | 
 | 		}; | 
 | 	}; | 
 | }; | 
 |  | 
 | &dss { | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = < &dss_dpi_pins >; | 
 |  | 
 | 	status = "ok"; | 
 | 	vdds_dsi-supply = <&vpll2>; | 
 |  | 
 | 	port { | 
 | 		dpi_out: endpoint { | 
 | 			remote-endpoint = <&lcd_in>; | 
 | 			data-lines = <24>; | 
 | 		}; | 
 | 	}; | 
 | }; |