/*
 * Copyright (c) 2017, NXP
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/ {
	chosen {
		zephyr,flash-controller = &is25wp064;
		zephyr,flash = &is25wp064;
		zephyr,code-partition = &slot0_partition;
	};
};

&flexspi {
	status = "okay";
	ahb-prefetch;
	ahb-read-addr-opt;
	rx-clock-source = <1>;
	reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(8)>;
	is25wp064: is25wp064@0 {
		compatible = "nxp,imx-flexspi-nor";
		size = <67108864>;
		reg = <0>;
		spi-max-frequency = <133000000>;
		status = "okay";
		jedec-id = [9d 70 17];
		erase-block-size = <4096>;
		write-block-size = <1>;

		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;

			boot_partition: partition@0 {
				label = "mcuboot";
				reg = <0x00000000 DT_SIZE_K(64)>;
			};
			/* Note slot 0 has one additional sector,
			 * this is intended for use with the swap move algorithm
			 */
			slot0_partition: partition@10000 {
				label = "image-0";
				reg = <0x00010000 (DT_SIZE_M(3) + DT_SIZE_K(4))>;
			};
			slot1_partition: partition@311000 {
				label = "image-1";
				reg = <0x00311000 DT_SIZE_M(3)>;
			};
			storage_partition: partition@611000 {
				label = "storage";
				reg = <0x00611000 DT_SIZE_K(1980)>;
			};
		};
	};
};
