/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 *
 */

#include "qcom-ipq4019.dtsi"

/ {
	model = "Qualcomm Technologies, Inc. IPQ4019/AP-DK01.1";
	compatible = "qcom,ipq4019";

	clocks {
                xo: xo {
                        compatible = "fixed-clock";
                        clock-frequency = <48000000>;
                        #clock-cells = <0>;
                };
	};

	soc {


		timer {
			compatible = "arm,armv7-timer";
			interrupts = <1 2 0xf08>,
				     <1 3 0xf08>,
				     <1 4 0xf08>,
				     <1 1 0xf08>;
			clock-frequency = <48000000>;
		};

		pinctrl@0x01000000 {
			serial_pins: serial_pinmux {
				mux {
					pins = "gpio60", "gpio61";
					function = "blsp_uart0";
					bias-disable;
				};
			};

			spi_0_pins: spi_0_pinmux {
				pinmux {
					function = "blsp_spi0";
					pins = "gpio55", "gpio56", "gpio57";
				};
				pinmux_cs {
					function = "gpio";
					pins = "gpio54";
				};
				pinconf {
					pins = "gpio55", "gpio56", "gpio57";
					drive-strength = <12>;
					bias-disable;
				};
				pinconf_cs {
					pins = "gpio54";
					drive-strength = <2>;
					bias-disable;
					output-high;
				};
			};
		};

		blsp_dma: dma@7884000 {
			status = "ok";
		};

		spi_0: spi@78b5000 {
			pinctrl-0 = <&spi_0_pins>;
			pinctrl-names = "default";
			status = "ok";
			cs-gpios = <&tlmm 54 0>;

			mx25l25635e@0 {
				#address-cells = <1>;
				#size-cells = <1>;
				reg = <0>;
				compatible = "mx25l25635e";
				spi-max-frequency = <24000000>;
			};
		};

		serial@78af000 {
			pinctrl-0 = <&serial_pins>;
			pinctrl-names = "default";
			status = "ok";
		};

		cryptobam: dma@8e04000 {
			status = "ok";
		};

		crypto@8e3a000 {
			status = "ok";
		};

		watchdog@b017000 {
			status = "ok";
		};
	};
};
