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

	aliases {
		serial0 = &blsp1_uart1;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

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

		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-controller@7884000 {
			status = "okay";
		};

		spi@78b5000 {
			pinctrl-0 = <&spi_0_pins>;
			pinctrl-names = "default";
			status = "okay";
			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 = "okay";
		};

		cryptobam: dma-controller@8e04000 {
			status = "okay";
		};

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

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

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

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