Linux 2.6.31-rc6
[linux-2.6] / drivers / staging / rtl8192su / r819xU_firmware.h
1 #ifndef __INC_FIRMWARE_H
2 #define __INC_FIRMWARE_H
3
4 #define RTL8190_CPU_START_OFFSET        0x80
5 /* TODO: this definition is TBD */
6 //#define USB_HWDESC_HEADER_LEN 0
7
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
11 //#else
12 #define GET_COMMAND_PACKET_FRAG_THRESHOLD(v)    (4*(v/4) - 8 - USB_HWDESC_HEADER_LEN)
13 //#endif
14
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;
20
21 typedef enum _opt_rst_type{
22         OPT_SYSTEM_RESET = 0,
23         OPT_FIRMWARE_RESET = 1,
24 }opt_rst_type_e;
25
26 /* due to rtl8192 firmware */
27 typedef enum _desc_packet_type_e{
28         DESC_PACKET_TYPE_INIT = 0,
29         DESC_PACKET_TYPE_NORMAL = 1,
30 }desc_packet_type_e;
31
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;
36
37 typedef enum _firmware_status{
38         FW_STATUS_0_INIT = 0,
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,
44 }firmware_status_e;
45
46 typedef struct _rt_firmare_seg_container {
47         u16     seg_size;
48         u8      *seg_ptr;
49 }fw_seg_container, *pfw_seg_container;
50
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;
59
60 typedef struct _rt_firmware_info_819xUsb{
61         u8              sz_info[16];
62 }rt_firmware_info_819xUsb, *prt_firmware_info_819xUsb;
63
64 #if 0
65 /* CPU related */
66 RT_STATUS
67 CPUCheckMainCodeOKAndTurnOnCPU(
68         IN      PADAPTER                        Adapter
69         );
70
71 RT_STATUS
72 CPUCheckFirmwareReady(
73         IN      PADAPTER                        Adapter
74         );
75
76 /* Firmware related */
77 VOID
78 FWInitializeParameters(
79         IN      PADAPTER                Adapter
80         );
81
82 RT_STATUS
83 FWSendDownloadCode(
84         IN      PADAPTER                Adapter,
85         IN      pu1Byte                 CodeVirtualAddrress,
86         IN      u4Byte                  BufferLen
87         );
88
89 RT_STATUS
90 FWSendNullPacket(
91         IN      PADAPTER                Adapter,
92         IN      u4Byte                  Length
93         );
94
95 RT_STATUS
96 CmdSendPacket(
97         PADAPTER                                Adapter,
98         PRT_TCB                                 pTcb,
99         PRT_TX_LOCAL_BUFFER     pBuf,
100         u4Byte                                  BufferLen,
101         u4Byte                                  PacketType,
102         BOOLEAN                                 bLastInitPacket
103         );
104 #endif
105 #endif
106