/*
 * Copyright (C) 2017 Texas Instruments Incorporated - http://www.ti.com/
 *
 * 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.
 * Based on "dra7.dtsi"
 */

#ifdef CONFIG_DRA7XX
/{
	chosen {
		tick-timer = &timer2;
	};

	aliases {
		usb0 = &usb1;
		usb1 = &usb2;
	};

	ocp {
		u-boot,dm-spl;

		ocp2scp@4a080000 {
			compatible = "ti,omap-ocp2scp", "simple-bus";
			u-boot,dm-spl;
		};

		ocp2scp@4a090000 {
			compatible = "ti,omap-ocp2scp", "simple-bus";
		};

		bandgap@4a0021e0 {
			u-boot,dm-spl;
		};
	};
};

&uart1 {
	u-boot,dm-spl;
	reg-shift = <2>;
};

&uart3 {
	u-boot,dm-spl;
	reg-shift = <2>;
};

&mmc1 {
	u-boot,dm-spl;
};

&mmc2 {
	u-boot,dm-spl;
};

&l4_cfg {
	u-boot,dm-spl;
};

&scm {
	u-boot,dm-spl;
};

&scm_conf {
	u-boot,dm-spl;
};

&qspi {
	u-boot,dm-spl;

	m25p80@0 {
		compatible = "jedec,spi-nor";
		u-boot,dm-spl;
	};
};

&gpio1 {
	u-boot,dm-spl;
};

&gpio2 {
	u-boot,dm-spl;
};

&gpio3 {
	u-boot,dm-spl;
};

&gpio4 {
	u-boot,dm-spl;
};

&gpio5 {
	u-boot,dm-spl;
};

&gpio6 {
	u-boot,dm-spl;
};

&gpio7 {
	u-boot,dm-spl;
};

&i2c1 {
	u-boot,dm-spl;
};

#else /* OMAP54XX */
&l4_cfg {
	segment@0 {
		/* SCM Core */
		target-module@2000 {
			compatible = "simple-bus";
		};

		/* USB HS */
		target-module@64000 {
			compatible = "simple-bus";
		};
	};
};

&l4_per {
	segment@0 {
		/* UART3 */
		target-module@20000 {
			compatible = "simple-bus";
		};

		/* I2C1 */
		target-module@70000 {
			compatible = "simple-bus";
		};

		/* MMC1 */
		target-module@9c000 {
			compatible = "simple-bus";
		};

		/* MMC2 */
		target-module@b4000 {
			compatible = "simple-bus";
		};
	};
};

#endif
