Files
banban/ql-bootloader/updater/inc/usb/mvUsbModem.h
T

883 lines
57 KiB
C

#ifndef _MVUSBMODEM_H_
#define _MVUSBMODEM_H_
/*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*
mvUsbModem.h
GENERAL DESCRIPTION
This file is for USB modem Device.
EXTERNALIZED FUNCTIONS
INITIALIZATION AND SEQUENCING REQUIREMENTS
Copyright (c) 2011 by Marvell, Incorporated. All Rights Reserved.
*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*
*===========================================================================
EDIT HISTORY FOR MODULE
This section contains comments describing changes made to the module.
Notice that changes are listed in reverse chronological order.
when who what, where, why
-------- ------ ----------------------------------------------------------
01/29/2013 zhoujin Created module
===========================================================================*/
/*===========================================================================
INCLUDE FILES FOR MODULE
===========================================================================*/
#include <stdlib.h>
#include <string.h>
#include "usb_device.h"
#include "usb_device_types.h"
#include "usb_config.h"
/*===========================================================================
LOCAL MACRO
===========================================================================*/
#define AT_MODEM_CHANNLE 1
#define AT_MODEM_INTERFACE 4
#ifdef EXT_AT_MODEM_SUPPORT
#define EXT_AT_MODEM_CHANNLE 3
#define EXT_AT_MODEM_INTERFACE 3
#endif
/* Motify serial state length. */
#define mvUsbNotifySerialStateLen 10
/* Modem Rx number. */
#define mvUsbModemRxNum 256
/* Modem control number. */
#define mvUsbModemCtrlNum 16
/* Modem Tx number. */
#define mvUsbModemTxNum 64
/* AT point number. */
#ifdef EXT_AT_MODEM_SUPPORT
#define mvUsbATPNum 4
#else
#define mvUsbATPNum 3
#endif
/* Modem Rx size. */
#define mvUsbModemRxSize 512
/* Modem 0 Rx number. */
#ifdef CRANE_MCU_DONGLE
#define mvUsbModem0RxNum 8
#else
#define mvUsbModem0RxNum 16
#endif
/* Modem Rx size. */
#define mvUsbModem0MaxRxSize (mvUsbModemRxSize * mvUsbModem0RxNum)
/* Invalid ticks. */
#define mvUsbInvalidTicks 0xFFFFFFFF
/*===========================================================================
Struct definition.
===========================================================================*/
/* Usb Modem request type */
typedef enum
{
MODEM_EP0_SERIALSTATE = 0,
MODEM_EP0_SETLINECODE = 1,
MODEM_EP0_NO_REQ
}mvUsbModemReq;
/* Usb Modem message ring buffer */
typedef struct mvUsbModemMsg{
UINT32 Ep;
UINT32 len;
UINT8 *ptr;
}mvUsbModemMsg;
/* Usb Modem parameters */
typedef struct mvUsbModemPara{
UINT8 CtrlEndPoint;
UINT8 RxEndPoint;
UINT8 TxEndPoint;
UINT8 Interface;
}mvUsbModemPara;
/*===========================================================================
EXTERN DECLARATIONS FOR MODULE
===========================================================================*/
/*===========================================================================
EXTERN FUNCTION DECLARATIONS
===========================================================================*/
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* sendData2SACReq */
/* */
/* DESCRIPTION */
/* */
/* This function send request to SAC. */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* size Memory size */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
extern void sendData2SACReq(unsigned char cid, char *buf, int len);
/*===========================================================================
INTERNAL FUNCTION DECLARATIONS
===========================================================================*/
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbSetModemParameters */
/* */
/* DESCRIPTION */
/* */
/* The function set the modem parameters. */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* sATP modem point */
/* para modem parameters */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbSetModemParameters(UINT8 sATP, mvUsbModemPara *para);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbGetCommFeature */
/* */
/* DESCRIPTION */
/* */
/* The function get the GetComm Feature. */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* interface device interface */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
UINT8 mvUsbGetCommFeature(UINT32 interface);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbSetCommFeature */
/* */
/* DESCRIPTION */
/* */
/* The function Set the Comm Feature. */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* interface device interface */
/* Feature Comm Feature */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbSetCommFeature(UINT32 interface,UINT8 Feature);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbClearCommFeature */
/* */
/* DESCRIPTION */
/* */
/* The function Clear the Comm Feature. */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* interface device interface */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbClearCommFeature(UINT32 interface);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbNotifySerialState */
/* */
/* DESCRIPTION */
/* */
/* The function Clear the Comm Feature. */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* interface device interface */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbNotifySerialState(UINT8 interface, UINT8 bmp0, UINT8 bmp1,UINT8 orig);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbCommSetLineCoding */
/* */
/* DESCRIPTION */
/* */
/* The function set Comm line coding. */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* interface device interface */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbCommSetLineCoding(UINT8 interface, UINT8* inLineCode);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbModemClearDummyFlag */
/* */
/* DESCRIPTION */
/* */
/* The function clear modem Dummy Flag. */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* None N/A */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbModemClearDummyFlag(void);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbCommGetLineCoding */
/* */
/* DESCRIPTION */
/* */
/* The function get modem line coding. */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* None N/A */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbCommGetLineCoding(UINT8 interface, UINT8* outLineCode);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbNotifySerialStatereq */
/* */
/* DESCRIPTION */
/* */
/* The function notify usb serial state. */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* None N/A */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbNotifySerialStatereq(UINT8 interface, UINT8 bmp0, UINT8 bmp1,UINT8 orig);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbCommNotifyControlLineSt */
/* */
/* DESCRIPTION */
/* */
/* The function notify usb control line state. */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* None N/A */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbCommNotifyControlLineSt(UINT8 interface, UINT16 LineStatus);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbModemInitialize */
/* */
/* DESCRIPTION */
/* */
/* The function initialize usb modem device. */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* None N/A */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbModemInitialize(void);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbModem0CtrlHISR */
/* */
/* DESCRIPTION */
/* */
/* The modem 0 control High-Level Interrupt Service Routine(HISR). */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* None N/A */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbModem0CtrlHISR(void);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbModem0CtrlLISR */
/* */
/* DESCRIPTION */
/* */
/* The modem 0 control Low-Level Interrupt Service Routine(LISR). */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* None N/A */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbModem0CtrlLISR(USBDevice_EndpointE ep ,UINT8 *data ,UINT32 Len ,BOOL dummy);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbModem0RxHISR */
/* */
/* DESCRIPTION */
/* */
/* The modem 0 Rx Low-Level Interrupt Service Routine(HISR). */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* None N/A */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbModem0RxHISR(void);
void mvUsbModem1RxHISR(void);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbModem0RxLISR */
/* */
/* DESCRIPTION */
/* */
/* The modem 0 Rx Low-Level Interrupt Service Routine(LISR). */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* None N/A */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbModem0RxLISR(USBDevice_EndpointE ep ,UINT8 *data ,UINT32 Len ,BOOL end);
void mvUsbModem1RxLISR(USBDevice_EndpointE ep ,UINT8 *data ,UINT32 Len ,BOOL end);
void mvUsbModemUartRxLISR(USBDevice_EndpointE ep ,UINT8 *data ,UINT32 Len ,BOOL end);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbModem0TxHISR */
/* */
/* DESCRIPTION */
/* */
/* The modem 0 Tx High-Level Interrupt Service Routine(HISR). */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* None N/A */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbModem0TxHISR(void);
void mvUsbModem1TxHISR(void);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbModem0TxLISR */
/* */
/* DESCRIPTION */
/* */
/* The modem 0 Tx Low-Level Interrupt Service Routine(LISR). */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* None N/A */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbModem0TxLISR(USBDevice_EndpointE ep ,UINT8 *data ,UINT32 Len ,BOOL dummy);
void mvUsbModem1TxLISR(USBDevice_EndpointE ep ,UINT8 *data ,UINT32 Len ,BOOL dummy);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbModem1CtrlHISR */
/* */
/* DESCRIPTION */
/* */
/* The modem 1 control High-Level Interrupt Service Routine(HISR). */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* None N/A */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbModem1CtrlHISR(void);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbModem1CtrlLISR */
/* */
/* DESCRIPTION */
/* */
/* The modem 1 control Low-Level Interrupt Service Routine(LISR). */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* None N/A */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbModem1CtrlLISR(USBDevice_EndpointE ep ,UINT8 *data ,UINT32 Len ,BOOL dummy);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbModemSendData */
/* */
/* DESCRIPTION */
/* */
/* Send modem packet data to PC via USB. */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* None N/A */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbModemSendData(UINT8 sATP,UINT8 *bufPtr, UINT32 length);
#ifdef EXT_AT_MODEM_SUPPORT
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbModem2SendData */
/* */
/* DESCRIPTION */
/* */
/* Send modem packet data to PC via USB. */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* None N/A */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbModem2SendData(UINT8 sATP,UINT8 *bufPtr, UINT32 length);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbNotifySerialState_DCD */
/* */
/* DESCRIPTION */
/* */
/* Usb Notify Serial State_DCD. */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* None N/A */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbNotifySerialState_DCD(UINT8 interface, UINT8 level);
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbNotifySerialState_DCD */
/* */
/* DESCRIPTION */
/* */
/* Usb Notify Serial State RI. */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* None N/A */
/* */
/* OUTPUTS */
/* */
/* None N/A */
/* */
/*************************************************************************/
void mvUsbNotifySerialState_RI(UINT8 interface, UINT8 level);
#endif
/*************************************************************************/
/* */
/* FUNCTION */
/* */
/* mvUsbQueryATPort */
/* */
/* DESCRIPTION */
/* */
/* This function query AT Port Status. */
/* */
/* CALLED BY */
/* */
/* Application */
/* */
/* CALLS */
/* */
/* Application The application function */
/* */
/* INPUTS */
/* */
/* None N/A */
/* */
/* OUTPUTS */
/* */
/* TRUE Connected */
/* FALSE Disconnected */
/* */
/*************************************************************************/
BOOL mvUsbQueryATPort(void);
void mvUsbModemBulkHandleRequest(void);
BOOL mvUsbModemWaitToOpenSerial(UINT8 Interface);
BOOL mvUsbModemCheckSerialStatus(UINT8 Interface);
#endif