ath6kl: s|A_FREE|kfree|g
[cascardo/linux.git] / drivers / staging / ath6kl / miscdrv / ar3kps / ar3kpsparser.h
1 //------------------------------------------------------------------------------
2 //
3 // Copyright (c) 2004-2010 Atheros Corporation.  All rights reserved.
4 // 
5 //
6 // Permission to use, copy, modify, and/or distribute this software for any
7 // purpose with or without fee is hereby granted, provided that the above
8 // copyright notice and this permission notice appear in all copies.
9 //
10 // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 //
18 //
19 //------------------------------------------------------------------------------
20 //
21 // This file is the include file for Atheros PS and patch parser.
22 // It implements APIs to parse data buffer with patch and PS information and convert it to HCI commands.
23 //
24
25 #ifndef __AR3KPSPARSER_H
26 #define __AR3KPSPARSER_H
27
28
29
30
31 #include <linux/fs.h>
32 #include <linux/slab.h>
33 #include "athdefs.h"
34 #ifdef HCI_TRANSPORT_SDIO
35 #include "a_config.h"
36 #include "a_types.h"
37 #include "a_osapi.h"
38 #define ATH_MODULE_NAME misc
39 #include "a_debug.h"
40 #include "common_drv.h"
41 #include "hci_transport_api.h"
42 #include "ar3kconfig.h"
43 #else
44 #ifndef A_PRINTF
45 #define A_PRINTF(args...)     printk(KERN_ALERT args)
46 #endif /* A_PRINTF */
47 #include "debug_linux.h"
48
49 /* Helper data type declaration */
50
51 #define ATH_DEBUG_ERR          (1 << 0)
52 #define ATH_DEBUG_WARN         (1 << 1)
53 #define ATH_DEBUG_INFO         (1 << 2)
54
55
56
57 #define false   0
58 #define true    1
59
60 #ifndef A_MALLOC
61 #define A_MALLOC(size)  kmalloc((size),GFP_KERNEL)
62 #endif /* A_MALLOC */
63 #endif /* HCI_TRANSPORT_UART */
64
65 /* String manipulation APIs */
66 #ifndef A_STRTOUL
67 #define A_STRTOUL               simple_strtoul
68 #endif  /* A_STRTOL */
69
70 #ifndef A_STRTOL 
71 #define A_STRTOL                simple_strtol
72 #endif /* A_STRTOL */
73
74
75 /* The maximum number of bytes possible in a patch entry */
76 #define MAX_PATCH_SIZE                    20000
77
78 /* Maximum HCI packets that will be formed from the Patch file */
79 #define MAX_NUM_PATCH_ENTRY               (MAX_PATCH_SIZE/MAX_BYTE_LENGTH) + 1
80
81
82
83
84
85
86
87 struct ps_cmd_packet
88 {
89     u8 *Hcipacket;
90     int packetLen;
91 };
92
93 /* Parses a Patch information buffer and store it in global structure */
94 int AthDoParsePatch(u8 *, u32 );
95
96 /* parses a PS information buffer and stores it in a global structure */
97 int AthDoParsePS(u8 *, u32 );
98
99 /* 
100  *  Uses the output of Both AthDoParsePS and AthDoParsePatch APIs to form HCI command array with
101  *  all the PS and patch commands.
102  *  The list will have the below mentioned commands in order.
103  *  CRC command packet
104  *  Download patch command(s)
105  *  Enable patch Command
106  *  PS Reset Command
107  *  PS Tag Command(s)
108  *
109  */  
110 int AthCreateCommandList(struct ps_cmd_packet **, u32 *);
111
112 /* Cleanup the dynamically allicated HCI command list */
113 int AthFreeCommandList(struct ps_cmd_packet **HciPacketList, u32 numPackets);
114 #endif /* __AR3KPSPARSER_H */