/*
 * 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 "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>;
                gpios = <&gpio0 26  0x4>; // 26
                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 {
			gpios = <&gpio6 25 0x4>;
			enable-gpio = <&gpio7 4 0x4>;

			status = "okay";
		};

		// 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";
		};

		i2c@80004000 {
			tc3589x@42 {
				//compatible = "tc3589x";
				reg = <0x42>;
				gpios = <&gpio6 25 0x4>;
				interrupt-parent = <&gpio6>;
			};
			tps61052@33 {
				//compatible = "tps61052";
				reg = <0x33>;
			};
		};

		i2c@80128000 {
			lp5521@33 {
				// compatible = "lp5521";
				reg = <0x33>;
			};
			lp5521@34 {
				// compatible = "lp5521";
				reg = <0x34>;
			};
			bh1780@29 {
				// compatible = "rohm,bh1780gli";
				reg = <0x33>;
			};
		};

		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";
				};

				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";
					};
				};
			};
		};
	};
};
