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