Home | History | Annotate | Download | only in topazsc
      1 /*
      2  * Copyright (c) 2011 Intel Corporation. All Rights Reserved.
      3  * Copyright (c) Imagination Technologies Limited, UK
      4  *
      5  * Permission is hereby granted, free of charge, to any person obtaining a
      6  * copy of this software and associated documentation files (the
      7  * "Software"), to deal in the Software without restriction, including
      8  * without limitation the rights to use, copy, modify, merge, publish,
      9  * distribute, sub license, and/or sell copies of the Software, and to
     10  * permit persons to whom the Software is furnished to do so, subject to
     11  * the following conditions:
     12  *
     13  * The above copyright notice and this permission notice (including the
     14  * next paragraph) shall be included in all copies or substantial portions
     15  * of the Software.
     16  *
     17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
     18  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
     19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
     20  * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
     21  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
     22  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
     23  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     24  *
     25  * Authors:
     26  *    Elaine Wang <elaine.wang (at) intel.com>
     27  *
     28  */
     29 
     30 #include <stdio.h>
     31 
     32 #include "JPEGMasterFirmware_bin.h"
     33 #include "JPEGSlaveFirmware_bin.h"
     34 
     35 #include "H263MasterFirmware_bin.h"
     36 #include "H263MasterFirmwareCBR_bin.h"
     37 #include "H263MasterFirmwareVBR_bin.h"
     38 #include "H264MasterFirmware_bin.h"
     39 #include "H264MasterFirmwareCBR_bin.h"
     40 #include "H264MasterFirmwareVCM_bin.h"
     41 #include "H264MasterFirmwareVBR_bin.h"
     42 #include "MPG4MasterFirmware_bin.h"
     43 #include "MPG4MasterFirmwareCBR_bin.h"
     44 #include "MPG4MasterFirmwareVBR_bin.h"
     45 
     46 #include "H263SlaveFirmware_bin.h"
     47 #include "H263SlaveFirmwareCBR_bin.h"
     48 #include "H263SlaveFirmwareVBR_bin.h"
     49 #include "H264SlaveFirmware_bin.h"
     50 #include "H264SlaveFirmwareCBR_bin.h"
     51 #include "H264SlaveFirmwareVBR_bin.h"
     52 #include "H264SlaveFirmwareVCM_bin.h"
     53 #include "MPG4SlaveFirmware_bin.h"
     54 #include "MPG4SlaveFirmwareCBR_bin.h"
     55 #include "MPG4SlaveFirmwareVBR_bin.h"
     56 
     57 
     58 #define FW_VER 0x60
     59 #define FW_FILE_NAME "topazsc_fw.bin"
     60 
     61 #define FW_MASTER_INFO(codec,prefix) \
     62         { FW_MASTER_##codec,\
     63           { FW_VER,\
     64             FW_MASTER_##codec,\
     65             ui32##prefix##_MasterMTXTOPAZFWTextSize,\
     66             ui32##prefix##_MasterMTXTOPAZFWDataSize,\
     67             ui32##prefix##_MasterMTXTOPAZFWDataOrigin\
     68           },\
     69           aui32##prefix##_MasterMTXTOPAZFWText, aui32##prefix##_MasterMTXTOPAZFWData \
     70         }
     71 
     72 #define FW_SLAVE_INFO(codec,prefix) \
     73         { FW_SLAVE_##codec,\
     74           { FW_VER,\
     75             FW_SLAVE_##codec,\
     76             ui32##prefix##_SlaveMTXTOPAZFWTextSize,\
     77             ui32##prefix##_SlaveMTXTOPAZFWDataSize,\
     78             ui32##prefix##_SlaveMTXTOPAZFWDataOrigin\
     79           },\
     80           aui32##prefix##_SlaveMTXTOPAZFWText, aui32##prefix##_SlaveMTXTOPAZFWData \
     81         }
     82 
     83 
     84 
     85 struct topaz_fw_info_item_s {
     86     unsigned short ver;
     87     unsigned short codec;
     88 
     89     unsigned int  text_size;
     90     unsigned int data_size;
     91     unsigned int data_location;
     92 };
     93 typedef struct topaz_fw_info_item_s topaz_fw_info_item_t;
     94 
     95 enum topaz_fw_codec_e {
     96     FW_MASTER_JPEG = 0,
     97     FW_SLAVE_JPEG,
     98     FW_MASTER_H264_NO_RC,
     99     FW_SLAVE_H264_NO_RC,
    100     FW_MASTER_H264_VBR,
    101     FW_SLAVE_H264_VBR,
    102     FW_MASTER_H264_CBR,
    103     FW_SLAVE_H264_CBR,
    104     FW_MASTER_H263_NO_RC,
    105     FW_SLAVE_H263_NO_RC,
    106     FW_MASTER_H263_VBR,
    107     FW_SLAVE_H263_VBR,
    108     FW_MASTER_H263_CBR,
    109     FW_SLAVE_H263_CBR,
    110     FW_MASTER_MPEG4_NO_RC,
    111     FW_SLAVE_MPEG4_NO_RC,
    112     FW_MASTER_MPEG4_VBR,
    113     FW_SLAVE_MPEG4_VBR,
    114     FW_MASTER_MPEG4_CBR,
    115     FW_SLAVE_MPEG4_CBR,
    116     FW_MASTER_H264_VCM,
    117     FW_SLAVE_H264_VCM,
    118     FW_NUM
    119 };
    120 typedef enum topaz_fw_codec_e topaz_fw_codec_t;
    121 
    122 struct fw_table_s {
    123     topaz_fw_codec_t index;
    124     topaz_fw_info_item_t header;
    125     unsigned int *fw_text;
    126     unsigned int *fw_data;
    127 };
    128 typedef struct fw_table_s fw_table_t;
    129 
    130 int main()
    131 {
    132     FILE *fp = NULL;
    133     topaz_fw_codec_t iter = FW_MASTER_JPEG;
    134     unsigned int size = 0;
    135     unsigned int i;
    136 
    137     fw_table_t topaz_fw_table[] = {
    138         /* index   header
    139          * { ver, codec, text_size, data_size, date_location }
    140          * fw_text fw_data */
    141         FW_MASTER_INFO(JPEG, JPEG),
    142         FW_SLAVE_INFO(JPEG, JPEG),
    143 
    144         FW_MASTER_INFO(H264_NO_RC, H264),
    145         FW_SLAVE_INFO(H264_NO_RC, H264),
    146         FW_MASTER_INFO(H264_VBR, H264VBR),
    147         FW_SLAVE_INFO(H264_VBR, H264VBR),
    148         FW_MASTER_INFO(H264_CBR, H264CBR),
    149         FW_SLAVE_INFO(H264_CBR, H264CBR),
    150 
    151         FW_MASTER_INFO(H263_NO_RC, H263),
    152         FW_SLAVE_INFO(H263_NO_RC, H263),
    153         FW_MASTER_INFO(H263_VBR, H263VBR),
    154         FW_SLAVE_INFO(H263_VBR, H263VBR),
    155         FW_MASTER_INFO(H263_CBR, H263CBR),
    156         FW_SLAVE_INFO(H263_CBR, H263CBR),
    157 
    158         FW_MASTER_INFO(MPEG4_NO_RC, MPG4),
    159         FW_SLAVE_INFO(MPEG4_NO_RC, MPG4),
    160         FW_MASTER_INFO(MPEG4_VBR, MPG4VBR),
    161         FW_SLAVE_INFO(MPEG4_VBR, MPG4VBR),
    162         FW_MASTER_INFO(MPEG4_CBR, MPG4CBR),
    163         FW_SLAVE_INFO(MPEG4_CBR, MPG4CBR),
    164 
    165         FW_MASTER_INFO(H264_VCM, H264VCM),
    166         FW_SLAVE_INFO(H264_VCM, H264VCM),
    167     };
    168 
    169     /* open file  */
    170     fp = fopen(FW_FILE_NAME, "w");
    171 
    172     if (NULL == fp)
    173         return -1;
    174 
    175     /* write fw table into the file */
    176     while (iter < FW_NUM) {
    177         /* record the size use bytes */
    178         topaz_fw_table[iter].header.data_size *= 4;
    179         topaz_fw_table[iter].header.text_size *= 4;
    180 
    181         /* write header */
    182         fwrite(&(topaz_fw_table[iter].header), sizeof(topaz_fw_table[iter].header), 1, fp);
    183 
    184         /* write text */
    185         size = topaz_fw_table[iter].header.text_size;
    186         fwrite(topaz_fw_table[iter].fw_text, 1, size, fp);
    187 
    188         /* write data */
    189         size = topaz_fw_table[iter].header.data_size;
    190         fwrite(topaz_fw_table[iter].fw_data, 1, size, fp);
    191 
    192         ++iter;
    193     }
    194 
    195     /* close file */
    196     fclose(fp);
    197 
    198     return 0;
    199 }
    200