/*
 * Copyright (C) 2016 Freescale Semiconductor, Inc.
 * Copyright 2018 NXP
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#include "imx7ulp-evk.dts"

/ {
	regulators {
		compatible = "simple-bus";

		dummy: regulator-dummy {
		compatible = "regulator-fixed";
		regulator-name = "dummy";
		regulator-always-on;
		};
	};
};

&qspi1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_qspi1_1>;
	status = "okay";

	flash0: mx25r6435f@0 {
		reg = <0>;
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "macronix,mx25r6435f";
		spi-max-frequency = <29000000>;
	};
};

&rpmsg{
	status = "disabled";
};

&cpu0 {
	arm-supply= <&dummy>;
	operating-points = <
		/* KHz  uV */
		500210	1025000
	>;
};

&usdhc0 {
	vqmmc-supply = <&dummy>;
	no-1-8-v;
	non-removable;
};

&iomuxc {
	status = "okay";
};

&iomuxc {
	imx7ulp-evk {
		pinctrl_qspi1_1: qspi1grp_1 {
			fsl,pins = <
				IMX7ULP_PAD_PTB7__QSPIA_SS1_B	0x43 /* SS1 */
				IMX7ULP_PAD_PTB8__QSPIA_SS0_B	0x43 /* SS0 */
				IMX7ULP_PAD_PTB15__QSPIA_SCLK	0x43 /* SCLK */
				IMX7ULP_PAD_PTB9__QSPIA_DQS	0x43 /* DQS */
				IMX7ULP_PAD_PTB16__QSPIA_DATA3	0x43 /* D3 */
				IMX7ULP_PAD_PTB17__QSPIA_DATA2	0x43 /* D2 */
				IMX7ULP_PAD_PTB18__QSPIA_DATA1	0x43 /* D1 */
				IMX7ULP_PAD_PTB19__QSPIA_DATA0	0x43 /* D0 */
			>;
		};
	};
};

