1 #ifndef __INC_FIRMWARE_H
2 #define __INC_FIRMWARE_H
4 #define RTL8190_CPU_START_OFFSET 0x80
5 /* TODO: this definition is TBD */
6 //#define USB_HWDESC_HEADER_LEN 0
8 /* It should be double word alignment */
9 //#if DEV_BUS_TYPE==PCI_INTERFACE
10 //#define GET_COMMAND_PACKET_FRAG_THRESHOLD(v) 4*(v/4) - 8
12 #define GET_COMMAND_PACKET_FRAG_THRESHOLD(v) (4*(v/4) - 8 - USB_HWDESC_HEADER_LEN)
15 typedef enum _firmware_init_step{
16 FW_INIT_STEP0_BOOT = 0,
17 FW_INIT_STEP1_MAIN = 1,
18 FW_INIT_STEP2_DATA = 2,
19 }firmware_init_step_e;
21 typedef enum _opt_rst_type{
23 OPT_FIRMWARE_RESET = 1,
26 /* due to rtl8192 firmware */
27 typedef enum _desc_packet_type_e{
28 DESC_PACKET_TYPE_INIT = 0,
29 DESC_PACKET_TYPE_NORMAL = 1,
32 typedef enum _firmware_source{
33 FW_SOURCE_IMG_FILE = 0,
34 FW_SOURCE_HEADER_FILE = 1, //from header file
35 }firmware_source_e, *pfirmware_source_e;
37 typedef enum _firmware_status{
39 FW_STATUS_1_MOVE_BOOT_CODE = 1,
40 FW_STATUS_2_MOVE_MAIN_CODE = 2,
41 FW_STATUS_3_TURNON_CPU = 3,
42 FW_STATUS_4_MOVE_DATA_CODE = 4,
43 FW_STATUS_5_READY = 5,
46 typedef struct _rt_firmare_seg_container {
49 }fw_seg_container, *pfw_seg_container;
51 #define RTL8190_MAX_FIRMWARE_CODE_SIZE 64000 //64k
52 #define MAX_FW_INIT_STEP 3
53 typedef struct _rt_firmware{
54 firmware_status_e firmware_status;
55 u16 cmdpacket_frag_thresold;
56 u8 firmware_buf[MAX_FW_INIT_STEP][RTL8190_MAX_FIRMWARE_CODE_SIZE];
57 u16 firmware_buf_size[MAX_FW_INIT_STEP];
58 }rt_firmware, *prt_firmware;
60 typedef struct _rt_firmware_info_819xUsb{
62 }rt_firmware_info_819xUsb, *prt_firmware_info_819xUsb;
67 CPUCheckMainCodeOKAndTurnOnCPU(
72 CPUCheckFirmwareReady(
76 /* Firmware related */
78 FWInitializeParameters(
85 IN pu1Byte CodeVirtualAddrress,
99 PRT_TX_LOCAL_BUFFER pBuf,
102 BOOLEAN bLastInitPacket