/*
 * Copyright 2011 Freescale Semiconductor, Inc.
 * Copyright 2011 Linaro Ltd.
 *
 * 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/ "imx53.dtsi"

/ {
	model = "Freescale i.MX53 Smart Mobile Reference Design Board";
	compatible = "fsl,imx53-smd", "fsl,imx53";

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

	soc {
		aips@50000000 { /* AIPS1 */
			spba@50000000 {
				esdhc@50004000 { /* ESDHC1 */
					cd-gpios = <&gpio3 13 0>;
					wp-gpios = <&gpio4 11 0>;
					status = "okay";
				};

				esdhc@50008000 { /* ESDHC2 */
					non-removable;
					status = "okay";
				};

				uart3: serial@5000c000 {
					fsl,uart-has-rtscts;
					status = "okay";
				};

				ecspi@50010000 { /* ECSPI1 */
					fsl,spi-num-chipselects = <2>;
					cs-gpios = <&gpio2 30 0>, <&gpio3 19 0>;
					status = "okay";

					zigbee: mc1323@0 {
						compatible = "fsl,mc1323";
						spi-max-frequency = <8000000>;
						reg = <0>;
					};

					flash: m25p32@1 {
						#address-cells = <1>;
						#size-cells = <1>;
						compatible = "st,m25p32", "st,m25p";
						spi-max-frequency = <20000000>;
						reg = <1>;

						partition@0 {
							label = "U-Boot";
							reg = <0x0 0x40000>;
							read-only;
						};

						partition@40000 {
							label = "Kernel";
							reg = <0x40000 0x3c0000>;
						};
					};
				};

				esdhc@50020000 { /* ESDHC3 */
					non-removable;
					status = "okay";
				};
			};

			wdog@53f98000 { /* WDOG1 */
				status = "okay";
			};

			iomuxc@53fa8000 {
				compatible = "fsl,imx53-iomuxc-smd";
				reg = <0x53fa8000 0x4000>;
			};

			uart1: serial@53fbc000 {
				status = "okay";
			};

			uart2: serial@53fc0000 {
				status = "okay";
			};
		};

		aips@60000000 {	/* AIPS2 */
			sdma@63fb0000 {
				fsl,sdma-ram-script-name = "imx/sdma/sdma-imx53.bin";
			};

			i2c@63fc4000 { /* I2C2 */
				status = "okay";

				codec: sgtl5000@0a {
					compatible = "fsl,sgtl5000";
					reg = <0x0a>;
				};

				magnetometer: mag3110@0e {
					compatible = "fsl,mag3110";
					reg = <0x0e>;
				};

				touchkey: mpr121@5a {
					compatible = "fsl,mpr121";
					reg = <0x5a>;
				};
			};

			i2c@63fc8000 { /* I2C1 */
				status = "okay";

				accelerometer: mma8450@1c {
					compatible = "fsl,mma8450";
					reg = <0x1c>;
				};

				camera: ov5642@3c {
					compatible = "ovti,ov5642";
					reg = <0x3c>;
				};

				pmic: dialog@48 {
					compatible = "dialog,da9053", "dialog,da9052";
					reg = <0x48>;
				};
			};

			ethernet@63fec000 {
				phy-mode = "rmii";
				phy-reset-gpios = <&gpio7 6 0>;
				status = "okay";
			};
		};
	};

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

		volume-up {
			label = "Volume Up";
			gpios = <&gpio2 14 0>;
			linux,code = <115>; /* KEY_VOLUMEUP */
		};

		volume-down {
			label = "Volume Down";
			gpios = <&gpio2 15 0>;
			linux,code = <114>; /* KEY_VOLUMEDOWN */
		};
	};
};
