/*
 * 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-u9500 {

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

		prcmu@80157000 {
			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";
			 };
		};

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

			ethernet@0 {
				compatible = "smsc,lan9115";
				reg = <0 0x10000>;
				interrupts = <12 0x1>;
				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;
			};
		};

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

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

			status = "okay";
		};

		// On-board eMMC
		sdi4_per2@80114000 {
			arm,primecell-periphid = <0x10480180>;
		        max-frequency = <50000000>;
			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@0x33 {
				// compatible = "lp5521";
				reg = <0x33>;
			};
			lp5521@0x34 {
				// compatible = "lp5521";
				reg = <0x34>;
			};
			bh1780@0x29 {
				// 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";
				};
			};

			ab8500@5 {
				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_initcore_reg: ab8500_ldo_initcore {
						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_amamic2_reg: ab8500_ldo_amamic2 {
						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";
					};
				};
			};
		};
	};
};
