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

	aliases {
		serial0 = &blsp1_uart1;
	};

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

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