Added Brian Denheyer's patch.

This commit is contained in:
mark 2000-07-01 14:43:46 +00:00
parent 673f7b6f8c
commit 75831a459d
9 changed files with 577 additions and 32 deletions

View File

@ -2,7 +2,7 @@
device "prism2_cs"
class "wlan-ng" module "prism2_cs"
card "Intersil Prism2 Ref. Card"
card "Intersil PRISM2 Reference Design 11Mb/s WLAN Card"
manfid 0x0156, 0x0002
bind "prism2_cs"

View File

@ -94,18 +94,18 @@
#define P80211_MIB_CAT_DOT11MAC 2
#define P80211_MIB_CAT_DOT11PHY 3
#define P80211SEC_DOT11SMT P80211_MIB_CAT_DOT11SMT
#define P80211SEC_DOT11MAC P80211_MIB_CAT_DOT11MAC
#define P80211SEC_DOT11PHY P80211_MIB_CAT_DOT11PHY
#define P80211SEC_DOT11SMT P80211_MIB_CAT_DOT11SMT
#define P80211SEC_DOT11MAC P80211_MIB_CAT_DOT11MAC
#define P80211SEC_DOT11PHY P80211_MIB_CAT_DOT11PHY
/* Message Category List */
#define P80211_MSG_CAT_DOT11REQ 1
#define P80211_MSG_CAT_DOT11IND 2
/* #define P80211_MSG_CAT_DOT11CFM 3 (doesn't exist at this time) */
#define P80211SEC_DOT11REQ P80211_MSG_CAT_DOT11REQ
#define P80211SEC_DOT11IND P80211_MSG_CAT_DOT11IND
/* #define P80211SEC_DOT11CFM P80211_MSG_CAT_DOT11CFM (doesn't exist at this time */
#define P80211SEC_DOT11REQ P80211_MSG_CAT_DOT11REQ
#define P80211SEC_DOT11IND P80211_MSG_CAT_DOT11IND
/* #define P80211SEC_DOT11CFM P80211_MSG_CAT_DOT11CFM (doesn't exist at this time */
@ -230,9 +230,9 @@
/* MSM: Do these belong in p80211meta.h? I'm not sure. */
#define ISREQUIRED (0x80000000UL)
#define ISREQUEST (0x40000000UL)
#define ISCONFIRM (0x20000000UL)
#define ISREQUIRED (0x80000000UL)
#define ISREQUEST (0x40000000UL)
#define ISCONFIRM (0x20000000UL)
/*================================================================*/
@ -511,8 +511,15 @@ typedef struct p80211item_unk1024
} p80211item_unk1024_t;
__WLAN_PRAGMA_PACK1__
/* message data item for UNK 4096, namely p2 download chunks */
typedef struct p80211item_unk4096
{
UINT32 did __WLAN_ATTRIB_PACK__;
UINT16 status __WLAN_ATTRIB_PACK__;
UINT16 len __WLAN_ATTRIB_PACK__;
UINT8 data[4096] __WLAN_ATTRIB_PACK__;
} p80211item_unk4096_t;
__WLAN_PRAGMA_PACK1__
struct catlistitem;

View File

@ -50,19 +50,13 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
/* Ugly hack for LinuxPPC R4, don't have time to figure it out right now */
#if defined(__WLAN_PPC__)
#undef __GLIBC__
#endif
#include <unistd.h>
#include <errno.h>
#include <ctype.h>
#include <regex.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <asm/spinlock.h>
#include <asm/byteorder.h>
@ -134,7 +128,7 @@
#define CHUNKS_MAX 100
#define WRITESIZE_MAX 1024
#define WRITESIZE_MAX 4096
/*================================================================*/
/* Local Macros */
@ -1130,7 +1124,7 @@ int pda_write(pda_t *pda)
writemsg.resultcode.status = P80211ENUM_msgitem_status_no_value;
writemsg.addr.len = sizeof(UINT32);
writemsg.len.len = sizeof(UINT32);
writemsg.data.len = 1024;
writemsg.data.len = WRITESIZE_MAX;
writemsg.resultcode.len = sizeof(UINT32);
/* Send flashdl_state(enable) */
@ -1250,8 +1244,7 @@ int plugimage( imgchunk_t *fchunk, UINT nfchunks,
}
if ( j >= pda->nrec && j != -1 ) { /* if no matching PDR, fail */
fprintf(stderr, APPNAME
": error: Failed to find PDR for "
"plugrec 0x%04lx.\n",
": error: Failed to find PDR for plugrec 0x%04lx.\n",
s3plug[i].itemcode);
result = 1;
continue;
@ -1282,11 +1275,6 @@ int plugimage( imgchunk_t *fchunk, UINT nfchunks,
result = 1;
continue;
}
/* An error has occurred, don't bother doing the actual plug */
/* But we want to continue so we detect all the errors */
if ( result != 0 ) {
continue;
}
/* Plug data */
chunkoff = pstart - cstart;
@ -2016,7 +2004,7 @@ int writeimage(imgchunk_t *fchunk, UINT nfchunks, int isflash)
fwritemsg.resultcode.status = P80211ENUM_msgitem_status_no_value;
fwritemsg.addr.len = sizeof(UINT32);
fwritemsg.len.len = sizeof(UINT32);
fwritemsg.data.len = 1024;
fwritemsg.data.len = WRITESIZE_MAX;
fwritemsg.resultcode.len = sizeof(UINT32);
memset(&rstatemsg, 0, sizeof(rstatemsg));
@ -2047,7 +2035,7 @@ int writeimage(imgchunk_t *fchunk, UINT nfchunks, int isflash)
rwritemsg.resultcode.status = P80211ENUM_msgitem_status_no_value;
rwritemsg.addr.len = sizeof(UINT32);
rwritemsg.len.len = sizeof(UINT32);
rwritemsg.data.len = 1024;
rwritemsg.data.len = WRITESIZE_MAX;
rwritemsg.resultcode.len = sizeof(UINT32);
/* Send xxx_state(enable) */

View File

@ -1393,7 +1393,13 @@ int hfa384x_cmd_download(hfa384x_t *hw, UINT16 mode, UINT16 lowaddr,
DBFENTER;
cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_DOWNLD) |
HFA384x_CMD_PROGMODE_SET(mode);
#if defined(WLAN_STA)
result = hfa384x_dl_docmd_wait(hw, cmd, lowaddr, highaddr, codelen);
#elif defined(WLAN_AP)
result = hfa384x_docmd_wait(hw, cmd, lowaddr, highaddr, codelen);
#else
#error "WLAN_STA or WLAN_AP not defined!"
#endif
DBFEXIT;
return result;
@ -1532,6 +1538,118 @@ int hfa384x_cmd_aux_disable(hfa384x_t *hw)
return result;
}
/*----------------------------------------------------------------
* hfa384x_drvr_test_command
*
* Write test commands to the card. Some test commands don't make
* sense without prior set-up. For example, continous TX isn't very
* useful until you set the channel. That functionality should be
* enforced at a higher level.
*
* Arguments:
* hw device structure
* test_mode The test command code to use.
* test_param A parameter needed for the test mode being used.
*
* Returns:
* 0 success
* >0 f/w reported error - f/w status code
* <0 driver reported error
*
* Side effects:
*
* Call context:
* process thread
----------------------------------------------------------------*/
int hfa384x_drvr_test_command(hfa384x_t *hw, UINT32 test_mode,
UINT32 test_param)
{
int result = 0;
UINT16 cmd = (UINT16) test_mode;
UINT16 param = (UINT16) test_param;
DBFENTER;
/* Do i need a host2hfa... conversion ? */
result = hfa384x_docmd_wait(hw, cmd, param, 0, 0);
DBFEXIT;
return result;
}
/*----------------------------------------------------------------
* hfa384x_drvr_mmi_read
*
* Read mmi registers. mmi is intersil-speak for the baseband
* processor registers.
*
* Arguments:
* hw device structure
* register The test register to be accessed (must be even #).
*
* Returns:
* 0 success
* >0 f/w reported error - f/w status code
* <0 driver reported error
*
* Side effects:
*
* Call context:
* process thread
----------------------------------------------------------------*/
int hfa384x_drvr_mmi_read(hfa384x_t *hw, UINT32 addr)
{
int result = 0;
UINT16 cmd_code = (UINT16) 0x30;
UINT16 param = (UINT16) addr;
DBFENTER;
/* Do i need a host2hfa... conversion ? */
result = hfa384x_docmd_wait(hw, cmd_code, param, 0, 0);
DBFEXIT;
return result;
}
/*----------------------------------------------------------------
* hfa384x_drvr_mmi_write
*
* Read mmi registers. mmi is intersil-speak for the baseband
* processor registers.
*
* Arguments:
* hw device structure
* addr The test register to be accessed (must be even #).
* data The data value to write to the register.
*
* Returns:
* 0 success
* >0 f/w reported error - f/w status code
* <0 driver reported error
*
* Side effects:
*
* Call context:
* process thread
----------------------------------------------------------------*/
int
hfa384x_drvr_mmi_write(hfa384x_t *hw, UINT32 addr, UINT32 data)
{
int result = 0;
UINT16 cmd_code = (UINT16) 0x31;
UINT16 param0 = (UINT16) addr;
UINT16 param1 = (UINT16) data;
DBFENTER;
WLAN_LOG_DEBUG1(1,"mmi write : addr = 0x%08lx\n", addr);
WLAN_LOG_DEBUG1(1,"mmi write : data = 0x%08lx\n", data);
/* Do i need a host2hfa... conversion ? */
result = hfa384x_docmd_wait(hw, cmd_code, param0, param1, 0);
DBFEXIT;
return result;
}
/* TODO: determine if these will ever be needed */
@ -1975,3 +2093,97 @@ int hfa384x_docmd_wait( hfa384x_t *hw, UINT16 cmd, UINT16 parm0, UINT16 parm1, U
DBFEXIT;
return result;
}
#if defined(WLAN_STA)
/*----------------------------------------------------------------
* hfa384x_dl_cmd_wait
*
* Waits for availability of the Command register, then
* issues the given command. Then polls the Evstat register
* waiting for command completion. Timeouts shouldn't be
* possible since we're preventing overlapping commands and all
* commands should be cleared and acknowledged.
*
* This routine is only used for downloads. Since it doesn't lock out
* interrupts the system response is much better.
*
* Arguments:
* wlandev device structure
* cmd Command in host order
* parm0 Parameter0 in host order
* parm1 Parameter1 in host order
* parm2 Parameter2 in host order
*
* Returns:
* 0 success
* -ETIMEDOUT timed out waiting for register ready or
* command completion
* >0 command indicated error, Status and Resp0-2 are
* in hw structure.
*
* Side effects:
*
*
* Call context:
* process thread
----------------------------------------------------------------*/
int hfa384x_dl_docmd_wait( hfa384x_t *hw, UINT16 cmd, UINT16 parm0, UINT16 parm1, UINT16 parm2)
{
int result = -ETIMEDOUT;
UINT32 timeout;
UINT16 reg = 0;
DBFENTER;
/* wait for the busy bit to clear */
timeout = jiffies + 1*HZ;
reg = inw(HFA384x_CMD(hw->iobase));
while ( HFA384x_CMD_ISBUSY(hfa384x2host_16(reg)) &&
time_before( jiffies, timeout) ) {
reg = inw(HFA384x_CMD(hw->iobase));
}
if (!HFA384x_CMD_ISBUSY(hfa384x2host_16(reg))) {
/* busy bit clear, write command */
outw(host2hfa384x_16(parm0), HFA384x_PARAM0(hw->iobase));
outw(host2hfa384x_16(parm1), HFA384x_PARAM1(hw->iobase));
outw(host2hfa384x_16(parm2), HFA384x_PARAM2(hw->iobase));
hw->lastcmd = cmd;
outw(host2hfa384x_16(cmd), HFA384x_CMD(hw->iobase));
/* Now wait for completion */
if ( (HFA384x_CMD_CMDCODE_GET(hw->lastcmd) == HFA384x_CMDCODE_DOWNLD) ) {
/* dltimeout is in ms */
timeout = (((UINT32)hw->dltimeout) / 1000UL) * HZ;
if ( timeout > 0 ) {
timeout += jiffies;
} else {
timeout = jiffies + 1*HZ;
}
} else {
timeout = jiffies + 1*HZ;
}
reg = inw(HFA384x_EVSTAT(hw->iobase));
while ( !HFA384x_EVSTAT_ISCMD(hfa384x2host_16(reg)) &&
time_before(jiffies,timeout) ){
udelay(10);
reg = inw(HFA384x_EVSTAT(hw->iobase));
}
if ( HFA384x_EVSTAT_ISCMD(hfa384x2host_16(reg)) ) {
result = 0;
hw->status = inw(HFA384x_STATUS(hw->iobase));
hw->status = hfa384x2host_16(hw->status);
hw->resp0 = inw(HFA384x_RESP0(hw->iobase));
hw->resp0 = hfa384x2host_16(hw->resp0);
hw->resp1 = inw(HFA384x_RESP1(hw->iobase));
hw->resp1 = hfa384x2host_16(hw->resp1);
hw->resp2 = inw(HFA384x_RESP2(hw->iobase));
hw->resp2 = hfa384x2host_16(hw->resp2);
outw(host2hfa384x_16(HFA384x_EVACK_CMD),
HFA384x_EVACK(hw->iobase));
result = HFA384x_STATUS_RESULT_GET(hw->status);
}
}
DBFEXIT;
return result;
}
#endif

View File

@ -1098,6 +1098,121 @@ int prism2mgmt_auxport_write(wlandevice_t *wlandev, void *msgp)
return 0;
}
/*----------------------------------------------------------------
* prism2mgmt_test_command
*
* Puts the card into the desired test mode.
*
* Arguments:
* wlandev wlan device structure
* msgp ptr to msg buffer
*
* Returns:
* 0 success and done
* <0 success, but we're waiting for something to finish.
* >0 an error occurred while handling the message.
* Side effects:
*
* Call context:
* process thread (usually)
----------------------------------------------------------------*/
int prism2mgmt_test_command(wlandevice_t *wlandev, void *msgp)
{
prism2sta_priv_t *priv = (prism2sta_priv_t*)wlandev->priv;
hfa384x_t *hw = priv->hw;
p80211msg_p2req_test_command_t *msg = msgp;
DBFENTER;
msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
/* call some routine to execute the test command */
hfa384x_drvr_test_command(hw, msg->testcode.data, msg->testparam.data);
msg->resultcode.data = P80211ENUM_resultcode_success;
DBFEXIT;
return 0;
}
/*----------------------------------------------------------------
* prism2mgmt_mmi_read
*
* Read from one of the MMI registers.
*
* Arguments:
* wlandev wlan device structure
* msgp ptr to msg buffer
*
* Returns:
* 0 success and done
* <0 success, but we're waiting for something to finish.
* >0 an error occurred while handling the message.
* Side effects:
*
* Call context:
* process thread (usually)
----------------------------------------------------------------*/
int prism2mgmt_mmi_read(wlandevice_t *wlandev, void *msgp)
{
prism2sta_priv_t *priv = (prism2sta_priv_t*)wlandev->priv;
hfa384x_t *hw = priv->hw;
p80211msg_p2req_mmi_read_t *msg = msgp;
DBFENTER;
msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
/* call some routine to execute the test command */
hfa384x_drvr_mmi_read(hw, msg->addr.data);
/* I'm not sure if this is "architecturally" correct, but it
is expedient. */
msg->value.data = (UINT32) hw->resp0;
msg->resultcode.data = P80211ENUM_resultcode_success;
DBFEXIT;
return 0;
}
/*----------------------------------------------------------------
* prism2mgmt_mmi_write
*
* Write a data value to one of the MMI registers.
*
* Arguments:
* wlandev wlan device structure
* msgp ptr to msg buffer
*
* Returns:
* 0 success and done
* <0 success, but we're waiting for something to finish.
* >0 an error occurred while handling the message.
* Side effects:
*
* Call context:
* process thread (usually)
----------------------------------------------------------------*/
int prism2mgmt_mmi_write(wlandevice_t *wlandev, void *msgp)
{
prism2sta_priv_t *priv = (prism2sta_priv_t*)wlandev->priv;
hfa384x_t *hw = priv->hw;
p80211msg_p2req_mmi_write_t *msg = msgp;
DBFENTER;
msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
/* call some routine to execute the test command */
hfa384x_drvr_mmi_write(hw, msg->addr.data, msg->data.data);
msg->resultcode.data = P80211ENUM_resultcode_success;
DBFEXIT;
return 0;
}
/*----------------------------------------------------------------
* prism2mgmt_ramdl_state

View File

@ -683,6 +683,18 @@ int prism2sta_mlmerequest(wlandevice_t *wlandev, p80211msg_t *msg)
WLAN_LOG_DEBUG0(2,"Received mlme auxport_write request\n");
result = prism2mgmt_auxport_write(wlandev, msg);
break;
case DIDmsg_p2req_test_command :
WLAN_LOG_DEBUG0(0,"Received mlme test_command request\n");
result = prism2mgmt_test_command(wlandev, msg);
break;
case DIDmsg_p2req_mmi_read :
WLAN_LOG_DEBUG0(0,"Received mlme mmi_read request\n");
result = prism2mgmt_mmi_read(wlandev, msg);
break;
case DIDmsg_p2req_mmi_write :
WLAN_LOG_DEBUG0(0,"Received mlme mmi_write request\n");
result = prism2mgmt_mmi_write(wlandev, msg);
break;
case DIDmsg_p2req_ramdl_state :
WLAN_LOG_DEBUG0(2,"Received mlme ramdl_state request\n");
result = prism2mgmt_ramdl_state(wlandev, msg);

View File

@ -2000,6 +2000,9 @@ int hfa384x_drvr_setconfig(hfa384x_t *hw, UINT16 rid, void *buf, UINT16 len);
int hfa384x_drvr_setconfig16(hfa384x_t *hw, UINT16 rid, UINT16 *val);
int hfa384x_drvr_setconfig32(hfa384x_t *hw, UINT16 rid, UINT32 *val);
int hfa384x_drvr_readpda(hfa384x_t *hw, void *buf, UINT len);
int hfa384x_drvr_test_command(hfa384x_t *hw, UINT32 test_code, UINT32 test_param);
int hfa384x_drvr_mmi_read(hfa384x_t *hw, UINT32 address);
int hfa384x_drvr_mmi_write(hfa384x_t *hw, UINT32 address, UINT32 data);
int hfa384x_drvr_ramdl_enable(hfa384x_t *hw, UINT32 exeaddr);
int hfa384x_drvr_ramdl_disable(hfa384x_t *hw);
int hfa384x_drvr_ramdl_write(hfa384x_t *hw, UINT32 daddr, void* buf, UINT32 len);
@ -2009,6 +2012,10 @@ int hfa384x_drvr_flashdl_write(hfa384x_t *hw, UINT32 daddr, void* buf, UINT32 le
int hfa384x_docmd_wait( hfa384x_t *hw, UINT16 cmd, UINT16 parm0, UINT16 parm1, UINT16 parm2);
/* A separate version for downloads. */
int hfa384x_dl_docmd_wait( hfa384x_t *hw, UINT16 cmd, UINT16 parm0, UINT16 parm1, UINT16 parm2);
static inline int hfa384x_isgood_pdrcode(UINT16 pdrcode);
/*=============================================================*/

View File

@ -164,6 +164,9 @@ int prism2mgmt_readpda(wlandevice_t *wlandev, void *msgp);
int prism2mgmt_auxport_state(wlandevice_t *wlandev, void *msgp);
int prism2mgmt_auxport_read(wlandevice_t *wlandev, void *msgp);
int prism2mgmt_auxport_write(wlandevice_t *wlandev, void *msgp);
int prism2mgmt_test_command(wlandevice_t *wlandev, void *msgp);
int prism2mgmt_mmi_read(wlandevice_t *wlandev, void *msgp);
int prism2mgmt_mmi_write(wlandevice_t *wlandev, void *msgp);
int prism2mgmt_ramdl_state(wlandevice_t *wlandev, void *msgp);
int prism2mgmt_ramdl_write(wlandevice_t *wlandev, void *msgp);
int prism2mgmt_flashdl_state(wlandevice_t *wlandev, void *msgp);

View File

@ -2648,6 +2648,195 @@ p80211meta_t MKREQMETANAME(p2req_auxport_write)[] = {
UINT32 MKREQMETASIZE(p2req_auxport_write) =
sizeof(MKREQMETANAME(p2req_auxport_write))/sizeof(p80211meta_t);
/*--------------------------------------------------------------------*/
/* metadata for the p2req_test_command request message arguments */
extern UINT32 MKREQMETASIZE(p2req_test_command);
p80211meta_t MKREQMETANAME(p2req_test_command)[] = {
{
/* name */ (char *)&(MKREQMETASIZE(p2req_test_command)),
/* did */ 0,
/* flags */ 0,
/* min */ 0,
/* max */ 0,
/* maxlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ NULL,
/* fromtextptr */ NULL,
/* validfunptr */ NULL
},
{
/* name */ "testcode",
/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT),
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, ISREQUEST, 0UL),
/* min */ 0,
/* max */ 0,
/* maxlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_int,
/* fromtextptr */ p80211_fromtext_int,
/* validfunptr */ p80211_isvalid_int
},
{
/* name */ "testparam",
/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT),
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, ISREQUEST, 0UL),
/* min */ 0,
/* max */ 0,
/* maxlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_enumint,
/* fromtextptr */ p80211_fromtext_enumint,
/* validfunptr */ p80211_isvalid_enumint
},
{
/* name */ MKITEMNAME("resultcode"),
/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT),
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, 0UL, ISCONFIRM),
/* min */ 0,
/* max */ 0,
/* maxlen */ 0,
/* enumptr */ &MKENUMNAME(resultcode),
/* collptr */ NULL,
/* totextptr */ p80211_totext_enumint,
/* fromtextptr */ p80211_fromtext_enumint,
/* validfunptr */ p80211_isvalid_enumint
}
}; /* end of p2req_test_command request metadata list */
UINT32 MKREQMETASIZE(p2req_test_command) =
sizeof(MKREQMETANAME(p2req_test_command))/sizeof(p80211meta_t);
/*--------------------------------------------------------------------*/
/* metadata for the p2req_mmi_read request message arguments */
extern UINT32 MKREQMETASIZE(p2req_mmi_read);
p80211meta_t MKREQMETANAME(p2req_mmi_read)[] = {
{
/* name */ (char *)&(MKREQMETASIZE(p2req_mmi_read)),
/* did */ 0,
/* flags */ 0,
/* min */ 0,
/* max */ 0,
/* maxlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ NULL,
/* fromtextptr */ NULL,
/* validfunptr */ NULL
},
{
/* name */ "addr",
/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT),
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, ISREQUEST, 0UL),
/* min */ 0,
/* max */ 0,
/* maxlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_enumint,
/* fromtextptr */ p80211_fromtext_enumint,
/* validfunptr */ p80211_isvalid_enumint
},
{
/* name */ MKITEMNAME("value"),
/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT),
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, 0UL, ISCONFIRM),
/* min */ 0,
/* max */ 0,
/* maxlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_enumint,
/* fromtextptr */ p80211_fromtext_enumint,
/* validfunptr */ p80211_isvalid_enumint
},
{
/* name */ MKITEMNAME("resultcode"),
/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT),
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, 0UL, ISCONFIRM),
/* min */ 0,
/* max */ 0,
/* maxlen */ 0,
/* enumptr */ &MKENUMNAME(resultcode),
/* collptr */ NULL,
/* totextptr */ p80211_totext_enumint,
/* fromtextptr */ p80211_fromtext_enumint,
/* validfunptr */ p80211_isvalid_enumint
}
}; /* end of p2req_mmi_read request metadata list */
UINT32 MKREQMETASIZE(p2req_mmi_read) =
sizeof(MKREQMETANAME(p2req_mmi_read))/sizeof(p80211meta_t);
/*--------------------------------------------------------------------*/
/* metadata for the p2req_mmi_write request message arguments */
extern UINT32 MKREQMETASIZE(p2req_mmi_write);
p80211meta_t MKREQMETANAME(p2req_mmi_write)[] = {
{
/* name */ (char *)&(MKREQMETASIZE(p2req_mmi_write)),
/* did */ 0,
/* flags */ 0,
/* min */ 0,
/* max */ 0,
/* maxlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ NULL,
/* fromtextptr */ NULL,
/* validfunptr */ NULL
},
{
/* name */ "addr",
/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT),
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, ISREQUEST, 0UL),
/* min */ 0,
/* max */ 0,
/* maxlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_enumint,
/* fromtextptr */ p80211_fromtext_enumint,
/* validfunptr */ p80211_isvalid_enumint
},
{
/* name */ "data",
/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT),
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, ISREQUEST, 0UL),
/* min */ 0,
/* max */ 0,
/* maxlen */ 0,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ p80211_totext_enumint,
/* fromtextptr */ p80211_fromtext_enumint,
/* validfunptr */ p80211_isvalid_enumint
},
{
/* name */ MKITEMNAME("resultcode"),
/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT),
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, 0UL, ISCONFIRM),
/* min */ 0,
/* max */ 0,
/* maxlen */ 0,
/* enumptr */ &MKENUMNAME(resultcode),
/* collptr */ NULL,
/* totextptr */ p80211_totext_enumint,
/* fromtextptr */ p80211_fromtext_enumint,
/* validfunptr */ p80211_isvalid_enumint
}
}; /* end of p2req_mmi_write request metadata list */
UINT32 MKREQMETASIZE(p2req_mmi_write) =
sizeof(MKREQMETANAME(p2req_mmi_write))/sizeof(p80211meta_t);
/*--------------------------------------------------------------------*/
/* metadata for the p2req_ramdl_state request message arguments */
@ -2762,7 +2951,7 @@ p80211meta_t MKREQMETANAME(p2req_ramdl_write)[] = {
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, ISREQUEST, 0UL),
/* min */ 0,
/* max */ 0,
/* maxlen */ 1024,
/* maxlen */ 4096,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ NULL, /* data only handled by programs */
@ -2888,7 +3077,7 @@ p80211meta_t MKREQMETANAME(p2req_flashdl_write)[] = {
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, ISREQUEST, 0UL),
/* min */ 0,
/* max */ 0,
/* maxlen */ 1024,
/* maxlen */ 4096,
/* enumptr */ NULL,
/* collptr */ NULL,
/* totextptr */ NULL, /* data only handled by programs */
@ -3231,6 +3420,18 @@ grplistitem_t MKGRPMETANAME(p2req)[] = {
"p2req_auxport_write", /* addr, len[2-1024], datap */
MKREQMETANAME(p2req_auxport_write)
},
{
"p2req_test_command", /* testcode=UINT32 testparam=UINT32 */
MKREQMETANAME(p2req_test_command)
},
{
"p2req_mmi_read", /* cmd_code=UINT32 register=UINT32 */
MKREQMETANAME(p2req_mmi_read)
},
{
"p2req_mmi_write", /* cmd_code=UINT32 register=UINT32 */
MKREQMETANAME(p2req_mmi_write)
},
{
"p2req_ramdl_state", /* enable=true|false, exeaddr=UINT32 */
MKREQMETANAME(p2req_ramdl_state)