/dts-v1/;

#include <dt-bindings/input/input.h>
#include "tegra124.dtsi"

/ {
	model = "Acer Chromebook 13 CB5-311";
	compatible = "google,nyan-big", "nvidia,tegra124";

	aliases {
		console = &uarta;
		i2c0 = "/i2c@7000d000";
		i2c1 = "/i2c@7000c000";
		i2c2 = "/i2c@7000c400";
		i2c3 = "/i2c@7000c500";
		i2c4 = "/i2c@7000c700";
		i2c5 = "/i2c@7000d100";
		rtc0 = "/i2c@0,7000d000/pmic@40";
		rtc1 = "/rtc@0,7000e000";
		sdhci0 = "/sdhci@700b0600";
		sdhci1 = "/sdhci@700b0400";
		spi0 = "/spi@7000d400";
		spi1 = "/spi@7000da00";
		usb0 = "/usb@7d000000";
		usb1 = "/usb@7d008000";
	};

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

	serial@70006000 {
		/* Debug connector on the bottom of the board near SD card. */
		status = "okay";
	};

	pwm@7000a000 {
		status = "okay";
	};

	i2c@7000c000 {
		status = "okay";
		clock-frequency = <100000>;

		acodec: audio-codec@10 {
			compatible = "maxim,max98090";
			reg = <0x10>;
			interrupt-parent = <&gpio>;
			interrupts = <TEGRA_GPIO(H, 4) GPIO_ACTIVE_HIGH>;
		};

		temperature-sensor@4c {
			compatible = "ti,tmp451";
			reg = <0x4c>;
			interrupt-parent = <&gpio>;
			interrupts = <TEGRA_GPIO(I, 6) IRQ_TYPE_LEVEL_LOW>;

			#thermal-sensor-cells = <1>;
		};
	};

	i2c@7000c400 {
		status = "okay";
		clock-frequency = <100000>;
	};

	i2c@7000c500 {
		status = "okay";
		clock-frequency = <400000>;

		tpm@20 {
			compatible = "infineon,slb9645tt";
			reg = <0x20>;
		};
	};

	hdmi_ddc: i2c@7000c700 {
		status = "okay";
		clock-frequency = <100000>;
	};

	i2c@7000d000 {
		status = "okay";
		clock-frequency = <400000>;

		pmic: pmic@40 {
			compatible = "ams,as3722";
			reg = <0x40>;
			interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>;

			ams,system-power-controller;

			#interrupt-cells = <2>;
			interrupt-controller;

			gpio-controller;
			#gpio-cells = <2>;

			pinctrl-names = "default";
			pinctrl-0 = <&as3722_default>;

			as3722_default: pinmux {
				gpio0 {
					pins = "gpio0";
					function = "gpio";
					bias-pull-down;
				};

				gpio1 {
					pins = "gpio1";
					function = "gpio";
					bias-pull-up;
				};

				gpio2_4_7 {
					pins = "gpio2", "gpio4", "gpio7";
					function = "gpio";
					bias-pull-up;
				};

				gpio3_6 {
					pins = "gpio3", "gpio6";
					bias-high-impedance;
				};

				gpio5 {
					pins = "gpio5";
					function = "clk32k-out";
					bias-pull-down;
				};
			};
		};
	};

	spi@7000d400 {
		status = "okay";

		cros_ec: cros-ec@0 {
			compatible = "google,cros-ec-spi";
			spi-max-frequency = <3000000>;
			interrupt-parent = <&gpio>;
			interrupts = <TEGRA_GPIO(C, 7) IRQ_TYPE_LEVEL_LOW>;
			reg = <0>;

			google,cros-ec-spi-msg-delay = <2000>;

			i2c-tunnel {
				compatible = "google,cros-ec-i2c-tunnel";
				#address-cells = <1>;
				#size-cells = <0>;

				google,remote-bus = <0>;

				charger: bq24735@9 {
					compatible = "ti,bq24735";
					reg = <0x9>;
					interrupt-parent = <&gpio>;
					interrupts = <TEGRA_GPIO(J, 0)
							GPIO_ACTIVE_HIGH>;
					ti,ac-detect-gpios = <&gpio
							TEGRA_GPIO(J, 0)
							GPIO_ACTIVE_HIGH>;
				};

				battery: sbs-battery@b {
					compatible = "sbs,sbs-battery";
					reg = <0xb>;
					sbs,i2c-retry-count = <2>;
					sbs,poll-retry-count = <10>;
					power-supplies = <&charger>;
				};
			};
		};
	};

	spi@7000da00 {
		status = "okay";
		spi-max-frequency = <25000000>;

		flash@0 {
			compatible = "winbond,w25q32dw";
			reg = <0>;
		};
	};

	pmc@7000e400 {
		nvidia,invert-interrupt;
		nvidia,suspend-mode = <0>;
		nvidia,cpu-pwr-good-time = <500>;
		nvidia,cpu-pwr-off-time = <300>;
		nvidia,core-pwr-good-time = <641 3845>;
		nvidia,core-pwr-off-time = <61036>;
		nvidia,core-power-req-active-high;
		nvidia,sys-clock-req-active-high;
	};

	hda@70030000 {
		status = "okay";
	};

	sdhci@700b0000 { /* WiFi/BT on this bus */
		status = "okay";
		power-gpios = <&gpio TEGRA_GPIO(X, 7) GPIO_ACTIVE_HIGH>;
		bus-width = <4>;
		no-1-8-v;
		non-removable;
	};

	sdhci@700b0400 { /* SD Card on this bus */
		status = "okay";
		cd-gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>;
		power-gpios = <&gpio TEGRA_GPIO(R, 0) GPIO_ACTIVE_HIGH>;
		wp-gpios = <&gpio TEGRA_GPIO(Q, 4) GPIO_ACTIVE_LOW>;
		bus-width = <4>;
		no-1-8-v;
	};

	sdhci@700b0600 { /* eMMC on this bus */
		status = "okay";
		bus-width = <8>;
		no-1-8-v;
		non-removable;
	};

	ahub@70300000 {
		i2s@70301100 {
			status = "okay";
		};
	};

	usb@7d000000 { /* Rear external USB port. */
		status = "okay";
		nvidia,vbus-gpio = <&gpio TEGRA_GPIO(N, 4) GPIO_ACTIVE_HIGH>;
	};

	usb-phy@7d000000 {
		status = "okay";
	};

	usb@7d004000 { /* Internal webcam. */
		status = "okay";
	};

	usb-phy@7d004000 {
		status = "okay";
	};

	usb@7d008000 { /* Left external USB port. */
		status = "okay";
		nvidia,vbus-gpio = <&gpio TEGRA_GPIO(N, 5) GPIO_ACTIVE_HIGH>;
	};

	usb-phy@7d008000 {
		status = "okay";
	};

	backlight: backlight {
		compatible = "pwm-backlight";

		enable-gpios = <&gpio TEGRA_GPIO(H, 2) GPIO_ACTIVE_HIGH>;
		pwms = <&pwm 1 1000000>;

		default-brightness-level = <224>;
		brightness-levels =
			<  0   1   2   3   4   5   6   7
			   8   9  10  11  12  13  14  15
			  16  17  18  19  20  21  22  23
			  24  25  26  27  28  29  30  31
			  32  33  34  35  36  37  38  39
			  40  41  42  43  44  45  46  47
			  48  49  50  51  52  53  54  55
			  56  57  58  59  60  61  62  63
			  64  65  66  67  68  69  70  71
			  72  73  74  75  76  77  78  79
			  80  81  82  83  84  85  86  87
			  88  89  90  91  92  93  94  95
			  96  97  98  99 100 101 102 103
			 104 105 106 107 108 109 110 111
			 112 113 114 115 116 117 118 119
			 120 121 122 123 124 125 126 127
			 128 129 130 131 132 133 134 135
			 136 137 138 139 140 141 142 143
			 144 145 146 147 148 149 150 151
			 152 153 154 155 156 157 158 159
			 160 161 162 163 164 165 166 167
			 168 169 170 171 172 173 174 175
			 176 177 178 179 180 181 182 183
			 184 185 186 187 188 189 190 191
			 192 193 194 195 196 197 198 199
			 200 201 202 203 204 205 206 207
			 208 209 210 211 212 213 214 215
			 216 217 218 219 220 221 222 223
			 224 225 226 227 228 229 230 231
			 232 233 234 235 236 237 238 239
			 240 241 242 243 244 245 246 247
			 248 249 250 251 252 253 254 255
			 256>;
	};

	clocks {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;

		clk32k_in: clock@0 {
			compatible = "fixed-clock";
			reg = <0>;
			#clock-cells = <0>;
			clock-frequency = <32768>;
		};
	};

	gpio@6000d000 {
		u-boot,dm-pre-reloc;
	};

	gpio-keys {
		compatible = "gpio-keys";

		lid {
			label = "Lid";
			gpios = <&gpio TEGRA_GPIO(R, 4) GPIO_ACTIVE_LOW>;
			linux,input-type = <5>;
			linux,code = <KEY_RESERVED>;
			debounce-interval = <1>;
			gpio-key,wakeup;
		};

		power {
			label = "Power";
			gpios = <&gpio TEGRA_GPIO(Q, 0) GPIO_ACTIVE_LOW>;
			linux,code = <KEY_POWER>;
			debounce-interval = <30>;
			gpio-key,wakeup;
		};
	};

	panel: panel {
		compatible = "auo,b133xtn01";

		backlight = <&backlight>;
	};

	sound {
		compatible = "nvidia,tegra-audio-max98090-nyan-big",
			     "nvidia,tegra-audio-max98090";
		nvidia,model = "Acer Chromebook 13";

		nvidia,audio-routing =
			"Headphones", "HPR",
			"Headphones", "HPL",
			"Speakers", "SPKR",
			"Speakers", "SPKL",
			"Mic Jack", "MICBIAS",
			"DMICL", "Int Mic",
			"DMICR", "Int Mic",
			"IN34", "Mic Jack";

		nvidia,i2s-controller = <&tegra_i2s1>;
		nvidia,audio-codec = <&acodec>;

		clocks = <&tegra_car TEGRA124_CLK_PLL_A>,
			 <&tegra_car TEGRA124_CLK_PLL_A_OUT0>,
			 <&tegra_car TEGRA124_CLK_EXTERN1>;
		clock-names = "pll_a", "pll_a_out0", "mclk";

		nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(I, 7) GPIO_ACTIVE_HIGH>;
	};
};

#include "cros-ec-keyboard.dtsi"
