---
 common/filetype.c  | 8 ++++++++
 include/filetype.h | 1 +
 2 files changed, 9 insertions(+)

diff --git a/common/filetype.c b/common/filetype.c
index 8d7293347a15..323da026afdc 100644
--- a/common/filetype.c
+++ b/common/filetype.c
@@ -63,6 +63,7 @@ static const struct filetype_str filetype_str[] = {
        [filetype_exe] = { "MS-DOS executable", "exe" },
        [filetype_mxs_bootstream] = { "Freescale MXS bootstream", "mxsbs" },
        [filetype_socfpga_xload] = { "SoCFPGA prebootloader image", 
"socfpga-xload" },
+       [filetype_kwbimage_v1] = { "MVEBU kwbimage (v1)", "kwb" },
 };
 
 const char *file_type_to_string(enum filetype f)
@@ -292,6 +293,13 @@ enum filetype file_detect_type(const void *_buf, size_t 
bufsize)
                return filetype_mips_barebox;
        if (buf[0] == be32_to_cpu(0x534F4659))
                return filetype_bpk;
+       if ((buf8[0] == 0x5a || buf8[0] == 0x69 || buf8[0] == 0x78 ||
+            buf8[0] == 0x8b || buf8[0] == 0x9c) &&
+           buf8[0x1] == 0 && buf8[0x2] == 0 && buf8[0x3] == 0 &&
+           buf8[0x8] == 1 && buf8[0x18] == 0 && buf8[0x1b] == 0 &&
+           buf8[0x1c] == 0 && buf8[0x1d] == 0 &&
+           (buf8[0x1e] == 0 || buf8[0x1e] == 1))
+               return filetype_kwbimage_v1;
 
        if (bufsize < 64)
                return filetype_unknown;
diff --git a/include/filetype.h b/include/filetype.h
index 65bd6efb7bf9..709c1869f705 100644
--- a/include/filetype.h
+++ b/include/filetype.h
@@ -38,6 +38,7 @@ enum filetype {
        filetype_xz_compressed,
        filetype_mxs_bootstream,
        filetype_socfpga_xload,
+       filetype_kwbimage_v1,
        filetype_max,
 };
 
-- 
2.11.0


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to