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

	soc {
		rng@22000 {
			status = "ok";
		};

		pinctrl@1000000 {
			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";
		};

		wifi@a000000 {
			status = "ok";
		};

		wifi@a800000 {
			status = "ok";
		};
	};
};
