/*
 * Copyright 2011 ST-Ericsson AB
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

/dts-v1/;
#include "ste-dbx5x0.dtsi"

/ {
	model = "Calao Systems Snowball platform with device tree";
	compatible = "calaosystems,snowball-a9500", "st-ericsson,u9500";

	memory {
		reg = <0x00000000 0x20000000>;
	};

	en_3v3_reg: en_3v3 {
		compatible = "regulator-fixed";
		regulator-name = "en-3v3-fixed-supply";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		/* AB8500 GPIOs start from 1 - offset 25 is GPIO26. */
		gpio = <&ab8500_gpio 25 0x4>;
		startup-delay-us = <5000>;
		enable-active-high;
	};

	gpio_keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;

		button@1 {
			debounce_interval = <50>;
			wakeup = <1>;
			linux,code = <2>;
			label = "userpb";
			gpios = <&gpio1 0 0x4>;
		};
		button@2 {
			debounce_interval = <50>;
			wakeup = <1>;
			linux,code = <3>;
			label = "extkb1";
			gpios = <&gpio4 23 0x4>;
		};
		button@3 {
			debounce_interval = <50>;
			wakeup = <1>;
			linux,code = <4>;
			label = "extkb2";
			gpios = <&gpio4 24 0x4>;
		};
		button@4 {
			debounce_interval = <50>;
			wakeup = <1>;
			linux,code = <5>;
			label = "extkb3";
			gpios = <&gpio5 1 0x4>;
		};
		button@5 {
			debounce_interval = <50>;
			wakeup = <1>;
			linux,code = <6>;
			label = "extkb4";
			gpios = <&gpio5 2 0x4>;
		};
	};

	leds {
		compatible = "gpio-leds";
		used-led {
			label = "user_led";
			gpios = <&gpio4 14 0x4>;
			default-state = "on";
			linux,default-trigger = "heartbeat";
		};
	};

	soc {

		sound {
			compatible = "stericsson,snd-soc-mop500";

			stericsson,cpu-dai = <&msp1 &msp3>;
			stericsson,audio-codec = <&codec>;
		};

		msp1: msp@80124000 {
			status = "okay";
		};

		msp3: msp@80125000 {
			status = "okay";
		};

		external-bus@50000000 {
			status = "okay";

			ethernet@0 {
				compatible = "smsc,lan9115";
				reg = <0 0x10000>;
				interrupts = <12 IRQ_TYPE_EDGE_RISING>;
				interrupt-parent = <&gpio4>;
				vdd33a-supply = <&en_3v3_reg>;
				vddvario-supply = <&db8500_vape_reg>;


				reg-shift = <1>;
				reg-io-width = <2>;
				smsc,force-internal-phy;
				smsc,irq-active-high;
				smsc,irq-push-pull;
			};
		};

		vmmci: regulator-gpio {
			compatible = "regulator-gpio";

			gpios = <&gpio6 25 0x4>;
			enable-gpio = <&gpio7 4 0x4>;

			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <2900000>;
			regulator-name = "mmci-reg";
			regulator-type = "voltage";

			startup-delay-us = <100>;
			enable-active-high;

			states = <1800000 0x1
				  2900000 0x0>;
		};

		// External Micro SD slot
		sdi0_per1@80126000 {
			arm,primecell-periphid = <0x10480180>;
			max-frequency = <100000000>;
			bus-width = <4>;
			mmc-cap-mmc-highspeed;
			vmmc-supply = <&ab8500_ldo_aux3_reg>;
			vqmmc-supply = <&vmmci>;

			cd-gpios  = <&gpio6 26 0x4>; // 218
			cd-inverted;

			status = "okay";
		};

		// On-board eMMC
		sdi4_per2@80114000 {
			arm,primecell-periphid = <0x10480180>;
		        max-frequency = <100000000>;
			bus-width = <8>;
			mmc-cap-mmc-highspeed;
			vmmc-supply = <&ab8500_ldo_aux2_reg>;

			status = "okay";
		};

		uart@80120000 {
			status = "okay";
		};

		uart@80121000 {
			status = "okay";
		};

		uart@80007000 {
			status = "okay";
		};

		cpufreq-cooling {
			status = "okay";
		};

		prcmu@80157000 {
			db8500-prcmu-regulators {
				db8500_vape_reg: db8500_vape {
					regulator-name = "db8500-vape";
				};

				db8500_varm_reg: db8500_varm {
					regulator-name = "db8500-varm";
				};

				db8500_vmodem_reg: db8500_vmodem {
					regulator-name = "db8500-vmodem";
				};

				db8500_vpll_reg: db8500_vpll {
					regulator-name = "db8500-vpll";
				};

				db8500_vsmps1_reg: db8500_vsmps1 {
					regulator-name = "db8500-vsmps1";
				};

				db8500_vsmps2_reg: db8500_vsmps2 {
					regulator-name = "db8500-vsmps2";
				};

				db8500_vsmps3_reg: db8500_vsmps3 {
					regulator-name = "db8500-vsmps3";
				};

				db8500_vrf1_reg: db8500_vrf1 {
					regulator-name = "db8500-vrf1";
				};

				db8500_sva_mmdsp_reg: db8500_sva_mmdsp {
					regulator-name = "db8500-sva-mmdsp";
				};

				db8500_sva_mmdsp_ret_reg: db8500_sva_mmdsp_ret {
					regulator-name = "db8500-sva-mmdsp-ret";
				};

				db8500_sva_pipe_reg: db8500_sva_pipe {
					regulator-name = "db8500_sva_pipe";
				};

				db8500_sia_mmdsp_reg: db8500_sia_mmdsp {
					regulator-name = "db8500_sia_mmdsp";
				};

				db8500_sia_mmdsp_ret_reg: db8500_sia_mmdsp_ret {
					regulator-name = "db8500-sia-mmdsp-ret";
				};

				db8500_sia_pipe_reg: db8500_sia_pipe {
					regulator-name = "db8500-sia-pipe";
				};

				db8500_sga_reg: db8500_sga {
					regulator-name = "db8500-sga";
				};

				db8500_b2r2_mcde_reg: db8500_b2r2_mcde {
					regulator-name = "db8500-b2r2-mcde";
				};

				db8500_esram12_reg: db8500_esram12 {
					regulator-name = "db8500-esram12";
				};

				db8500_esram12_ret_reg: db8500_esram12_ret {
					regulator-name = "db8500-esram12-ret";
				};

				db8500_esram34_reg: db8500_esram34 {
					regulator-name = "db8500-esram34";
				};

				db8500_esram34_ret_reg: db8500_esram34_ret {
					regulator-name = "db8500-esram34-ret";
				};
			};

			thermal@801573c0 {
				num-trips = <4>;

				trip0-temp = <70000>;
				trip0-type = "active";
				trip0-cdev-num = <1>;
				trip0-cdev-name0 = "thermal-cpufreq-0";

				trip1-temp = <75000>;
				trip1-type = "active";
				trip1-cdev-num = <1>;
				trip1-cdev-name0 = "thermal-cpufreq-0";

				trip2-temp = <80000>;
				trip2-type = "active";
				trip2-cdev-num = <1>;
				trip2-cdev-name0 = "thermal-cpufreq-0";

				trip3-temp = <85000>;
				trip3-type = "critical";
				trip3-cdev-num = <0>;

				status = "okay";
			};

			ab8500 {
				ab8500-gpio {
					compatible = "stericsson,ab8500-gpio";
				};

				ext_regulators: ab8500-ext-regulators {
					ab8500_ext1_reg: ab8500_ext1 {
						regulator-name = "ab8500-ext-supply1";
					};

					ab8500_ext2_reg_reg: ab8500_ext2 {
						regulator-name = "ab8500-ext-supply2";
					};

					ab8500_ext3_reg_reg: ab8500_ext3 {
						regulator-name = "ab8500-ext-supply3";
					};
				};

				ab8500-regulators {
					ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
						regulator-name = "V-DISPLAY";
					};

					ab8500_ldo_aux2_reg: ab8500_ldo_aux2 {
						regulator-name = "V-eMMC1";
					};

					ab8500_ldo_aux3_reg: ab8500_ldo_aux3 {
						regulator-name = "V-MMC-SD";
					};

					ab8500_ldo_intcore_reg: ab8500_ldo_intcore {
						regulator-name = "V-INTCORE";
					};

					ab8500_ldo_tvout_reg: ab8500_ldo_tvout {
						regulator-name = "V-TVOUT";
					};

					ab8500_ldo_usb_reg: ab8500_ldo_usb {
						regulator-name = "dummy";
					};

					ab8500_ldo_audio_reg: ab8500_ldo_audio {
						regulator-name = "V-AUD";
					};

					ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 {
						regulator-name = "V-AMIC1";
					};

					ab8500_ldo_anamic2_reg: ab8500_ldo_anamic2 {
						regulator-name = "V-AMIC2";
					};

					ab8500_ldo_dmic_reg: ab8500_ldo_dmic {
						regulator-name = "V-DMIC";
					};

					ab8500_ldo_ana_reg: ab8500_ldo_ana {
						regulator-name = "V-CSI/DSI";
					};
				};
			};
		};
	};
};
