add pflash
diff --git a/objects/pflash/ccan/check_type/check_type.h b/objects/pflash/ccan/check_type/check_type.h
new file mode 100644
index 0000000..ef4a9b3
--- /dev/null
+++ b/objects/pflash/ccan/check_type/check_type.h
@@ -0,0 +1,64 @@
+/* CC0 (Public domain) - see LICENSE file for details */

+#ifndef CCAN_CHECK_TYPE_H

+#define CCAN_CHECK_TYPE_H

+#include "config.h"

+

+/**

+ * check_type - issue a warning or build failure if type is not correct.

+ * @expr: the expression whose type we should check (not evaluated).

+ * @type: the exact type we expect the expression to be.

+ *

+ * This macro is usually used within other macros to try to ensure that a macro

+ * argument is of the expected type.  No type promotion of the expression is

+ * done: an unsigned int is not the same as an int!

+ *

+ * check_type() always evaluates to 0.

+ *

+ * If your compiler does not support typeof, then the best we can do is fail

+ * to compile if the sizes of the types are unequal (a less complete check).

+ *

+ * Example:

+ *	// They should always pass a 64-bit value to _set_some_value!

+ *	#define set_some_value(expr)			\

+ *		_set_some_value((check_type((expr), uint64_t), (expr)))

+ */

+

+/**

+ * check_types_match - issue a warning or build failure if types are not same.

+ * @expr1: the first expression (not evaluated).

+ * @expr2: the second expression (not evaluated).

+ *

+ * This macro is usually used within other macros to try to ensure that

+ * arguments are of identical types.  No type promotion of the expressions is

+ * done: an unsigned int is not the same as an int!

+ *

+ * check_types_match() always evaluates to 0.

+ *

+ * If your compiler does not support typeof, then the best we can do is fail

+ * to compile if the sizes of the types are unequal (a less complete check).

+ *

+ * Example:

+ *	// Do subtraction to get to enclosing type, but make sure that

+ *	// pointer is of correct type for that member.

+ *	#define container_of(mbr_ptr, encl_type, mbr)			\

+ *		(check_types_match((mbr_ptr), &((encl_type *)0)->mbr),	\

+ *		 ((encl_type *)						\

+ *		  ((char *)(mbr_ptr) - offsetof(enclosing_type, mbr))))

+ */

+#if HAVE_TYPEOF

+#define check_type(expr, type)			\

+	((typeof(expr) *)0 != (type *)0)

+

+#define check_types_match(expr1, expr2)		\

+	((typeof(expr1) *)0 != (typeof(expr2) *)0)

+#else

+#include <ccan/build_assert/build_assert.h>

+/* Without typeof, we can only test the sizes. */

+#define check_type(expr, type)					\

+	BUILD_ASSERT_OR_ZERO(sizeof(expr) == sizeof(type))

+

+#define check_types_match(expr1, expr2)				\

+	BUILD_ASSERT_OR_ZERO(sizeof(expr1) == sizeof(expr2))

+#endif /* HAVE_TYPEOF */

+

+#endif /* CCAN_CHECK_TYPE_H */