1/* 2* Prototypes.h 3* 4*Copyright (C) 2010 Beceem Communications, Inc. 5* 6*This program is free software: you can redistribute it and/or modify 7*it under the terms of the GNU General Public License version 2 as 8*published by the Free Software Foundation. 9* 10*This program is distributed in the hope that it will be useful,but 11*WITHOUT ANY WARRANTY; without even the implied warranty of 12*MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 13*See the GNU General Public License for more details. 14* 15*You should have received a copy of the GNU General Public License 16*along with this program. If not, write to the Free Software Foundation, Inc., 17*51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18* 19*/ 20 21 22#ifndef _PROTOTYPES_H_ 23#define _PROTOTYPES_H_ 24 25int BcmFileDownload(PMINI_ADAPTER Adapter,/**< Logical Adapter */ 26 char *path, /**< path to image file */ 27 unsigned int loc /**< Download Address on the chip*/ 28 ); 29VOID LinkControlResponseMessage(PMINI_ADAPTER Adapter, PUCHAR pucBuffer); 30 31VOID StatisticsResponse(PMINI_ADAPTER Adapter,PVOID pvBuffer); 32 33VOID IdleModeResponse(PMINI_ADAPTER Adapter,PUINT puiBuffer); 34 35void bcm_kfree_skb(struct sk_buff *skb); 36VOID bcm_kfree(VOID *ptr); 37 38 39VOID handle_rx_control_packet(PMINI_ADAPTER Adapter, /**<Pointer to the Adapter structure*/ 40 struct sk_buff *skb); /**<Pointer to the socket buffer*/ 41 42int control_packet_handler (PMINI_ADAPTER Adapter); 43 44int InterruptOut(PMINI_ADAPTER Adapter, PUCHAR pData); 45 46void shiftDetect(PMINI_ADAPTER Adapter); 47 48VOID DeleteAllClassifiersForSF(PMINI_ADAPTER Adapter,UINT uiSearchRuleIndex); 49 50VOID flush_all_queues(PMINI_ADAPTER Adapter); 51 52int register_control_device_interface(PMINI_ADAPTER ps_adapter); 53 54void unregister_control_device_interface(PMINI_ADAPTER Adapter); 55 56INT CopyBufferToControlPacket(PMINI_ADAPTER Adapter,/**<Logical Adapter*/ 57 PVOID ioBuffer/**<Control Packet Buffer*/ 58 ); 59 60VOID SortPackInfo(PMINI_ADAPTER Adapter); 61 62VOID SortClassifiers(PMINI_ADAPTER Adapter); 63 64VOID flush_all_queues(PMINI_ADAPTER Adapter); 65 66USHORT IpVersion4(PMINI_ADAPTER Adapter, /**< Pointer to the driver control structure */ 67 struct iphdr *iphd, /**<Pointer to the IP Hdr of the packet*/ 68 S_CLASSIFIER_RULE *pstClassifierRule ); 69 70VOID PruneQueue(PMINI_ADAPTER Adapter,/**<Pointer to the driver control structure*/ 71 INT iIndex/**<Queue Index*/ 72 ); 73 74VOID PruneQueueAllSF(PMINI_ADAPTER Adapter); 75 76INT SearchSfid(PMINI_ADAPTER Adapter,UINT uiSfid); 77 78USHORT GetPacketQueueIndex(PMINI_ADAPTER Adapter, /**<Pointer to the driver control structure */ 79 struct sk_buff* Packet /**< Pointer to the Packet to be sent*/ 80 ); 81 82VOID 83reply_to_arp_request(struct sk_buff *skb /**<sk_buff of ARP request*/ 84 ); 85 86INT SetupNextSend(PMINI_ADAPTER Adapter, /**<Logical Adapter*/ 87 struct sk_buff *Packet, /**<data buffer*/ 88 USHORT Vcid) ; 89 90VOID LinkMessage(PMINI_ADAPTER Adapter); 91 92VOID transmit_packets(PMINI_ADAPTER Adapter); 93 94INT SendControlPacket(PMINI_ADAPTER Adapter, /**<Logical Adapter*/ 95 char *pControlPacket/**<Control Packet*/ 96 ); 97 98INT bcm_transmit(struct sk_buff *skb, /**< skb */ 99 struct net_device *dev /**< net device pointer */ 100 ); 101 102int register_networkdev(PMINI_ADAPTER Adapter); 103 104INT AllocAdapterDsxBuffer(PMINI_ADAPTER Adapter); 105 106VOID AdapterFree(PMINI_ADAPTER Adapter); 107 108INT FreeAdapterDsxBuffer(PMINI_ADAPTER Adapter); 109 110int create_worker_threads(PMINI_ADAPTER psAdapter); 111 112int tx_pkt_handler(PMINI_ADAPTER Adapter); 113 114int reset_card_proc(PMINI_ADAPTER Adapter ); 115 116int run_card_proc(PMINI_ADAPTER Adapter ); 117 118int InitCardAndDownloadFirmware(PMINI_ADAPTER ps_adapter); 119 120int bcm_parse_target_params(PMINI_ADAPTER Adapter); 121 122INT ReadMacAddressFromNVM(PMINI_ADAPTER Adapter); 123 124int register_control_device_interface(PMINI_ADAPTER ps_adapter); 125 126void DumpPackInfo(PMINI_ADAPTER Adapter); 127 128int rdm(PMINI_ADAPTER Adapter, UINT uiAddress, PCHAR pucBuff, size_t size); 129 130int wrm(PMINI_ADAPTER Adapter, UINT uiAddress, PCHAR pucBuff, size_t size); 131 132int wrmalt (PMINI_ADAPTER Adapter, UINT uiAddress, PUINT pucBuff, size_t sSize); 133 134int rdmalt (PMINI_ADAPTER Adapter, UINT uiAddress, PUINT pucBuff, size_t sSize); 135 136int get_dsx_sf_data_to_application(PMINI_ADAPTER Adapter, UINT uiSFId, 137 PUCHAR user_buffer); 138 139void SendLinkDown(PMINI_ADAPTER Adapter); 140 141void SendIdleModeResponse(PMINI_ADAPTER Adapter); 142 143void HandleShutDownModeRequest(PMINI_ADAPTER Adapter,PUCHAR pucBuffer); 144 145int ProcessGetHostMibs(PMINI_ADAPTER Adapter, PVOID ioBuffer, 146 ULONG inputBufferLength); 147 148int GetDroppedAppCntrlPktMibs(PVOID ioBuffer, PPER_TARANG_DATA pTarang); 149void beceem_parse_target_struct(PMINI_ADAPTER Adapter); 150 151void doPowerAutoCorrection(PMINI_ADAPTER psAdapter); 152 153int bcm_ioctl_fw_download(PMINI_ADAPTER Adapter, FIRMWARE_INFO *psFwInfo); 154 155void bcm_unregister_networkdev(PMINI_ADAPTER Adapter); 156 157int SearchVcid(PMINI_ADAPTER Adapter,unsigned short usVcid); 158 159void CopyMIBSExtendedSFParameters(PMINI_ADAPTER Adapter, 160 CServiceFlowParamSI *psfLocalSet, UINT uiSearchRuleIndex); 161 162VOID CheckAndIndicateConnect(PMINI_ADAPTER Adapter, stLocalSFAddIndicationAlt *pstAddIndication); 163 164 165VOID ResetCounters(PMINI_ADAPTER Adapter); 166 167int InitLedSettings(PMINI_ADAPTER Adapter); 168 169S_CLASSIFIER_RULE *GetFragIPClsEntry(PMINI_ADAPTER Adapter,USHORT usIpIdentification,ULONG SrcIP); 170 171void AddFragIPClsEntry(PMINI_ADAPTER Adapter,PS_FRAGMENTED_PACKET_INFO psFragPktInfo); 172 173void DelFragIPClsEntry(PMINI_ADAPTER Adapter,USHORT usIpIdentification,ULONG SrcIp); 174 175void update_per_cid_rx (PMINI_ADAPTER Adapter); 176 177void update_per_sf_desc_cnts( PMINI_ADAPTER Adapter); 178 179void ClearTargetDSXBuffer(PMINI_ADAPTER Adapter,B_UINT16 TID,BOOLEAN bFreeAll); 180 181void beceem_protocol_reset (PMINI_ADAPTER Adapter); 182 183void flush_queue(PMINI_ADAPTER Adapter, UINT iQIndex); 184 185 186INT flushAllAppQ(VOID); 187 188 189INT BeceemEEPROMBulkRead( 190 PMINI_ADAPTER Adapter, 191 PUINT pBuffer, 192 UINT uiOffset, 193 UINT uiNumBytes); 194 195 196INT BeceemFlashBulkRead( 197 PMINI_ADAPTER Adapter, 198 PUINT pBuffer, 199 UINT uiOffset, 200 UINT uiNumBytes); 201 202UINT BcmGetEEPROMSize(PMINI_ADAPTER Adapter); 203 204INT WriteBeceemEEPROM(PMINI_ADAPTER Adapter,UINT uiEEPROMOffset, UINT uiData); 205 206UINT BcmGetFlashSize(PMINI_ADAPTER Adapter); 207 208UINT BcmGetFlashSectorSize(PMINI_ADAPTER Adapter, UINT FlashSectorSizeSig, UINT FlashSectorSize); 209 210INT BeceemFlashBulkWrite( 211 PMINI_ADAPTER Adapter, 212 PUINT pBuffer, 213 UINT uiOffset, 214 UINT uiNumBytes, 215 BOOLEAN bVerify); 216 217INT PropagateCalParamsFromFlashToMemory(PMINI_ADAPTER Adapter); 218 219INT PropagateCalParamsFromEEPROMToMemory(PMINI_ADAPTER Adapter); 220 221 222INT BeceemEEPROMBulkWrite( 223 PMINI_ADAPTER Adapter, 224 PUCHAR pBuffer, 225 UINT uiOffset, 226 UINT uiNumBytes, 227 BOOLEAN bVerify); 228 229 230INT ReadBeceemEEPROMBulk(PMINI_ADAPTER Adapter,UINT dwAddress, UINT *pdwData, UINT dwNumData); 231 232INT ReadBeceemEEPROM(PMINI_ADAPTER Adapter,UINT dwAddress, UINT *pdwData); 233 234 235NVM_TYPE BcmGetNvmType(PMINI_ADAPTER Adapter); 236 237INT BeceemNVMRead( 238 PMINI_ADAPTER Adapter, 239 PUINT pBuffer, 240 UINT uiOffset, 241 UINT uiNumBytes); 242 243INT BeceemNVMWrite( 244 PMINI_ADAPTER Adapter, 245 PUINT pBuffer, 246 UINT uiOffset, 247 UINT uiNumBytes, 248 BOOLEAN bVerify); 249 250INT BcmUpdateSectorSize(PMINI_ADAPTER Adapter,UINT uiSectorSize); 251 252INT BcmInitNVM(PMINI_ADAPTER Adapter); 253 254INT BcmGetNvmSize(PMINI_ADAPTER Adapter); 255 256INT IsSectionExistInVendorInfo(PMINI_ADAPTER Adapter, FLASH2X_SECTION_VAL section); 257 258VOID BcmValidateNvmType(PMINI_ADAPTER Adapter); 259 260VOID ConfigureEndPointTypesThroughEEPROM(PMINI_ADAPTER Adapter); 261 262INT BcmGetFlashCSInfo(PMINI_ADAPTER Adapter); 263INT ReadDSDHeader(PMINI_ADAPTER Adapter, PDSD_HEADER psDSDHeader, FLASH2X_SECTION_VAL dsd); 264INT BcmGetActiveDSD(PMINI_ADAPTER Adapter); 265INT ReadISOHeader(PMINI_ADAPTER Adapter, PISO_HEADER psISOHeader, FLASH2X_SECTION_VAL IsoImage); 266INT BcmGetActiveISO(PMINI_ADAPTER Adapter); 267B_UINT8 IsOffsetWritable(PMINI_ADAPTER Adapter, UINT uiOffset); 268INT BcmGetFlash2xSectionalBitMap(PMINI_ADAPTER Adapter, PFLASH2X_BITMAP psFlash2xBitMap); 269 270INT BcmFlash2xBulkWrite( 271 PMINI_ADAPTER Adapter, 272 PUINT pBuffer, 273 FLASH2X_SECTION_VAL eFlashSectionVal, 274 UINT uiOffset, 275 UINT uiNumBytes, 276 UINT bVerify); 277 278INT BcmFlash2xBulkRead( 279 PMINI_ADAPTER Adapter, 280 PUINT pBuffer, 281 FLASH2X_SECTION_VAL eFlashSectionVal, 282 UINT uiOffsetWithinSectionVal, 283 UINT uiNumBytes); 284INT BcmGetSectionValEndOffset(PMINI_ADAPTER Adapter, FLASH2X_SECTION_VAL eFlashSectionVal); 285 286INT BcmGetSectionValStartOffset(PMINI_ADAPTER Adapter, FLASH2X_SECTION_VAL eFlashSectionVal); 287 288INT BcmSetActiveSection(PMINI_ADAPTER Adapter, FLASH2X_SECTION_VAL eFlash2xSectVal); 289INT BcmAllocFlashCSStructure(PMINI_ADAPTER psAdapter); 290INT BcmDeAllocFlashCSStructure(PMINI_ADAPTER psAdapter); 291 292INT BcmCopyISO(PMINI_ADAPTER Adapter, FLASH2X_COPY_SECTION sCopySectStrut); 293INT BcmFlash2xCorruptSig(PMINI_ADAPTER Adapter, FLASH2X_SECTION_VAL eFlash2xSectionVal); 294INT BcmFlash2xWriteSig(PMINI_ADAPTER Adapter, FLASH2X_SECTION_VAL eFlashSectionVal); 295INT validateFlash2xReadWrite(PMINI_ADAPTER Adapter, PFLASH2X_READWRITE psFlash2xReadWrite); 296INT IsFlash2x(PMINI_ADAPTER Adapter); 297INT GetFlashBaseAddr(PMINI_ADAPTER Adapter); 298INT SaveHeaderIfPresent(PMINI_ADAPTER Adapter, PUCHAR pBuff, UINT uiSectAlignAddr); 299INT BcmCopySection(PMINI_ADAPTER Adapter, 300 FLASH2X_SECTION_VAL SrcSection, 301 FLASH2X_SECTION_VAL DstSection, 302 UINT offset, 303 UINT numOfBytes); 304 305INT BcmDoChipSelect(PMINI_ADAPTER Adapter, UINT offset); 306INT BcmMakeFlashCSActive(PMINI_ADAPTER Adapter, UINT offset); 307INT ReadDSDSignature(PMINI_ADAPTER Adapter, FLASH2X_SECTION_VAL dsd); 308INT ReadDSDPriority(PMINI_ADAPTER Adapter, FLASH2X_SECTION_VAL dsd); 309FLASH2X_SECTION_VAL getHighestPriDSD(PMINI_ADAPTER Adapter); 310INT ReadISOSignature(PMINI_ADAPTER Adapter, FLASH2X_SECTION_VAL iso); 311INT ReadISOPriority(PMINI_ADAPTER Adapter, FLASH2X_SECTION_VAL iso); 312FLASH2X_SECTION_VAL getHighestPriISO(PMINI_ADAPTER Adapter); 313INT WriteToFlashWithoutSectorErase(PMINI_ADAPTER Adapter, 314 PUINT pBuff, 315 FLASH2X_SECTION_VAL eFlash2xSectionVal, 316 UINT uiOffset, 317 UINT uiNumBytes 318 ); 319 320//UINT getNumOfSubSectionWithWRPermisson(PMINI_ADAPTER Adapter, SECTION_TYPE secType); 321BOOLEAN IsSectionExistInFlash(PMINI_ADAPTER Adapter, FLASH2X_SECTION_VAL section); 322INT IsSectionWritable(PMINI_ADAPTER Adapter, FLASH2X_SECTION_VAL Section); 323INT CorruptDSDSig(PMINI_ADAPTER Adapter, FLASH2X_SECTION_VAL eFlash2xSectionVal); 324INT CorruptISOSig(PMINI_ADAPTER Adapter, FLASH2X_SECTION_VAL eFlash2xSectionVal); 325BOOLEAN IsNonCDLessDevice(PMINI_ADAPTER Adapter); 326 327 328VOID OverrideServiceFlowParams(PMINI_ADAPTER Adapter,PUINT puiBuffer); 329 330int wrmaltWithLock (PMINI_ADAPTER Adapter, UINT uiAddress, PUINT pucBuff, size_t sSize); 331 332int rdmaltWithLock (PMINI_ADAPTER Adapter, UINT uiAddress, PUINT pucBuff, size_t sSize); 333 334int rdmWithLock(PMINI_ADAPTER Adapter, UINT uiAddress, PCHAR pucBuff, size_t size); 335int wrmWithLock(PMINI_ADAPTER Adapter, UINT uiAddress, PCHAR pucBuff, size_t size); 336INT buffDnldVerify(PMINI_ADAPTER Adapter, unsigned char *mappedbuffer, unsigned int u32FirmwareLength, 337 unsigned long u32StartingAddress); 338 339 340VOID putUsbSuspend(struct work_struct *work); 341BOOLEAN IsReqGpioIsLedInNVM(PMINI_ADAPTER Adapter, UINT gpios); 342 343#ifdef BCM_SHM_INTERFACE 344INT beceem_virtual_device_init(void); 345VOID virtual_mail_box_interrupt(void); 346INT beceem_virtual_device_exit(void); 347#endif 348 349int capture_and_merge_acp(PMINI_ADAPTER Adapter, unsigned char *ptr, int size); 350 351#endif 352 353 354 355 356