]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - include/common.h
gunzip: add gzwrite routine for extracting compresed images to block device
[karo-tx-uboot.git] / include / common.h
index 77c55c6f26d61940c251d5b26364a6758b471b1a..10f55e7a8864e10d7ef1dd9b2ea474421253dbf7 100644 (file)
@@ -553,7 +553,9 @@ static inline int cpumask_next(int cpu, unsigned int mask)
                iter++, cpu = cpumask_next(cpu, mask)) \
 
 int    cpu_numcores  (void);
+int    cpu_num_dspcores(void);
 u32    cpu_mask      (void);
+u32    cpu_dsp_mask(void);
 int    is_core_valid (unsigned int);
 int    probecpu      (void);
 int    checkcpu      (void);
@@ -731,6 +733,45 @@ int gunzip(void *, int, unsigned char *, unsigned long *);
 int zunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp,
                                                int stoponerr, int offset);
 
+/**
+ * gzwrite progress indicators: defined weak to allow board-specific
+ * overrides:
+ *
+ *     gzwrite_progress_init called on startup
+ *     gzwrite_progress called during decompress/write loop
+ *     gzwrite_progress_finish called at end of loop to
+ *             indicate success (retcode=0) or failure
+ */
+void gzwrite_progress_init(u64 expected_size);
+
+void gzwrite_progress(int iteration,
+                    u64 bytes_written,
+                    u64 total_bytes);
+
+void gzwrite_progress_finish(int retcode,
+                            u64 totalwritten,
+                            u64 totalsize,
+                            u32 expected_crc,
+                            u32 calculated_crc);
+
+/**
+ * decompress and write gzipped image from memory to block device
+ *
+ * @param      src             compressed image address
+ * @param      len             compressed image length in bytes
+ * @param      dev             block device descriptor
+ * @param      szwritebuf      bytes per write (pad to erase size)
+ * @param      startoffs       offset in bytes of first write
+ * @param      szexpected      expected uncompressed length
+ *                             may be zero to use gzip trailer
+ *                             for files under 4GiB
+ */
+int gzwrite(unsigned char *src, int len,
+           struct block_dev_desc *dev,
+           unsigned long szwritebuf,
+           u64 startoffs,
+           u64 szexpected);
+
 /* lib/qsort.c */
 void qsort(void *base, size_t nmemb, size_t size,
           int(*compar)(const void *, const void *));