/*
 * Google Spring board device tree source
 *
 * Copyright (c) 2013 Google, Inc
 * Copyright (c) 2014 SUSE LINUX Products GmbH
 *
 * SPDX-License-Identifier:	GPL-2.0
 */

/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/input/input.h>
#include "exynos5250.dtsi"

/ {
	model = "Google Spring";
	compatible = "google,spring", "samsung,exynos5250", "samsung,exynos5";

	aliases {
		i2c0 = "/i2c@12C60000";
		i2c1 = "/i2c@12C70000";
		i2c2 = "/i2c@12C80000";
		i2c3 = "/i2c@12C90000";
		i2c4 = "/i2c@12CA0000";
		i2c5 = "/i2c@12CB0000";
		i2c6 = "/i2c@12CC0000";
		i2c7 = "/i2c@12CD0000";
		i2c104 = &cros_ec_ldo_tunnel;
		spi0 = "/spi@12d20000";
		spi1 = "/spi@12d30000";
		spi2 = "/spi@12d40000";
		spi3 = "/spi@131a0000";
		spi4 = "/spi@131b0000";
		mmc0 = "/mmc@12000000";
		serial0 = "/serial@12C30000";
		console = "/serial@12C30000";
		i2s = "/sound@3830000";
	};

	memory {
		reg = <0x40000000 0x80000000>;
	};

	flash@0 {
		spl { /* spl size override */
			size = <0x8000>;
		};
	};

	chosen {
		bootargs = "console=tty1";
		stdout-path = "serial3:115200n8";
	};

	board-rev {
		compatible = "google,board-revision";
		google,board-rev-gpios = <&gpy4 0 0>, <&gpy4 1 0>,
					 <&gpy4 2 0>;
	};

	i2c@12C90000 {
		clock-frequency = <100000>;
		tpm@20 {
			reg = <0x20>;
			compatible = "infineon,slb9645tt";
		};
	};

	mmc@12200000 {
		samsung,bus-width = <8>;
		samsung,timing = <1 3 3>;
		samsung,removable = <0>;
	};

	mmc@12210000 {
		status = "disabled";
	};

	mmc@12220000 {
		/* MMC2 pins are used as GPIO for eDP bridge */
		status = "disabled";
	};

	mmc@12230000 {
		status = "disabled";
	};

	ehci@12110000 {
		samsung,vbus-gpio = <&gpx1 1 GPIO_ACTIVE_HIGH>;
		status = "okay";
	};

	xhci@12000000 {
		samsung,vbus-gpio = <&gpx2 7 GPIO_ACTIVE_HIGH>;
	};

	spi@12d30000 {
		spi-max-frequency = <50000000>;
		firmware_storage_spi: flash@0 {
			compatible = "spi-flash";
			reg = <0>;
		};
	};

	tmu@10060000 {
		samsung,min-temp	= <25>;
		samsung,max-temp	= <125>;
		samsung,start-warning	= <95>;
		samsung,start-tripping	= <105>;
		samsung,hw-tripping	= <110>;
		samsung,efuse-min-value	= <40>;
		samsung,efuse-value	= <55>;
		samsung,efuse-max-value	= <100>;
		samsung,slope		= <274761730>;
		samsung,dc-value	= <25>;
	};

	fimd@14400000 {
		samsung,vl-freq = <60>;
		samsung,vl-col = <1366>;
		samsung,vl-row = <768>;
		samsung,vl-width = <1366>;
		samsung,vl-height = <768>;

		samsung,vl-clkp;
		samsung,vl-dp;
		samsung,vl-hsp;
		samsung,vl-vsp;

		samsung,vl-bpix = <4>;

		samsung,vl-hspw = <32>;
		samsung,vl-hbpd = <80>;
		samsung,vl-hfpd = <48>;
		samsung,vl-vspw = <5>;
		samsung,vl-vbpd = <14>;
		samsung,vl-vfpd = <3>;
		samsung,vl-cmd-allow-len = <0xf>;

		samsung,winid = <0>;
		samsung,interface-mode = <1>;
		samsung,dp-enabled = <1>;
		samsung,dual-lcd-enabled = <0>;
	};

	dp@145b0000 {
		samsung,lt-status = <0>;

		samsung,master-mode = <0>;
		samsung,bist-mode = <0>;
		samsung,bist-pattern = <0>;
		samsung,h-sync-polarity = <0>;
		samsung,v-sync-polarity = <0>;
		samsung,interlaced = <0>;
		samsung,color-space = <0>;
		samsung,dynamic-range = <0>;
		samsung,ycbcr-coeff = <0>;
		samsung,color-depth = <1>;
	};
};

&i2c_0 {
	status = "okay";
	samsung,i2c-sda-delay = <100>;
	samsung,i2c-max-bus-freq = <378000>;

	s5m8767-pmic@66 {
		compatible = "samsung,s5m8767-pmic";
		reg = <0x66>;
		interrupt-parent = <&gpx3>;
		wakeup-source;

		s5m8767,pmic-buck-dvs-gpios = <&gpd1 0 GPIO_ACTIVE_LOW>, /* DVS1 */
		                              <&gpd1 1 GPIO_ACTIVE_LOW>, /* DVS2 */
		                              <&gpd1 2 GPIO_ACTIVE_LOW>; /* DVS3 */

		s5m8767,pmic-buck-ds-gpios = <&gpx2 3 GPIO_ACTIVE_LOW>, /* SET1 */
		                             <&gpx2 4 GPIO_ACTIVE_LOW>, /* SET2 */
		                             <&gpx2 5 GPIO_ACTIVE_LOW>; /* SET3 */

		/*
		 * The following arrays of DVS voltages are not used, since we are
		 * not using GPIOs to control PMIC bucks, but they must be defined
		 * to please the driver.
		 */
		s5m8767,pmic-buck2-dvs-voltage = <1350000>, <1300000>,
		                                 <1250000>, <1200000>,
		                                 <1150000>, <1100000>,
		                                 <1000000>, <950000>;

		s5m8767,pmic-buck3-dvs-voltage = <1100000>, <1100000>,
		                                 <1100000>, <1100000>,
		                                 <1000000>, <1000000>,
		                                 <1000000>, <1000000>;

		s5m8767,pmic-buck4-dvs-voltage = <1200000>, <1200000>,
		                                 <1200000>, <1200000>,
		                                 <1200000>, <1200000>,
		                                 <1200000>, <1200000>;

		clocks {
			compatible = "samsung,s5m8767-clk";
			#clock-cells = <1>;
			clock-output-names = "en32khz_ap",
			                     "en32khz_cp",
			                     "en32khz_bt";
		};

		regulators {
			ldo4_reg: LDO4 {
				regulator-name = "P1.0V_LDO_OUT4";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
				op_mode = <0>;
			};

			ldo5_reg: LDO5 {
				regulator-name = "P1.8V_LDO_OUT5";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				op_mode = <0>;
			};

			ldo6_reg: LDO6 {
				regulator-name = "vdd_mydp";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
				op_mode = <3>;
			};

			ldo7_reg: LDO7 {
				regulator-name = "P1.1V_LDO_OUT7";
				regulator-min-microvolt = <1100000>;
				regulator-max-microvolt = <1100000>;
				regulator-always-on;
				op_mode = <3>;
			};

			ldo8_reg: LDO8 {
				regulator-name = "P1.0V_LDO_OUT8";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
				op_mode = <3>;
			};

			ldo10_reg: LDO10 {
				regulator-name = "P1.8V_LDO_OUT10";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				op_mode = <3>;
			};

			ldo11_reg: LDO11 {
				regulator-name = "P1.8V_LDO_OUT11";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				op_mode = <0>;
			};

			ldo12_reg: LDO12 {
				regulator-name = "P3.0V_LDO_OUT12";
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt = <3000000>;
				regulator-always-on;
				op_mode = <3>;
			};

			ldo13_reg: LDO13 {
				regulator-name = "P1.8V_LDO_OUT13";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				op_mode = <0>;
			};

			ldo14_reg: LDO14 {
				regulator-name = "P1.8V_LDO_OUT14";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				op_mode = <3>;
			};

			ldo15_reg: LDO15 {
				regulator-name = "P1.0V_LDO_OUT15";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
				op_mode = <3>;
			};

			ldo16_reg: LDO16 {
				regulator-name = "P1.8V_LDO_OUT16";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				op_mode = <3>;
			};

			ldo17_reg: LDO17 {
				regulator-name = "P1.2V_LDO_OUT17";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
				op_mode = <0>;
			};

			ldo25_reg: LDO25 {
				regulator-name = "vdd_bridge";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
				op_mode = <1>;
			};

			buck1_reg: BUCK1 {
				regulator-name = "vdd_mif";
				regulator-min-microvolt = <950000>;
				regulator-max-microvolt = <1300000>;
				regulator-always-on;
				regulator-boot-on;
				op_mode = <3>;
			};

			buck2_reg: BUCK2 {
				regulator-name = "vdd_arm";
				regulator-min-microvolt = <850000>;
				regulator-max-microvolt = <1350000>;
				regulator-always-on;
				regulator-boot-on;
				op_mode = <3>;
			};

			buck3_reg: BUCK3 {
				regulator-name = "vdd_int";
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
				regulator-boot-on;
				op_mode = <3>;
			};

			buck4_reg: BUCK4 {
				regulator-name = "vdd_g3d";
				regulator-min-microvolt = <850000>;
				regulator-max-microvolt = <1300000>;
				regulator-boot-on;
				op_mode = <3>;
			};

			buck5_reg: BUCK5 {
				regulator-name = "P1.8V_BUCK_OUT5";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;
				op_mode = <1>;
			};

			buck6_reg: BUCK6 {
				regulator-name = "P1.2V_BUCK_OUT6";
				regulator-min-microvolt = <2050000>;
				regulator-max-microvolt = <2050000>;
				regulator-always-on;
				regulator-boot-on;
				op_mode = <0>;
			};

			buck9_reg: BUCK9 {
				regulator-name = "vdd_ummc";
				regulator-min-microvolt = <950000>;
				regulator-max-microvolt = <3000000>;
				regulator-always-on;
				regulator-boot-on;
				op_mode = <3>;
			};
		};
	};
};

&i2c_1 {
	status = "okay";
	samsung,i2c-sda-delay = <100>;
	samsung,i2c-max-bus-freq = <378000>;
};

&i2c_2 {
	status = "okay";
	samsung,i2c-sda-delay = <100>;
	samsung,i2c-max-bus-freq = <66000>;
};

&i2c_3 {
	status = "okay";
	samsung,i2c-sda-delay = <100>;
	samsung,i2c-max-bus-freq = <66000>;
};

&i2c_4 {
	status = "okay";
	samsung,i2c-sda-delay = <100>;
	samsung,i2c-max-bus-freq = <66000>;
	clock-frequency = <66000>;

	cros_ec: embedded-controller {
		compatible = "google,cros-ec-i2c";
		reg = <0x1e>;
		interrupts = <6 IRQ_TYPE_NONE>;
		interrupt-parent = <&gpx1>;
		wakeup-source;
		u-boot,i2c-offset-len = <0>;
		ec-interrupt = <&gpx1 6 GPIO_ACTIVE_LOW>;
		cros_ec_ldo_tunnel: cros-ec-ldo-tunnel {
			compatible = "google,cros-ec-ldo-tunnel";
			#address-cells = <1>;
			#size-cells = <0>;
			power-regulator {
				compatible = "ti,tps65090";
				reg = <0x48>;

				regulators {
					dcdc1 {
						ti,enable-ext-control;
					};
					dcdc2 {
						ti,enable-ext-control;
					};
					dcdc3 {
						ti,enable-ext-control;
					};
					fet1: fet1 {
						regulator-name = "vcd_led";
						ti,overcurrent-wait = <3>;
					};
					tps65090_fet2: fet2 {
						regulator-name = "video_mid";
						regulator-always-on;
						ti,overcurrent-wait = <3>;
					};
					fet3 {
						regulator-name = "wwan_r";
						regulator-always-on;
						ti,overcurrent-wait = <3>;
					};
					fet4 {
						regulator-name = "sdcard";
						ti,overcurrent-wait = <3>;
					};
					fet5 {
						regulator-name = "camout";
						regulator-always-on;
						ti,overcurrent-wait = <3>;
					};
					fet6: fet6 {
						regulator-name = "lcd_vdd";
						ti,overcurrent-wait = <3>;
					};
					tps65090_fet7: fet7 {
						regulator-name = "video_mid_1a";
						regulator-always-on;
						ti,overcurrent-wait = <3>;
					};
					ldo1 {
					};
					ldo2 {
					};
				};
			};
		};
	};
};

&i2c_5 {
	status = "okay";
	samsung,i2c-sda-delay = <100>;
	samsung,i2c-max-bus-freq = <66000>;
};

&i2c_7 {
	status = "okay";
	samsung,i2c-sda-delay = <100>;
	samsung,i2c-max-bus-freq = <66000>;

	ps8622-bridge@8 {
		compatible = "parade,ps8622";
		reg = <0x8>;
		sleep-gpios = <&gpc3 6 GPIO_ACTIVE_LOW>;
		reset-gpios = <&gpc3 1 GPIO_ACTIVE_LOW>;
		hotplug-gpios = <&gpc3 0 GPIO_ACTIVE_HIGH>;
		power-supply = <&ldo6_reg>;
		parade,regs = /bits/ 8 <
			0x02 0xa1 0x01 /* HPD low */
			/*
			 * SW setting: [1:0] SW output 1.2V voltage is
			 * lower to 96%
			 */
			0x04 0x14 0x01
			/* RCO SS setting: [5:4] = b01 0.5%, b10 1%, b11 1.5% */
			0x04 0xe3 0x20
			0x04 0xe2 0x80 /* [7] RCO SS enable */
			/*
			 * RPHY Setting: [3:2] CDR tune wait cycle before
			 * measure for fine tune b00: 1us,
			 * 01: 0.5us, 10:2us, 11:4us
			 */
			0x04 0x8a 0x0c
			0x04 0x89 0x08 /* [3] RFD always on */
			/*
			 * CTN lock in/out: 20000ppm/80000ppm. Lock out 2 times
			 */
			0x04 0x71 0x2d
			/* 2.7G CDR settings */
			0x04 0x7d 0x07 /* NOF=40LSB for HBR CDR setting */
			0x04 0x7b 0x00 /* [1:0] Fmin=+4bands */
			0x04 0x7a 0xfd /* [7:5] DCO_FTRNG=+-40% */
			/*
			 * 1.62G CDR settings:
			 * [5:2]NOF=64LSB [1:0]DCO scale is 2/5
			 */
			0x04 0xc0 0x12
			0x04 0xc1 0x92 /* Gitune=-37% */
			0x04 0xc2 0x1c /* Fbstep=100% */
			0x04 0x32 0x80 /* [7] LOS signal disable */
			/* RPIO Setting */
			/* [7:4] LVDS driver bias current 75% (250mV swing) */
			0x04 0x00 0xb0
			 /* [7:6] Right-bar GPIO output strength is 8mA */
			0x04 0x15 0x40
			/* EQ Training State Machine Setting */
			0x04 0x54 0x10 /* RCO calibration start */
			/* [4:0] MAX_LANE_COUNT set to one lane */
			0x01 0x02 0x81
			/* [4:0] LANE_COUNT_SET set to one lane */
			0x01 0x21 0x81
			0x00 0x52 0x20
			0x00 0xf1 0x03 /* HPD CP toggle enable */
			0x00 0x62 0x41
			/* Counter number add 1ms counter delay */
			0x00 0xf6 0x01
			/*
			 * [6]PWM function control by DPCD0040f[7], default
			 * is PWM block always works
			 */
			0x00 0x77 0x06
			0x00 0x4c 0x04
			/*
			 * 04h Adjust VTotal tolerance to fix the 30Hz no-
			 * display issue
			 * DPCD00400='h00 Parade OUI = 'h001cf8
			 */
			0x01 0xc0 0x00
			0x01 0xc1 0x1c /* DPCD00401='h1c */
			0x01 0xc2 0xf8 /* DPCD00402='hf8 */
			/* DPCD403~408 = ASCII code D2SLV5='h4432534c5635 */
			0x01 0xc3 0x44
			0x01 0xc4 0x32 /* DPCD404 */
			0x01 0xc5 0x53 /* DPCD405 */
			0x01 0xc6 0x4c /* DPCD406 */
			0x01 0xc7 0x56 /* DPCD407 */
			0x01 0xc8 0x35 /* DPCD408 */
			/* DPCD40A Initial Code major revision '01' */
			0x01 0xca 0x01
			/* DPCD40B Initial Code minor revision '05' */
			0x01 0xcb 0x05
			0x01 0xa5 0xa0 /* DPCD720, Select internal PWM */
			/*
			 * 0xff for 100% PWM of brightness, 0h for 0% brightness
			 */
			0x01 0xa7 0x00
			/*
			 * Set LVDS output as 6bit-VESA mapping, single LVDS
			 * channel
			 */
			0x01 0xcc 0x13
			0x02 0xb1 0x20 /* Enable SSC set by register */
			/* Set SSC enabled and +/-1% central spreading */
			0x04 0x10 0x16
			0x04 0x59 0x60 /* MPU Clock source: LC => RCO */
			0x04 0x54 0x14 /* LC -> RCO */
			0x02 0xa1 0x91>; /* HPD high */
	};

	soundcodec@20 {
		reg = <0x20>;
		compatible = "maxim,max98088-codec";
	};
};

#include "cros-ec-keyboard.dtsi"
