diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c
index 1c8b989..66ee012 100755
--- a/app/aboot/aboot.c
+++ b/app/aboot/aboot.c
@@ -1904,12 +1904,16 @@
 {
 	unsigned int chunk;
 	unsigned int chunk_data_sz;
+	uint32_t *fill_buf = NULL;
+	uint32_t fill_val;
+	uint32_t chunk_blk_cnt = 0;
 	sparse_header_t *sparse_header;
 	chunk_header_t *chunk_header;
 	uint32_t total_blocks = 0;
 	unsigned long long ptn = 0;
 	unsigned long long size = 0;
 	int index = INVALID_PTN;
+	int i;
 	/*End of the sparse image address*/
 	uint32_t data_end = (uint32_t)data + sz;
 
@@ -2034,6 +2038,47 @@
 			data += chunk_data_sz;
 			break;
 
+			case CHUNK_TYPE_FILL:
+			if(chunk_header->total_sz != (sparse_header->chunk_hdr_sz +
+											sizeof(uint32_t)))
+			{
+				fastboot_fail("Bogus chunk size for chunk type FILL");
+				return;
+			}
+
+			fill_buf = (uint32_t *)memalign(CACHE_LINE, ROUNDUP(sparse_header->blk_sz, CACHE_LINE));
+			if (!fill_buf)
+			{
+				fastboot_fail("Malloc failed for: CHUNK_TYPE_FILL");
+				return;
+			}
+
+			fill_val = *(uint32_t *)data;
+			data = (char *) data + sizeof(uint32_t);
+			chunk_blk_cnt = chunk_data_sz / sparse_header->blk_sz;
+
+			for (i = 0; i < (sparse_header->blk_sz / sizeof(fill_val)); i++)
+			{
+				fill_buf[i] = fill_val;
+			}
+
+			for (i = 0; i < chunk_blk_cnt; i++)
+			{
+				if(mmc_write(ptn + ((uint64_t)total_blocks*sparse_header->blk_sz),
+							sparse_header->blk_sz,
+							fill_buf))
+				{
+					fastboot_fail("flash write failure");
+					free(fill_buf);
+					return;
+				}
+
+				total_blocks++;
+			}
+
+			free(fill_buf);
+			break;
+
 			case CHUNK_TYPE_DONT_CARE:
 			if(total_blocks > (UINT_MAX - chunk_header->chunk_sz)) {
 				fastboot_fail("bogus size for chunk DONT CARE type");
@@ -2065,6 +2110,7 @@
 			break;
 
 			default:
+			dprintf(CRITICAL, "Unkown chunk type: %x\n",chunk_header->chunk_type);
 			fastboot_fail("Unknown chunk type");
 			return;
 		}
