X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=common%2Fcmd_fpga.c;h=010cd24e63dc21f86f0ae1910a4c4fac9d0e20e4;hb=32d7cdd366a1516fa498464c261851f3a76a62ef;hp=c4b3c8fc56b8303ba7739bf7931b1fb38201afa4;hpb=3be2bdf5dc69b3142c1162a59bc67191c9077567;p=u-boot diff --git a/common/cmd_fpga.c b/common/cmd_fpga.c index c4b3c8fc56..010cd24e63 100644 --- a/common/cmd_fpga.c +++ b/common/cmd_fpga.c @@ -160,9 +160,25 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) image_header_t *hdr = (image_header_t *)fpga_data; ulong data; - - data = (ulong)image_get_data(hdr); - data_size = image_get_data_size(hdr); + uint8_t comp; + + comp = image_get_comp(hdr); + if (comp == IH_COMP_GZIP) { + ulong image_buf = image_get_data(hdr); + data = image_get_load(hdr); + ulong image_size = ~0UL; + + if (gunzip((void *)data, ~0UL, + (void *)image_buf, + &image_size) != 0) { + puts("GUNZIP: error\n"); + return 1; + } + data_size = image_size; + } else { + data = (ulong)image_get_data(hdr); + data_size = image_get_data_size(hdr); + } rc = fpga_load(dev, (void *)data, data_size); } break;