/*
 * Copyright (c) 2016 NextThing Co
 * Copyright (c) 2016 Free Electrons
 * Copyright (c) 2016 Konsulko Inc.
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

/dts-v1/;

/* Note no /plugin/ tag - we're manually generating the metadata for
   testing purposes */

/ {
	/* Test that we can change an int by another */
	fragment@0 {
		target = <0xffffffff /*&test*/>;

		__overlay__ {
			test-int-property = <43>;
		};
	};

	/* Test that we can replace a string by a longer one */
	fragment@1 {
		target = <0xffffffff /*&test*/>;

		__overlay__ {
			test-str-property = "foobar";
		};
	};

	/* Test that we add a new property */
	fragment@2 {
		target = <0xffffffff /*&test*/>;

		__overlay__ {
			test-str-property-2 = "foobar2";
		};
	};

	/* Test that we add a new node (by phandle) */
	fragment@3 {
		target = <0xffffffff /*&test*/>;

		__overlay__ {
			new-node {
				new-property;
			};
		};
	};

	fragment@4 {
		target = <0xffffffff /*&test*/>;

		__overlay__ {
			local: new-local-node {
				new-property;
			};
		};
	};

	fragment@5 {
		target = <0xffffffff /*&test*/>;

		__overlay__ {
			test-phandle = <0xffffffff /*&test*/>, <&local>;
		};
	};

	fragment@6 {
		target = <0xffffffff /*&test*/>;

		__overlay__ {
			test-several-phandle = <&local>, <&local>;
		};
	};

	fragment@7 {
		target = <0xffffffff /*&test*/>;

		__overlay__ {
			sub-test-node {
				new-sub-test-property;
			};
		};
	};

	__fixups__ {
		test = "/fragment@0:target:0",
		       "/fragment@1:target:0",
		       "/fragment@2:target:0",
		       "/fragment@3:target:0",
		       "/fragment@4:target:0",
		       "/fragment@5:target:0",
		       "/fragment@5/__overlay__:test-phandle:0",
		       "/fragment@6:target:0",
		       "/fragment@7:target:0";
	};
	__local_fixups__ {
		fragment@5 {
			__overlay__ {
				test-phandle = <4>;
			};
		};
		fragment@6 {
			__overlay__ {
				test-several-phandle = <0 4>;
			};
		};
	};
};
