446 lines
8.8 KiB
Plaintext
446 lines
8.8 KiB
Plaintext
/*
|
|
* Google Peach Pi Rev 10+ board device tree source
|
|
*
|
|
* Copyright (c) 2014 Google, Inc
|
|
*
|
|
* 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 <dt-bindings/input/input.h>
|
|
#include <dt-bindings/gpio/gpio.h>
|
|
#include "exynos5800.dtsi"
|
|
|
|
/ {
|
|
model = "Google Peach Pi Rev 10+";
|
|
|
|
compatible = "google,pi-rev16",
|
|
"google,pi-rev15", "google,pi-rev14",
|
|
"google,pi-rev13", "google,pi-rev12",
|
|
"google,pi-rev11", "google,pi-rev10",
|
|
"google,pi", "google,peach", "samsung,exynos5800",
|
|
"samsung,exynos5";
|
|
|
|
aliases {
|
|
/* Assign 20 so we don't get confused w/ builtin ones */
|
|
i2c20 = "/spi@12d40000/cros-ec@0/i2c-tunnel";
|
|
};
|
|
|
|
backlight {
|
|
compatible = "pwm-backlight";
|
|
pwms = <&pwm 0 1000000 0>;
|
|
brightness-levels = <0 100 500 1000 1500 2000 2500 2800>;
|
|
default-brightness-level = <7>;
|
|
pinctrl-0 = <&pwm0_out>;
|
|
pinctrl-names = "default";
|
|
};
|
|
|
|
fixed-rate-clocks {
|
|
oscclk {
|
|
compatible = "samsung,exynos5420-oscclk";
|
|
clock-frequency = <24000000>;
|
|
};
|
|
};
|
|
|
|
gpio-keys {
|
|
compatible = "gpio-keys";
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&power_key_irq>;
|
|
|
|
power {
|
|
label = "Power";
|
|
gpios = <&gpx1 2 GPIO_ACTIVE_LOW>;
|
|
linux,code = <KEY_POWER>;
|
|
gpio-key,wakeup;
|
|
};
|
|
};
|
|
|
|
memory {
|
|
reg = <0x20000000 0x80000000>;
|
|
};
|
|
|
|
sound {
|
|
compatible = "google,snow-audio-max98091";
|
|
|
|
samsung,model = "Peach-Pi-I2S-MAX98091";
|
|
samsung,i2s-controller = <&i2s0>;
|
|
samsung,audio-codec = <&max98091>;
|
|
};
|
|
|
|
usb300_vbus_reg: regulator-usb300 {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "P5.0V_USB3CON0";
|
|
regulator-min-microvolt = <5000000>;
|
|
regulator-max-microvolt = <5000000>;
|
|
gpio = <&gph0 0 0>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&usb300_vbus_en>;
|
|
enable-active-high;
|
|
};
|
|
|
|
usb301_vbus_reg: regulator-usb301 {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "P5.0V_USB3CON1";
|
|
regulator-min-microvolt = <5000000>;
|
|
regulator-max-microvolt = <5000000>;
|
|
gpio = <&gph0 1 0>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&usb301_vbus_en>;
|
|
enable-active-high;
|
|
};
|
|
|
|
vbat: fixed-regulator {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "vbat-supply";
|
|
regulator-boot-on;
|
|
regulator-always-on;
|
|
};
|
|
};
|
|
|
|
&dp {
|
|
status = "okay";
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&dp_hpd_gpio>;
|
|
samsung,color-space = <0>;
|
|
samsung,dynamic-range = <0>;
|
|
samsung,ycbcr-coeff = <0>;
|
|
samsung,color-depth = <1>;
|
|
samsung,link-rate = <0x0a>;
|
|
samsung,lane-count = <2>;
|
|
samsung,hpd-gpio = <&gpx2 6 0>;
|
|
|
|
display-timings {
|
|
native-mode = <&timing1>;
|
|
|
|
timing1: timing@1 {
|
|
clock-frequency = <150660000>;
|
|
hactive = <1920>;
|
|
vactive = <1080>;
|
|
hfront-porch = <60>;
|
|
hback-porch = <172>;
|
|
hsync-len = <80>;
|
|
vback-porch = <25>;
|
|
vfront-porch = <10>;
|
|
vsync-len = <10>;
|
|
};
|
|
};
|
|
};
|
|
|
|
&fimd {
|
|
status = "okay";
|
|
samsung,invert-vclk;
|
|
};
|
|
|
|
&hdmi {
|
|
status = "okay";
|
|
hpd-gpio = <&gpx3 7 GPIO_ACTIVE_HIGH>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&hdmi_hpd_irq>;
|
|
ddc = <&i2c_2>;
|
|
};
|
|
|
|
&hsi2c_7 {
|
|
status = "okay";
|
|
|
|
max98091: codec@10 {
|
|
compatible = "maxim,max98091";
|
|
reg = <0x10>;
|
|
interrupts = <2 0>;
|
|
interrupt-parent = <&gpx0>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&max98091_irq>;
|
|
};
|
|
};
|
|
|
|
&hsi2c_9 {
|
|
status = "okay";
|
|
clock-frequency = <400000>;
|
|
|
|
tpm@20 {
|
|
compatible = "infineon,slb9645tt";
|
|
reg = <0x20>;
|
|
|
|
/* Unused irq; but still need to configure the pins */
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&tpm_irq>;
|
|
};
|
|
};
|
|
|
|
&i2c_2 {
|
|
status = "okay";
|
|
samsung,i2c-sda-delay = <100>;
|
|
samsung,i2c-max-bus-freq = <66000>;
|
|
samsung,i2c-slave-addr = <0x50>;
|
|
};
|
|
|
|
&i2s0 {
|
|
status = "okay";
|
|
};
|
|
|
|
&mmc_0 {
|
|
status = "okay";
|
|
num-slots = <1>;
|
|
broken-cd;
|
|
caps2-mmc-hs200-1_8v;
|
|
supports-highspeed;
|
|
non-removable;
|
|
card-detect-delay = <200>;
|
|
clock-frequency = <400000000>;
|
|
samsung,dw-mshc-ciu-div = <3>;
|
|
samsung,dw-mshc-sdr-timing = <0 4>;
|
|
samsung,dw-mshc-ddr-timing = <0 2>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
|
|
|
|
slot@0 {
|
|
reg = <0>;
|
|
bus-width = <8>;
|
|
};
|
|
};
|
|
|
|
&mmc_2 {
|
|
status = "okay";
|
|
num-slots = <1>;
|
|
supports-highspeed;
|
|
card-detect-delay = <200>;
|
|
clock-frequency = <400000000>;
|
|
samsung,dw-mshc-ciu-div = <3>;
|
|
samsung,dw-mshc-sdr-timing = <2 3>;
|
|
samsung,dw-mshc-ddr-timing = <1 2>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
|
|
|
|
slot@0 {
|
|
reg = <0>;
|
|
bus-width = <4>;
|
|
};
|
|
};
|
|
|
|
|
|
&pinctrl_0 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&mask_tpm_reset>;
|
|
|
|
max98091_irq: max98091-irq {
|
|
samsung,pins = "gpx0-2";
|
|
samsung,pin-function = <0>;
|
|
samsung,pin-pud = <0>;
|
|
samsung,pin-drv = <0>;
|
|
};
|
|
|
|
/* We need GPX0_6 to be low at sleep time; just keep it low always */
|
|
mask_tpm_reset: mask-tpm-reset {
|
|
samsung,pins = "gpx0-6";
|
|
samsung,pin-function = <1>;
|
|
samsung,pin-pud = <0>;
|
|
samsung,pin-drv = <0>;
|
|
samsung,pin-val = <0>;
|
|
};
|
|
|
|
tpm_irq: tpm-irq {
|
|
samsung,pins = "gpx1-0";
|
|
samsung,pin-function = <0>;
|
|
samsung,pin-pud = <0>;
|
|
samsung,pin-drv = <0>;
|
|
};
|
|
|
|
power_key_irq: power-key-irq {
|
|
samsung,pins = "gpx1-2";
|
|
samsung,pin-function = <0>;
|
|
samsung,pin-pud = <0>;
|
|
samsung,pin-drv = <0>;
|
|
};
|
|
|
|
ec_irq: ec-irq {
|
|
samsung,pins = "gpx1-5";
|
|
samsung,pin-function = <0>;
|
|
samsung,pin-pud = <0>;
|
|
samsung,pin-drv = <0>;
|
|
};
|
|
|
|
tps65090_irq: tps65090-irq {
|
|
samsung,pins = "gpx2-5";
|
|
samsung,pin-function = <0>;
|
|
samsung,pin-pud = <0>;
|
|
samsung,pin-drv = <0>;
|
|
};
|
|
|
|
dp_hpd_gpio: dp_hpd_gpio {
|
|
samsung,pins = "gpx2-6";
|
|
samsung,pin-function = <0>;
|
|
samsung,pin-pud = <3>;
|
|
samsung,pin-drv = <0>;
|
|
};
|
|
|
|
hdmi_hpd_irq: hdmi-hpd-irq {
|
|
samsung,pins = "gpx3-7";
|
|
samsung,pin-function = <0>;
|
|
samsung,pin-pud = <1>;
|
|
samsung,pin-drv = <0>;
|
|
};
|
|
};
|
|
|
|
&pinctrl_3 {
|
|
/* Drive SPI lines at x2 for better integrity */
|
|
spi2-bus {
|
|
samsung,pin-drv = <2>;
|
|
};
|
|
|
|
/* Drive SPI chip select at x2 for better integrity */
|
|
ec_spi_cs: ec-spi-cs {
|
|
samsung,pins = "gpb1-2";
|
|
samsung,pin-function = <1>;
|
|
samsung,pin-pud = <0>;
|
|
samsung,pin-drv = <2>;
|
|
};
|
|
|
|
usb300_vbus_en: usb300-vbus-en {
|
|
samsung,pins = "gph0-0";
|
|
samsung,pin-function = <1>;
|
|
samsung,pin-pud = <0>;
|
|
samsung,pin-drv = <0>;
|
|
};
|
|
|
|
usb301_vbus_en: usb301-vbus-en {
|
|
samsung,pins = "gph0-1";
|
|
samsung,pin-function = <1>;
|
|
samsung,pin-pud = <0>;
|
|
samsung,pin-drv = <0>;
|
|
};
|
|
};
|
|
|
|
&rtc {
|
|
status = "okay";
|
|
};
|
|
|
|
&spi_2 {
|
|
status = "okay";
|
|
num-cs = <1>;
|
|
samsung,spi-src-clk = <0>;
|
|
cs-gpios = <&gpb1 2 0>;
|
|
|
|
cros_ec: cros-ec@0 {
|
|
compatible = "google,cros-ec-spi";
|
|
interrupt-parent = <&gpx1>;
|
|
interrupts = <5 0>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&ec_spi_cs &ec_irq>;
|
|
reg = <0>;
|
|
spi-max-frequency = <3125000>;
|
|
|
|
controller-data {
|
|
samsung,spi-feedback-delay = <1>;
|
|
};
|
|
|
|
i2c-tunnel {
|
|
compatible = "google,cros-ec-i2c-tunnel";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
google,remote-bus = <0>;
|
|
|
|
battery: sbs-battery@b {
|
|
compatible = "sbs,sbs-battery";
|
|
reg = <0xb>;
|
|
sbs,poll-retry-count = <1>;
|
|
sbs,i2c-retry-count = <2>;
|
|
};
|
|
|
|
power-regulator@48 {
|
|
compatible = "ti,tps65090";
|
|
reg = <0x48>;
|
|
|
|
/*
|
|
* Config irq to disable internal pulls
|
|
* even though we run in polling mode.
|
|
*/
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&tps65090_irq>;
|
|
|
|
vsys1-supply = <&vbat>;
|
|
vsys2-supply = <&vbat>;
|
|
vsys3-supply = <&vbat>;
|
|
infet1-supply = <&vbat>;
|
|
infet2-supply = <&vbat>;
|
|
infet3-supply = <&vbat>;
|
|
infet4-supply = <&vbat>;
|
|
infet5-supply = <&vbat>;
|
|
infet6-supply = <&vbat>;
|
|
infet7-supply = <&vbat>;
|
|
vsys-l1-supply = <&vbat>;
|
|
vsys-l2-supply = <&vbat>;
|
|
|
|
regulators {
|
|
tps65090_dcdc1: dcdc1 {
|
|
ti,enable-ext-control;
|
|
};
|
|
tps65090_dcdc2: dcdc2 {
|
|
ti,enable-ext-control;
|
|
};
|
|
tps65090_dcdc3: dcdc3 {
|
|
ti,enable-ext-control;
|
|
};
|
|
tps65090_fet1: fet1 {
|
|
regulator-name = "vcd_led";
|
|
};
|
|
tps65090_fet2: fet2 {
|
|
regulator-name = "video_mid";
|
|
regulator-always-on;
|
|
};
|
|
tps65090_fet3: fet3 {
|
|
regulator-name = "wwan_r";
|
|
regulator-always-on;
|
|
};
|
|
tps65090_fet4: fet4 {
|
|
regulator-name = "sdcard";
|
|
regulator-always-on;
|
|
};
|
|
tps65090_fet5: fet5 {
|
|
regulator-name = "camout";
|
|
};
|
|
tps65090_fet6: fet6 {
|
|
regulator-name = "lcd_vdd";
|
|
};
|
|
tps65090_fet7: fet7 {
|
|
regulator-name = "video_mid_1a";
|
|
regulator-always-on;
|
|
};
|
|
tps65090_ldo1: ldo1 {
|
|
};
|
|
tps65090_ldo2: ldo2 {
|
|
};
|
|
};
|
|
|
|
charger {
|
|
compatible = "ti,tps65090-charger";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
&uart_3 {
|
|
status = "okay";
|
|
};
|
|
|
|
&usbdrd_phy0 {
|
|
vbus-supply = <&usb300_vbus_reg>;
|
|
};
|
|
|
|
&usbdrd_phy1 {
|
|
vbus-supply = <&usb301_vbus_reg>;
|
|
};
|
|
|
|
/*
|
|
* Use longest HW watchdog in SoC (32 seconds) since the hardware
|
|
* watchdog provides no debugging information (compared to soft/hard
|
|
* lockup detectors) and so should be last resort.
|
|
*/
|
|
&watchdog {
|
|
timeout-sec = <32>;
|
|
};
|
|
|
|
#include "cros-ec-keyboard.dtsi"
|