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

	chosen {
		bootargs = "console=ttymxc0,115200 root=/dev/mmcblk0p3 rootwait";
	};

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

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

				esdhc@50008000 { /* ESDHC2 */
					fsl,card-wired;
					status = "okay";
				};

				uart2: uart@5000c000 { /* UART3 */
					fsl,uart-has-rtscts;
					status = "okay";
				};

				ecspi@50010000 { /* ECSPI1 */
					fsl,spi-num-chipselects = <2>;
					cs-gpios = <&gpio1 30 0>, /* GPIO2_30 */
						   <&gpio2 19 0>; /* GPIO3_19 */
					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 */
					fsl,card-wired;
					status = "okay";
				};
			};

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

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

			uart0: uart@53fbc000 { /* UART1 */
				status = "okay";
			};

			uart1: uart@53fc0000 { /* UART2 */
				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>;
				};
			};

			fec@63fec000 {
				phy-mode = "rmii";
				phy-reset-gpios = <&gpio6 6 0>; /* GPIO7_6 */
				status = "okay";
			};
		};
	};

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

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

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