/*
 * 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 "bobsled.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 {
	bobsled {
		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 */
			>;
		};
	};
};

