linux/drivers/staging/ath6kl/miscdrv/ar3kps/ar3kpsparser.h
<<
>>
Prefs
   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#ifndef A_UINT32
  52#define A_UCHAR                 unsigned char
  53#define A_UINT32                unsigned long
  54#define A_UINT16                unsigned short
  55#define A_UINT8                 unsigned char
  56#define A_BOOL                  unsigned char
  57#endif /* A_UINT32 */
  58
  59#define ATH_DEBUG_ERR          (1 << 0)
  60#define ATH_DEBUG_WARN         (1 << 1)
  61#define ATH_DEBUG_INFO         (1 << 2)
  62
  63
  64
  65#define FALSE   0
  66#define TRUE    1
  67
  68#ifndef A_MALLOC
  69#define A_MALLOC(size)  kmalloc((size),GFP_KERNEL)
  70#endif /* A_MALLOC */
  71
  72
  73#ifndef A_FREE
  74#define A_FREE(addr)  kfree((addr))
  75#endif /* A_MALLOC */
  76#endif /* HCI_TRANSPORT_UART */
  77
  78/* String manipulation APIs */
  79#ifndef A_STRTOUL
  80#define A_STRTOUL               simple_strtoul
  81#endif  /* A_STRTOL */
  82
  83#ifndef A_STRTOL 
  84#define A_STRTOL                simple_strtol
  85#endif /* A_STRTOL */
  86
  87
  88/* The maximum number of bytes possible in a patch entry */
  89#define MAX_PATCH_SIZE                    20000
  90
  91/* Maximum HCI packets that will be formed from the Patch file */
  92#define MAX_NUM_PATCH_ENTRY               (MAX_PATCH_SIZE/MAX_BYTE_LENGTH) + 1
  93
  94
  95
  96
  97
  98
  99
 100typedef struct PSCmdPacket
 101{
 102    A_UCHAR *Hcipacket;
 103    int packetLen;
 104} PSCmdPacket;
 105
 106/* Parses a Patch information buffer and store it in global structure */
 107A_STATUS AthDoParsePatch(A_UCHAR *, A_UINT32);
 108
 109/* parses a PS information buffer and stores it in a global structure */
 110A_STATUS AthDoParsePS(A_UCHAR *, A_UINT32);
 111
 112/* 
 113 *  Uses the output of Both AthDoParsePS and AthDoParsePatch APIs to form HCI command array with
 114 *  all the PS and patch commands.
 115 *  The list will have the below mentioned commands in order.
 116 *  CRC command packet
 117 *  Download patch command(s)
 118 *  Enable patch Command
 119 *  PS Reset Command
 120 *  PS Tag Command(s)
 121 *
 122 */  
 123int AthCreateCommandList(PSCmdPacket **, A_UINT32 *);
 124
 125/* Cleanup the dynamically allicated HCI command list */
 126A_STATUS AthFreeCommandList(PSCmdPacket **HciPacketList, A_UINT32 numPackets);
 127#endif /* __AR3KPSPARSER_H */
 128