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@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 85struct 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}; 93typedef struct topaz_fw_info_item_s topaz_fw_info_item_t; 94 95enum 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}; 120typedef enum topaz_fw_codec_e topaz_fw_codec_t; 121 122struct 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}; 128typedef struct fw_table_s fw_table_t; 129 130int main() 131{ 132 FILE *fp = NULL; 133 topaz_fw_codec_t iter = FW_MASTER_JPEG; 134 unsigned int size = 0; 135 136 fw_table_t topaz_fw_table[] = { 137 /* index header 138 * { ver, codec, text_size, data_size, date_location } 139 * fw_text fw_data */ 140 FW_MASTER_INFO(JPEG, JPEG), 141 FW_SLAVE_INFO(JPEG, JPEG), 142 143 FW_MASTER_INFO(H264_NO_RC, H264), 144 FW_SLAVE_INFO(H264_NO_RC, H264), 145 FW_MASTER_INFO(H264_VBR, H264VBR), 146 FW_SLAVE_INFO(H264_VBR, H264VBR), 147 FW_MASTER_INFO(H264_CBR, H264CBR), 148 FW_SLAVE_INFO(H264_CBR, H264CBR), 149 150 FW_MASTER_INFO(H263_NO_RC, H263), 151 FW_SLAVE_INFO(H263_NO_RC, H263), 152 FW_MASTER_INFO(H263_VBR, H263VBR), 153 FW_SLAVE_INFO(H263_VBR, H263VBR), 154 FW_MASTER_INFO(H263_CBR, H263CBR), 155 FW_SLAVE_INFO(H263_CBR, H263CBR), 156 157 FW_MASTER_INFO(MPEG4_NO_RC, MPG4), 158 FW_SLAVE_INFO(MPEG4_NO_RC, MPG4), 159 FW_MASTER_INFO(MPEG4_VBR, MPG4VBR), 160 FW_SLAVE_INFO(MPEG4_VBR, MPG4VBR), 161 FW_MASTER_INFO(MPEG4_CBR, MPG4CBR), 162 FW_SLAVE_INFO(MPEG4_CBR, MPG4CBR), 163 164 FW_MASTER_INFO(H264_VCM, H264VCM), 165 FW_SLAVE_INFO(H264_VCM, H264VCM), 166 }; 167 168 /* open file */ 169 fp = fopen(FW_FILE_NAME, "w"); 170 171 if (NULL == fp) 172 return -1; 173 174 /* write fw table into the file */ 175 while (iter < FW_NUM) { 176 /* record the size use bytes */ 177 topaz_fw_table[iter].header.data_size *= 4; 178 topaz_fw_table[iter].header.text_size *= 4; 179 180 /* write header */ 181 fwrite(&(topaz_fw_table[iter].header), sizeof(topaz_fw_table[iter].header), 1, fp); 182 183 /* write text */ 184 size = topaz_fw_table[iter].header.text_size; 185 fwrite(topaz_fw_table[iter].fw_text, 1, size, fp); 186 187 /* write data */ 188 size = topaz_fw_table[iter].header.data_size; 189 fwrite(topaz_fw_table[iter].fw_data, 1, size, fp); 190 191 ++iter; 192 } 193 194 /* close file */ 195 fclose(fp); 196 197 return 0; 198} 199