[PATCH 1/2] Apply Lident script for ft1000-usb.

Belisko Marek marek.belisko at gmail.com
Mon Sep 27 09:44:36 UTC 2010


Signed-off-by: Marek Belisko <marek.belisko at gmail.com>
---
 drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c   | 1412 ++++----
 .../staging/ft1000/ft1000-usb/ft1000_download.c    | 2223 ++++++------
 drivers/staging/ft1000/ft1000-usb/ft1000_hw.c      | 3950 ++++++++++----------
 drivers/staging/ft1000/ft1000-usb/ft1000_hw.h      |    6 +-
 drivers/staging/ft1000/ft1000-usb/ft1000_ioctl.h   |  132 +-
 drivers/staging/ft1000/ft1000-usb/ft1000_proc.c    |  335 +-
 drivers/staging/ft1000/ft1000-usb/ft1000_usb.c     |  373 +-
 drivers/staging/ft1000/ft1000-usb/ft1000_usb.h     |  426 +--
 8 files changed, 4569 insertions(+), 4288 deletions(-)

diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
b/drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
index 65087ce..27e2f5a 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
@@ -42,25 +42,27 @@
 //#include "ft1000_ioctl.h"

 void ft1000_DestroyDevice(struct net_device *dev);
-u16 ft1000_read_dpram16(struct ft1000_device *ft1000dev, USHORT indx,
PUCHAR buffer, u8 highlow);
-u16 ft1000_read_register(struct ft1000_device *ft1000dev, short*
Data, u16 nRegIndx);
-
-extern inline u16 ft1000_asic_read (struct net_device *dev, u16 offset);
-extern inline void ft1000_asic_write (struct net_device *dev, u16
offset, u16 value);
-extern void CardSendCommand(struct ft1000_device *ft1000dev, unsigned
short *ptempbuffer, int size);
-
-static int ft1000_ChOpen (struct inode *Inode, struct file *File);
-static unsigned int ft1000_ChPoll(struct file *file, poll_table *wait);
+u16 ft1000_read_dpram16(struct ft1000_device *ft1000dev, USHORT indx,
+			PUCHAR buffer, u8 highlow);
+u16 ft1000_read_register(struct ft1000_device *ft1000dev, short *Data,
+			 u16 nRegIndx);
+
+extern inline u16 ft1000_asic_read(struct net_device *dev, u16 offset);
+extern inline void ft1000_asic_write(struct net_device *dev, u16 offset,
+				     u16 value);
+extern void CardSendCommand(struct ft1000_device *ft1000dev,
+			    unsigned short *ptempbuffer, int size);
+
+static int ft1000_ChOpen(struct inode *Inode, struct file *File);
+static unsigned int ft1000_ChPoll(struct file *file, poll_table * wait);
 static int ft1000_ChIoctl(struct file *File, unsigned int Command,
-                           unsigned long Argument);
-static int ft1000_ChRelease (struct inode *Inode, struct file *File);
+			  unsigned long Argument);
+static int ft1000_ChRelease(struct inode *Inode, struct file *File);

 static int ft1000_flarion_cnt = 0;

 //need to looking usage of ft1000Handle

-
-
 // Global pointer to device object
 static struct ft1000_device *pdevobj[MAX_NUM_CARDS + 2];
 //static devfs_handle_t ft1000Handle[MAX_NUM_CARDS];
@@ -79,17 +81,13 @@ int numofmsgbuf = 0;
 //
 // Table of entry-point routines for char device
 //
-static struct file_operations ft1000fops =
-{
-    unlocked_ioctl:    ft1000_ChIoctl,
-    poll:     ft1000_ChPoll,
-    open:     ft1000_ChOpen,
-    release:  ft1000_ChRelease
+static struct file_operations ft1000fops = {
+unlocked_ioctl:ft1000_ChIoctl,
+poll:	ft1000_ChPoll,
+open:	ft1000_ChOpen,
+release:ft1000_ChRelease
 };

-
-
-
 //---------------------------------------------------------------------------
 // Function:    exec_mknod
 //
@@ -102,38 +100,38 @@ static struct file_operations ft1000fops =
 // Notes:
 //
 //---------------------------------------------------------------------------
-static int exec_mknod (void *pdata)
+static int exec_mknod(void *pdata)
 {
-    PFT1000_INFO info;
-    char mjnum[4];
-    char minornum[4];
-    char temp[32];
-    int retcode;
-//    int i;					//aelias [-] reason : unused variable
-    char *envp[] = { "HOME=/", "PATH=/usr/bin:/bin", NULL };
-    char *argv[]={"-m 666",temp,"c",mjnum,minornum,NULL};
-
-    info = pdata;
-    DEBUG("ft1000_chdev:exec_mknod is called with major number =
%d\n", info->DeviceMajor);
-    sprintf(temp, "%s%s", "/dev/", info->DeviceName) ;
-    sprintf(mjnum, "%d", info->DeviceMajor);
-    sprintf(minornum, "%d", info->CardNumber);
-
-    //char *argv[]={"mknod","-m 666",temp,"c",mjnum,minornum,NULL};
+	PFT1000_INFO info;
+	char mjnum[4];
+	char minornum[4];
+	char temp[32];
+	int retcode;
+//    int i;                                    //aelias [-] reason :
unused variable
+	char *envp[] = { "HOME=/", "PATH=/usr/bin:/bin", NULL };
+	char *argv[] = { "-m 666", temp, "c", mjnum, minornum, NULL };
+
+	info = pdata;
+	DEBUG("ft1000_chdev:exec_mknod is called with major number = %d\n",
+	      info->DeviceMajor);
+	sprintf(temp, "%s%s", "/dev/", info->DeviceName);
+	sprintf(mjnum, "%d", info->DeviceMajor);
+	sprintf(minornum, "%d", info->CardNumber);
+
+	//char *argv[]={"mknod","-m 666",temp,"c",mjnum,minornum,NULL};
 //    char *argv[]={"-m 666",temp,"c",mjnum,minornum,NULL};

-    //for (i=0; i<7;i++)
-    //    DEBUG("argv[%d]=%s\n", i, argv[i]);
-
-
-    retcode = call_usermodehelper ("/bin/mknod", argv, envp, 1);
-    if (retcode) {
-        DEBUG("ft1000_chdev:exec_mknod failed to make the node:
retcode = %d\n", retcode);
-    }
-
+	//for (i=0; i<7;i++)
+	//    DEBUG("argv[%d]=%s\n", i, argv[i]);

+	retcode = call_usermodehelper("/bin/mknod", argv, envp, 1);
+	if (retcode) {
+		DEBUG
+		    ("ft1000_chdev:exec_mknod failed to make the node: retcode = %d\n",
+		     retcode);
+	}

-    return retcode;
+	return retcode;

 }

@@ -143,32 +141,34 @@ static int exec_mknod (void *pdata)
 // Description: This module removes the FT1000 device file
 //
 //---------------------------------------------------------------------------
-static int rm_mknod (void *pdata)
+static int rm_mknod(void *pdata)
 {

-    PFT1000_INFO info;
-    //char *argv[4]={"rm", "-f", "/dev/FT1000", NULL};
-    int retcode;
-    char temp[32];
-    char *argv[]={"rm", "-f", temp, NULL};
+	PFT1000_INFO info;
+	//char *argv[4]={"rm", "-f", "/dev/FT1000", NULL};
+	int retcode;
+	char temp[32];
+	char *argv[] = { "rm", "-f", temp, NULL };

-    info = (PFT1000_INFO)pdata;
-    DEBUG("ft1000_chdev:rm_mknod is called for device %s\n", info->DeviceName);
-    sprintf(temp, "%s%s", "/dev/", info->DeviceName) ;
+	info = (PFT1000_INFO) pdata;
+	DEBUG("ft1000_chdev:rm_mknod is called for device %s\n",
+	      info->DeviceName);
+	sprintf(temp, "%s%s", "/dev/", info->DeviceName);

 //    char *argv[]={"rm", "-f", temp, NULL};

-    retcode = call_usermodehelper ("/bin/rm", argv, NULL, 1);
-    if (retcode) {
-        DEBUG("ft1000_chdev:rm_mknod failed to remove the node:
retcode = %d\n", retcode);
-    }
-    else
-        DEBUG("ft1000_chdev:rm_mknod done!\n");
-
+	retcode = call_usermodehelper("/bin/rm", argv, NULL, 1);
+	if (retcode) {
+		DEBUG
+		    ("ft1000_chdev:rm_mknod failed to remove the node: retcode = %d\n",
+		     retcode);
+	} else
+		DEBUG("ft1000_chdev:rm_mknod done!\n");

-    return retcode;
+	return retcode;

 }
+
 //---------------------------------------------------------------------------
 // Function:    ft1000_get_buffer
 //
@@ -181,30 +181,26 @@ static int rm_mknod (void *pdata)
 // Notes:
 //
 //---------------------------------------------------------------------------
-PDPRAM_BLK ft1000_get_buffer (struct list_head *bufflist)
+PDPRAM_BLK ft1000_get_buffer(struct list_head * bufflist)
 {
-    unsigned long flags;
-    PDPRAM_BLK ptr;
-
-    spin_lock_irqsave(&free_buff_lock, flags);
-    // Check if buffer is available
-    if ( list_empty(bufflist) ) {
-        DEBUG("ft1000_get_buffer:  No more buffer - %d\n", numofmsgbuf);
-        ptr = NULL;
-    }
-    else {
-        numofmsgbuf--;
-        ptr = list_entry(bufflist->next, DPRAM_BLK, list);
-        list_del(&ptr->list);
-        //DEBUG("ft1000_get_buffer: number of free msg buffers =
%d\n", numofmsgbuf);
-    }
-    spin_unlock_irqrestore(&free_buff_lock, flags);
-
-    return ptr;
-}
-
-
+	unsigned long flags;
+	PDPRAM_BLK ptr;
+
+	spin_lock_irqsave(&free_buff_lock, flags);
+	// Check if buffer is available
+	if (list_empty(bufflist)) {
+		DEBUG("ft1000_get_buffer:  No more buffer - %d\n", numofmsgbuf);
+		ptr = NULL;
+	} else {
+		numofmsgbuf--;
+		ptr = list_entry(bufflist->next, DPRAM_BLK, list);
+		list_del(&ptr->list);
+		//DEBUG("ft1000_get_buffer: number of free msg buffers = %d\n", numofmsgbuf);
+	}
+	spin_unlock_irqrestore(&free_buff_lock, flags);

+	return ptr;
+}

 //---------------------------------------------------------------------------
 // Function:    ft1000_free_buffer
@@ -218,16 +214,16 @@ PDPRAM_BLK ft1000_get_buffer (struct list_head *bufflist)
 // Notes:
 //
 //---------------------------------------------------------------------------
-void ft1000_free_buffer (PDPRAM_BLK pdpram_blk, struct list_head *plist)
+void ft1000_free_buffer(PDPRAM_BLK pdpram_blk, struct list_head *plist)
 {
-    unsigned long flags;
-
-    spin_lock_irqsave(&free_buff_lock, flags);
-    // Put memory back to list
-    list_add_tail(&pdpram_blk->list, plist);
-    numofmsgbuf++;
-    //DEBUG("ft1000_free_buffer: number of free msg buffers = %d\n",
numofmsgbuf);
-    spin_unlock_irqrestore(&free_buff_lock, flags);
+	unsigned long flags;
+
+	spin_lock_irqsave(&free_buff_lock, flags);
+	// Put memory back to list
+	list_add_tail(&pdpram_blk->list, plist);
+	numofmsgbuf++;
+	//DEBUG("ft1000_free_buffer: number of free msg buffers = %d\n", numofmsgbuf);
+	spin_unlock_irqrestore(&free_buff_lock, flags);
 }

 //---------------------------------------------------------------------------
@@ -244,62 +240,64 @@ void ft1000_free_buffer (PDPRAM_BLK pdpram_blk,
struct list_head *plist)
 //---------------------------------------------------------------------------
 int ft1000_CreateDevice(struct ft1000_device *dev)
 {
-    PFT1000_INFO info = netdev_priv(dev->net);
-    int result;
-    int i;
-    pid_t pid;
-
-    // make a new device name
-    sprintf(info->DeviceName, "%s%d", "FT100", info->CardNumber);
+	PFT1000_INFO info = netdev_priv(dev->net);
+	int result;
+	int i;
+	pid_t pid;

-    // Delete any existing FT1000 node
-    pid = kernel_thread (rm_mknod,(void *)info, 0);
-    msleep(1000);
+	// make a new device name
+	sprintf(info->DeviceName, "%s%d", "FT100", info->CardNumber);

-    DEBUG("ft1000_CreateDevice: number of instance = %d\n",
ft1000_flarion_cnt);
-    DEBUG("DeviceCreated = %x\n", info->DeviceCreated);
+	// Delete any existing FT1000 node
+	pid = kernel_thread(rm_mknod, (void *)info, 0);
+	msleep(1000);

-    //save the device info to global array
-    pdevobj[info->CardNumber] = dev;
+	DEBUG("ft1000_CreateDevice: number of instance = %d\n",
+	      ft1000_flarion_cnt);
+	DEBUG("DeviceCreated = %x\n", info->DeviceCreated);

-    DEBUG("ft1000_CreateDevice: ******SAVED pdevobj[%d]=%x\n",
info->CardNumber, (unsigned int)pdevobj[info->CardNumber]);	//aelias
[+] reason:up
+	//save the device info to global array
+	pdevobj[info->CardNumber] = dev;

-    if (info->DeviceCreated)
-    {
-	DEBUG("ft1000_CreateDevice: \"%s\" already registered\n", info->DeviceName);
-	return -EIO;
-    }
+	DEBUG("ft1000_CreateDevice: ******SAVED pdevobj[%d]=%x\n",
info->CardNumber, (unsigned int)pdevobj[info->CardNumber]);	//aelias
[+] reason:up

+	if (info->DeviceCreated) {
+		DEBUG("ft1000_CreateDevice: \"%s\" already registered\n",
+		      info->DeviceName);
+		return -EIO;
+	}

-    // register the device
-    DEBUG("ft1000_CreateDevice: \"%s\" device registration\n",
info->DeviceName);
-    info->DeviceMajor = 0;
-
-    result = register_chrdev(info->DeviceMajor, info->DeviceName, &ft1000fops);
-    if (result < 0)
-    {
-	DEBUG("ft1000_CreateDevice: unable to get major %d\n", info->DeviceMajor);
-	return result;
-    }
-
-    DEBUG("ft1000_CreateDevice: registered char device \"%s\"\n",
info->DeviceName);
+	// register the device
+	DEBUG("ft1000_CreateDevice: \"%s\" device registration\n",
+	      info->DeviceName);
+	info->DeviceMajor = 0;
+
+	result =
+	    register_chrdev(info->DeviceMajor, info->DeviceName, &ft1000fops);
+	if (result < 0) {
+		DEBUG("ft1000_CreateDevice: unable to get major %d\n",
+		      info->DeviceMajor);
+		return result;
+	}

-    // save a dynamic device major number
-    if (info->DeviceMajor == 0)
-    {
-	info->DeviceMajor = result;
-	DEBUG("ft1000_PcdCreateDevice: device major = %d\n", info->DeviceMajor);
-    }
+	DEBUG("ft1000_CreateDevice: registered char device \"%s\"\n",
+	      info->DeviceName);

-    // Create a thread to call user mode app to mknod
-    pid = kernel_thread (exec_mknod, (void *)info, 0);
+	// save a dynamic device major number
+	if (info->DeviceMajor == 0) {
+		info->DeviceMajor = result;
+		DEBUG("ft1000_PcdCreateDevice: device major = %d\n",
+		      info->DeviceMajor);
+	}
+	// Create a thread to call user mode app to mknod
+	pid = kernel_thread(exec_mknod, (void *)info, 0);

-    // initialize application information
-    info->appcnt = 0;
+	// initialize application information
+	info->appcnt = 0;

 //    if (ft1000_flarion_cnt == 0) {
 //
-//    	  DEBUG("Initialize free_buff_lock and freercvpool\n");
+//        DEBUG("Initialize free_buff_lock and freercvpool\n");
 //        spin_lock_init(&free_buff_lock);
 //
 //        // initialize a list of buffers to be use for queuing up
receive command data
@@ -317,33 +315,28 @@ int ft1000_CreateDevice(struct ft1000_device *dev)
 //        numofmsgbuf = NUM_OF_FREE_BUFFERS;
 //    }

-
-    // initialize application information
-    info->appcnt = 0;
-    for (i=0; i<MAX_NUM_APP; i++) {
-        info->app_info[i].nTxMsg = 0;
-        info->app_info[i].nRxMsg = 0;
-        info->app_info[i].nTxMsgReject = 0;
-        info->app_info[i].nRxMsgMiss = 0;
-        info->app_info[i].fileobject = 0;
-        info->app_info[i].app_id = i+1;
-        info->app_info[i].DspBCMsgFlag = 0;
-        info->app_info[i].NumOfMsg = 0;
-        init_waitqueue_head(&info->app_info[i].wait_dpram_msg);
-        INIT_LIST_HEAD (&info->app_info[i].app_sqlist);
-    }
-
-
-
+	// initialize application information
+	info->appcnt = 0;
+	for (i = 0; i < MAX_NUM_APP; i++) {
+		info->app_info[i].nTxMsg = 0;
+		info->app_info[i].nRxMsg = 0;
+		info->app_info[i].nTxMsgReject = 0;
+		info->app_info[i].nRxMsgMiss = 0;
+		info->app_info[i].fileobject = 0;
+		info->app_info[i].app_id = i + 1;
+		info->app_info[i].DspBCMsgFlag = 0;
+		info->app_info[i].NumOfMsg = 0;
+		init_waitqueue_head(&info->app_info[i].wait_dpram_msg);
+		INIT_LIST_HEAD(&info->app_info[i].app_sqlist);
+	}

 //    ft1000Handle[info->CardNumber] = devfs_register(NULL,
info->DeviceName, DEVFS_FL_AUTO_DEVNUM, 0, 0,
 //                                  S_IFCHR | S_IRUGO | S_IWUGO,
&ft1000fops, NULL);

+	info->DeviceCreated = TRUE;
+	ft1000_flarion_cnt++;

-    info->DeviceCreated = TRUE;
-    ft1000_flarion_cnt++;
-
-    return result;
+	return result;
 }

 //---------------------------------------------------------------------------
@@ -358,47 +351,49 @@ int ft1000_CreateDevice(struct ft1000_device *dev)
 //---------------------------------------------------------------------------
 void ft1000_DestroyDevice(struct net_device *dev)
 {
-    PFT1000_INFO info = netdev_priv(dev);
-    int result = 0;
-    pid_t pid;
-		int i;
-    PDPRAM_BLK pdpram_blk;
-    DPRAM_BLK *ptr;
-
-    DEBUG("ft1000_chdev:ft1000_DestroyDevice called\n");
-
+	PFT1000_INFO info = netdev_priv(dev);
+	int result = 0;
+	pid_t pid;
+	int i;
+	PDPRAM_BLK pdpram_blk;
+	DPRAM_BLK *ptr;

+	DEBUG("ft1000_chdev:ft1000_DestroyDevice called\n");

-    if (info->DeviceCreated)
-	{
-        ft1000_flarion_cnt--;
+	if (info->DeviceCreated) {
+		ft1000_flarion_cnt--;
 		unregister_chrdev(info->DeviceMajor, info->DeviceName);
-		DEBUG("ft1000_DestroyDevice: unregistered device \"%s\", result = %d\n",
-					   info->DeviceName, result);
-
-       pid = kernel_thread (rm_mknod, (void *)info, 0);
-
-        // Make sure we free any memory reserve for slow Queue
-        for (i=0; i<MAX_NUM_APP; i++) {
-            while (list_empty(&info->app_info[i].app_sqlist) == 0) {
-                pdpram_blk =
list_entry(info->app_info[i].app_sqlist.next, DPRAM_BLK, list);
-                list_del(&pdpram_blk->list);
-                ft1000_free_buffer(pdpram_blk, &freercvpool);
-
-            }
-            wake_up_interruptible(&info->app_info[i].wait_dpram_msg);
-        }
-
-        // Remove buffer allocated for receive command data
-        if (ft1000_flarion_cnt == 0) {
-            while (list_empty(&freercvpool) == 0) {
-                ptr = list_entry(freercvpool.next, DPRAM_BLK, list);
-                list_del(&ptr->list);
-                kfree(ptr->pbuffer);
-                kfree(ptr);
-            }
-        }
-
+		DEBUG
+		    ("ft1000_DestroyDevice: unregistered device \"%s\", result = %d\n",
+		     info->DeviceName, result);
+
+		pid = kernel_thread(rm_mknod, (void *)info, 0);
+
+		// Make sure we free any memory reserve for slow Queue
+		for (i = 0; i < MAX_NUM_APP; i++) {
+			while (list_empty(&info->app_info[i].app_sqlist) == 0) {
+				pdpram_blk =
+				    list_entry(info->app_info[i].app_sqlist.
+					       next, DPRAM_BLK, list);
+				list_del(&pdpram_blk->list);
+				ft1000_free_buffer(pdpram_blk, &freercvpool);
+
+			}
+			wake_up_interruptible(&info->app_info[i].
+					      wait_dpram_msg);
+		}
+
+		// Remove buffer allocated for receive command data
+		if (ft1000_flarion_cnt == 0) {
+			while (list_empty(&freercvpool) == 0) {
+				ptr =
+				    list_entry(freercvpool.next, DPRAM_BLK,
+					       list);
+				list_del(&ptr->list);
+				kfree(ptr->pbuffer);
+				kfree(ptr);
+			}
+		}
 //        devfs_unregister(ft1000Handle[info->CardNumber]);

 		info->DeviceCreated = FALSE;
@@ -406,7 +401,6 @@ void ft1000_DestroyDevice(struct net_device *dev)
 		pdevobj[info->CardNumber] = NULL;
 	}

-
 }

 //---------------------------------------------------------------------------
@@ -419,60 +413,58 @@ void ft1000_DestroyDevice(struct net_device *dev)
 // Notes:
 //
 //---------------------------------------------------------------------------
-static int ft1000_ChOpen (struct inode *Inode, struct file *File)
+static int ft1000_ChOpen(struct inode *Inode, struct file *File)
 {
-    PFT1000_INFO info;
-    int i,num;
-
-    DEBUG("ft1000_ChOpen called\n");
-    num = (MINOR(Inode->i_rdev) & 0xf);
-    DEBUG("ft1000_ChOpen: minor number=%d\n", num);
-
-    for (i=0; i<5; i++)
-        DEBUG("pdevobj[%d]=%x\n", i, (unsigned int)pdevobj[i]);
//aelias [+] reason: down
-
-    if ( pdevobj[num] != NULL )
-        //info = (PFT1000_INFO)(pdevobj[num]->net->priv);
-    	info = (FT1000_INFO *) netdev_priv (pdevobj[num]->net);
-    else
-    {
-        DEBUG("ft1000_ChOpen: can not find device object %d\n", num);
-        return -1;
-    }
-
-    DEBUG("f_owner = 0x%8x number of application = %d\n",
(u32)(&File->f_owner), info->appcnt );
-
-    // Check if maximum number of application exceeded
-    if (info->appcnt > MAX_NUM_APP) {
-        DEBUG("Maximum number of application exceeded\n");
-        return -EACCES;
-    }
-
-    // Search for available application info block
-    for (i=0; i<MAX_NUM_APP; i++) {
-        if ( (info->app_info[i].fileobject == 0) ) {
-            break;
-        }
-    }
-
-    // Fail due to lack of application info block
-    if (i == MAX_NUM_APP) {
-        DEBUG("Could not find an application info block\n");
-        return -EACCES;
-    }
-
-    info->appcnt++;
-    info->app_info[i].fileobject = (u32)(&File->f_owner);
-    info->app_info[i].nTxMsg = 0;
-    info->app_info[i].nRxMsg = 0;
-    info->app_info[i].nTxMsgReject = 0;
-    info->app_info[i].nRxMsgMiss = 0;
-
-    File->private_data = pdevobj[num]->net;
-
-    return 0;
-}
+	PFT1000_INFO info;
+	int i, num;
+
+	DEBUG("ft1000_ChOpen called\n");
+	num = (MINOR(Inode->i_rdev) & 0xf);
+	DEBUG("ft1000_ChOpen: minor number=%d\n", num);
+
+	for (i = 0; i < 5; i++)
+		DEBUG("pdevobj[%d]=%x\n", i, (unsigned int)pdevobj[i]);	//aelias
[+] reason: down
+
+	if (pdevobj[num] != NULL)
+		//info = (PFT1000_INFO)(pdevobj[num]->net->priv);
+		info = (FT1000_INFO *) netdev_priv(pdevobj[num]->net);
+	else {
+		DEBUG("ft1000_ChOpen: can not find device object %d\n", num);
+		return -1;
+	}

+	DEBUG("f_owner = 0x%8x number of application = %d\n",
+	      (u32) (&File->f_owner), info->appcnt);
+
+	// Check if maximum number of application exceeded
+	if (info->appcnt > MAX_NUM_APP) {
+		DEBUG("Maximum number of application exceeded\n");
+		return -EACCES;
+	}
+	// Search for available application info block
+	for (i = 0; i < MAX_NUM_APP; i++) {
+		if ((info->app_info[i].fileobject == 0)) {
+			break;
+		}
+	}
+
+	// Fail due to lack of application info block
+	if (i == MAX_NUM_APP) {
+		DEBUG("Could not find an application info block\n");
+		return -EACCES;
+	}
+
+	info->appcnt++;
+	info->app_info[i].fileobject = (u32) (&File->f_owner);
+	info->app_info[i].nTxMsg = 0;
+	info->app_info[i].nRxMsg = 0;
+	info->app_info[i].nTxMsgReject = 0;
+	info->app_info[i].nRxMsgMiss = 0;
+
+	File->private_data = pdevobj[num]->net;
+
+	return 0;
+}

 //---------------------------------------------------------------------------
 // Function:    ft1000_ChPoll
@@ -485,43 +477,45 @@ static int ft1000_ChOpen (struct inode *Inode,
struct file *File)
 //
 //---------------------------------------------------------------------------

-static unsigned int ft1000_ChPoll(struct file *file, poll_table *wait)
+static unsigned int ft1000_ChPoll(struct file *file, poll_table * wait)
 {
-    struct net_device *dev = file->private_data;
-    PFT1000_INFO info;
-    int i;
-
-    //DEBUG("ft1000_ChPoll called\n");
-    if (ft1000_flarion_cnt == 0) {
-        DEBUG("FT1000:ft1000_ChPoll called when ft1000_flarion_cnt is zero\n");
-        return (-EBADF);
-    }
-
-	info = (FT1000_INFO *) netdev_priv (dev);
-
-    // Search for matching file object
-    for (i=0; i<MAX_NUM_APP; i++) {
-        if ( info->app_info[i].fileobject == (u32)(&file->f_owner) ) {
-            //DEBUG("FT1000:ft1000_ChIoctl: Message is for AppId =
%d\n", info->app_info[i].app_id);
-            break;
-        }
-    }
-
-    // Could not find application info block
-    if (i == MAX_NUM_APP) {
-        DEBUG("FT1000:ft1000_ChIoctl:Could not find application info block\n");
-        return ( -EACCES );
-    }
-
-    if (list_empty(&info->app_info[i].app_sqlist) == 0) {
-        DEBUG("FT1000:ft1000_ChPoll:Message detected in slow queue\n");
-        return(POLLIN | POLLRDNORM | POLLPRI);
-    }
-
-    poll_wait (file, &info->app_info[i].wait_dpram_msg, wait);
-    //DEBUG("FT1000:ft1000_ChPoll:Polling for data from DSP\n");
-
-    return (0);
+	struct net_device *dev = file->private_data;
+	PFT1000_INFO info;
+	int i;
+
+	//DEBUG("ft1000_ChPoll called\n");
+	if (ft1000_flarion_cnt == 0) {
+		DEBUG
+		    ("FT1000:ft1000_ChPoll called when ft1000_flarion_cnt is zero\n");
+		return (-EBADF);
+	}
+
+	info = (FT1000_INFO *) netdev_priv(dev);
+
+	// Search for matching file object
+	for (i = 0; i < MAX_NUM_APP; i++) {
+		if (info->app_info[i].fileobject == (u32) (&file->f_owner)) {
+			//DEBUG("FT1000:ft1000_ChIoctl: Message is for AppId = %d\n",
info->app_info[i].app_id);
+			break;
+		}
+	}
+
+	// Could not find application info block
+	if (i == MAX_NUM_APP) {
+		DEBUG
+		    ("FT1000:ft1000_ChIoctl:Could not find application info block\n");
+		return (-EACCES);
+	}
+
+	if (list_empty(&info->app_info[i].app_sqlist) == 0) {
+		DEBUG("FT1000:ft1000_ChPoll:Message detected in slow queue\n");
+		return (POLLIN | POLLRDNORM | POLLPRI);
+	}
+
+	poll_wait(file, &info->app_info[i].wait_dpram_msg, wait);
+	//DEBUG("FT1000:ft1000_ChPoll:Polling for data from DSP\n");
+
+	return (0);
 }

 //---------------------------------------------------------------------------
@@ -534,349 +528,435 @@ static unsigned int ft1000_ChPoll(struct file
*file, poll_table *wait)
 // Notes:
 //
 //---------------------------------------------------------------------------
-static int ft1000_ChIoctl (struct file *File, unsigned int Command,
-                           unsigned long Argument)
+static int ft1000_ChIoctl(struct file *File, unsigned int Command,
+			  unsigned long Argument)
 {
-    struct net_device *dev;
-    PFT1000_INFO info;
-    struct ft1000_device *ft1000dev;
-    int result=0;
-    int cmd;
-    int i;
-    u16 tempword;
-    unsigned long flags;
-    struct timeval tv;
-    IOCTL_GET_VER get_ver_data;
-    IOCTL_GET_DSP_STAT get_stat_data;
-    u8 ConnectionMsg[] =
{0x00,0x44,0x10,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x93,0x64,
-
0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x0a,
-
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-
0x00,0x00,0x02,0x37,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x01,0x7f,0x00,
-                          0x00,0x01,0x00,0x00};
-
-    unsigned short ledStat=0;
-    unsigned short conStat=0;
-
-    //DEBUG("ft1000_ChIoctl called\n");
-
-    if (ft1000_flarion_cnt == 0) {
-        DEBUG("FT1000:ft1000_ChIoctl called when ft1000_flarion_cnt
is zero\n");
-        return (-EBADF);
-    }
-
-    //DEBUG("FT1000:ft1000_ChIoctl:Command = 0x%x Argument =
0x%8x\n", Command, (u32)Argument);
-
-    dev = File->private_data;
-	info = (FT1000_INFO *) netdev_priv (dev);
-    ft1000dev = info->pFt1000Dev;
-    cmd = _IOC_NR(Command);
-    //DEBUG("FT1000:ft1000_ChIoctl:cmd = 0x%x\n", cmd);
-
-    // process the command
-    switch (cmd) {
-    case IOCTL_REGISTER_CMD:
-            DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_REGISTER called\n");
-            result = get_user(tempword, (unsigned short *)Argument);
-            if (result) {
-                DEBUG("result = %d failed to get_user\n", result);
-                break;
-            }
-            if (tempword == DSPBCMSGID) {
-                // Search for matching file object
-                for (i=0; i<MAX_NUM_APP; i++) {
-                    if ( info->app_info[i].fileobject ==
(u32)(&File->f_owner) ) {
-                        info->app_info[i].DspBCMsgFlag = 1;
-                        DEBUG("FT1000:ft1000_ChIoctl:Registered for
broadcast messages\n");
-                        break;
-                    }
-                }
-            }
-            break;
-
-    case IOCTL_GET_VER_CMD:
-        DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_GET_VER called\n");
-
-        get_ver_data.drv_ver = FT1000_DRV_VER;
-
-        if (copy_to_user((PIOCTL_GET_VER)Argument, &get_ver_data,
sizeof(get_ver_data)) ) {
-            DEBUG("FT1000:ft1000_ChIoctl: copy fault occurred\n");
-            result = -EFAULT;
-            break;
-        }
-
-        DEBUG("FT1000:ft1000_ChIoctl:driver version =
0x%x\n",(unsigned int)get_ver_data.drv_ver);
-
-        break;
-    case IOCTL_CONNECT:
-        // Connect Message
-        DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_CONNECT\n");
-        ConnectionMsg[79] = 0xfc;
-			   CardSendCommand(ft1000dev, (unsigned short *)ConnectionMsg, 0x4c);
-
-        break;
-    case IOCTL_DISCONNECT:
-        // Disconnect Message
-        DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_DISCONNECT\n");
-        ConnectionMsg[79] = 0xfd;
-			   CardSendCommand(ft1000dev, (unsigned short *)ConnectionMsg, 0x4c);
-        break;
-    case IOCTL_GET_DSP_STAT_CMD:
-        //DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_GET_DSP_STAT called\n");
-
-        memcpy(get_stat_data.DspVer, info->DspVer, DSPVERSZ);
-        memcpy(get_stat_data.HwSerNum, info->HwSerNum, HWSERNUMSZ);
-        memcpy(get_stat_data.Sku, info->Sku, SKUSZ);
-        memcpy(get_stat_data.eui64, info->eui64, EUISZ);
-
-            if (info->ProgConStat != 0xFF) {
-                ft1000_read_dpram16(ft1000dev, FT1000_MAG_DSP_LED,
(PUCHAR)&ledStat, FT1000_MAG_DSP_LED_INDX);
-                get_stat_data.LedStat = ntohs(ledStat);
-                DEBUG("FT1000:ft1000_ChIoctl: LedStat = 0x%x\n",
get_stat_data.LedStat);
-                ft1000_read_dpram16(ft1000dev,
FT1000_MAG_DSP_CON_STATE, (PUCHAR)&conStat,
FT1000_MAG_DSP_CON_STATE_INDX);
-                get_stat_data.ConStat = ntohs(conStat);
-                DEBUG("FT1000:ft1000_ChIoctl: ConStat = 0x%x\n",
get_stat_data.ConStat);
-            }
-            else {
-                get_stat_data.ConStat = 0x0f;
-            }
-
-
-        get_stat_data.nTxPkts = info->stats.tx_packets;
-        get_stat_data.nRxPkts = info->stats.rx_packets;
-        get_stat_data.nTxBytes = info->stats.tx_bytes;
-        get_stat_data.nRxBytes = info->stats.rx_bytes;
-        do_gettimeofday ( &tv );
-        get_stat_data.ConTm = (u32)(tv.tv_sec - info->ConTm);
-        DEBUG("Connection Time = %d\n", (int)get_stat_data.ConTm);
-        if (copy_to_user((PIOCTL_GET_DSP_STAT)Argument,
&get_stat_data, sizeof(get_stat_data)) ) {
-            DEBUG("FT1000:ft1000_ChIoctl: copy fault occurred\n");
-            result = -EFAULT;
-            break;
-        }
-        DEBUG("ft1000_chioctl: GET_DSP_STAT succeed\n");
-        break;
-    case IOCTL_SET_DPRAM_CMD:
-        {
-            IOCTL_DPRAM_BLK dpram_data;
-            //IOCTL_DPRAM_COMMAND dpram_command;
-            USHORT qtype;
-            USHORT msgsz;
-            PPSEUDO_HDR ppseudo_hdr;
-            PUSHORT pmsg;
-            USHORT total_len;
-            USHORT app_index;
-            u16 status;
-
-            //DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_SET_DPRAM called\n");
-
-
-            if (ft1000_flarion_cnt == 0) {
-                return (-EBADF);
-            }
-
-            if (info->DrvMsgPend) {
-                return (-ENOTTY);
-            }
-
-            if ( (info->DspAsicReset) || (info->fProvComplete == 0) ) {
-                return (-EACCES);
-            }
-
-            info->fAppMsgPend = 1;
-
-            if (info->CardReady) {
-
-               //DEBUG("FT1000:ft1000_ChIoctl: try to SET_DPRAM \n");
-
-                // Get the length field to see how many bytes to copy
-                result = get_user(msgsz, (unsigned short *)Argument);
-                msgsz = ntohs (msgsz);
-                //DEBUG("FT1000:ft1000_ChIoctl: length of message =
%d\n", msgsz);
-
-                if (msgsz > MAX_CMD_SQSIZE) {
-                    DEBUG("FT1000:ft1000_ChIoctl: bad message length
= %d\n", msgsz);
-                    result = -EINVAL;
-                    break;
-                }
-
-                //if ( copy_from_user(&(dpram_command.dpram_blk),
(PIOCTL_DPRAM_BLK)Argument, msgsz+2) ) {
-                if ( copy_from_user(&dpram_data,
(PIOCTL_DPRAM_BLK)Argument, msgsz+2) ) {
-                    DEBUG("FT1000:ft1000_ChIoctl: copy fault occurred\n");
-                    result = -EFAULT;
-                }
-                else {
+	struct net_device *dev;
+	PFT1000_INFO info;
+	struct ft1000_device *ft1000dev;
+	int result = 0;
+	int cmd;
+	int i;
+	u16 tempword;
+	unsigned long flags;
+	struct timeval tv;
+	IOCTL_GET_VER get_ver_data;
+	IOCTL_GET_DSP_STAT get_stat_data;
+	u8 ConnectionMsg[] =
+	    { 0x00, 0x44, 0x10, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+   0x00, 0x00, 0x00, 0x93, 0x64,
+		0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+		    0x00, 0x05, 0x00, 0x00, 0x00, 0x0a,
+		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+		    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00,
+		    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+		0x00, 0x00, 0x02, 0x37, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
+		    0x00, 0x01, 0x00, 0x01, 0x7f, 0x00,
+		0x00, 0x01, 0x00, 0x00
+	};
+
+	unsigned short ledStat = 0;
+	unsigned short conStat = 0;
+
+	//DEBUG("ft1000_ChIoctl called\n");
+
+	if (ft1000_flarion_cnt == 0) {
+		DEBUG
+		    ("FT1000:ft1000_ChIoctl called when ft1000_flarion_cnt is zero\n");
+		return (-EBADF);
+	}
+	//DEBUG("FT1000:ft1000_ChIoctl:Command = 0x%x Argument = 0x%8x\n",
Command, (u32)Argument);
+
+	dev = File->private_data;
+	info = (FT1000_INFO *) netdev_priv(dev);
+	ft1000dev = info->pFt1000Dev;
+	cmd = _IOC_NR(Command);
+	//DEBUG("FT1000:ft1000_ChIoctl:cmd = 0x%x\n", cmd);
+
+	// process the command
+	switch (cmd) {
+	case IOCTL_REGISTER_CMD:
+		DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_REGISTER called\n");
+		result = get_user(tempword, (unsigned short *)Argument);
+		if (result) {
+			DEBUG("result = %d failed to get_user\n", result);
+			break;
+		}
+		if (tempword == DSPBCMSGID) {
+			// Search for matching file object
+			for (i = 0; i < MAX_NUM_APP; i++) {
+				if (info->app_info[i].fileobject ==
+				    (u32) (&File->f_owner)) {
+					info->app_info[i].DspBCMsgFlag = 1;
+					DEBUG
+					    ("FT1000:ft1000_ChIoctl:Registered for broadcast messages\n");
+					break;
+				}
+			}
+		}
+		break;
+
+	case IOCTL_GET_VER_CMD:
+		DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_GET_VER called\n");
+
+		get_ver_data.drv_ver = FT1000_DRV_VER;
+
+		if (copy_to_user
+		    ((PIOCTL_GET_VER) Argument, &get_ver_data,
+		     sizeof(get_ver_data))) {
+			DEBUG("FT1000:ft1000_ChIoctl: copy fault occurred\n");
+			result = -EFAULT;
+			break;
+		}
+
+		DEBUG("FT1000:ft1000_ChIoctl:driver version = 0x%x\n",
+		      (unsigned int)get_ver_data.drv_ver);
+
+		break;
+	case IOCTL_CONNECT:
+		// Connect Message
+		DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_CONNECT\n");
+		ConnectionMsg[79] = 0xfc;
+		CardSendCommand(ft1000dev, (unsigned short *)ConnectionMsg,
+				0x4c);
+
+		break;
+	case IOCTL_DISCONNECT:
+		// Disconnect Message
+		DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_DISCONNECT\n");
+		ConnectionMsg[79] = 0xfd;
+		CardSendCommand(ft1000dev, (unsigned short *)ConnectionMsg,
+				0x4c);
+		break;
+	case IOCTL_GET_DSP_STAT_CMD:
+		//DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_GET_DSP_STAT called\n");
+
+		memcpy(get_stat_data.DspVer, info->DspVer, DSPVERSZ);
+		memcpy(get_stat_data.HwSerNum, info->HwSerNum, HWSERNUMSZ);
+		memcpy(get_stat_data.Sku, info->Sku, SKUSZ);
+		memcpy(get_stat_data.eui64, info->eui64, EUISZ);
+
+		if (info->ProgConStat != 0xFF) {
+			ft1000_read_dpram16(ft1000dev, FT1000_MAG_DSP_LED,
+					    (PUCHAR) & ledStat,
+					    FT1000_MAG_DSP_LED_INDX);
+			get_stat_data.LedStat = ntohs(ledStat);
+			DEBUG("FT1000:ft1000_ChIoctl: LedStat = 0x%x\n",
+			      get_stat_data.LedStat);
+			ft1000_read_dpram16(ft1000dev, FT1000_MAG_DSP_CON_STATE,
+					    (PUCHAR) & conStat,
+					    FT1000_MAG_DSP_CON_STATE_INDX);
+			get_stat_data.ConStat = ntohs(conStat);
+			DEBUG("FT1000:ft1000_ChIoctl: ConStat = 0x%x\n",
+			      get_stat_data.ConStat);
+		} else {
+			get_stat_data.ConStat = 0x0f;
+		}
+
+		get_stat_data.nTxPkts = info->stats.tx_packets;
+		get_stat_data.nRxPkts = info->stats.rx_packets;
+		get_stat_data.nTxBytes = info->stats.tx_bytes;
+		get_stat_data.nRxBytes = info->stats.rx_bytes;
+		do_gettimeofday(&tv);
+		get_stat_data.ConTm = (u32) (tv.tv_sec - info->ConTm);
+		DEBUG("Connection Time = %d\n", (int)get_stat_data.ConTm);
+		if (copy_to_user
+		    ((PIOCTL_GET_DSP_STAT) Argument, &get_stat_data,
+		     sizeof(get_stat_data))) {
+			DEBUG("FT1000:ft1000_ChIoctl: copy fault occurred\n");
+			result = -EFAULT;
+			break;
+		}
+		DEBUG("ft1000_chioctl: GET_DSP_STAT succeed\n");
+		break;
+	case IOCTL_SET_DPRAM_CMD:
+		{
+			IOCTL_DPRAM_BLK dpram_data;
+			//IOCTL_DPRAM_COMMAND dpram_command;
+			USHORT qtype;
+			USHORT msgsz;
+			PPSEUDO_HDR ppseudo_hdr;
+			PUSHORT pmsg;
+			USHORT total_len;
+			USHORT app_index;
+			u16 status;
+
+			//DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_SET_DPRAM called\n");
+
+			if (ft1000_flarion_cnt == 0) {
+				return (-EBADF);
+			}
+
+			if (info->DrvMsgPend) {
+				return (-ENOTTY);
+			}
+
+			if ((info->DspAsicReset) || (info->fProvComplete == 0)) {
+				return (-EACCES);
+			}
+
+			info->fAppMsgPend = 1;
+
+			if (info->CardReady) {
+
+				//DEBUG("FT1000:ft1000_ChIoctl: try to SET_DPRAM \n");
+
+				// Get the length field to see how many bytes to copy
+				result =
+				    get_user(msgsz, (unsigned short *)Argument);
+				msgsz = ntohs(msgsz);
+				//DEBUG("FT1000:ft1000_ChIoctl: length of message = %d\n", msgsz);
+
+				if (msgsz > MAX_CMD_SQSIZE) {
+					DEBUG
+					    ("FT1000:ft1000_ChIoctl: bad message length = %d\n",
+					     msgsz);
+					result = -EINVAL;
+					break;
+				}
+				//if ( copy_from_user(&(dpram_command.dpram_blk),
(PIOCTL_DPRAM_BLK)Argument, msgsz+2) ) {
+				if (copy_from_user
+				    (&dpram_data, (PIOCTL_DPRAM_BLK) Argument,
+				     msgsz + 2)) {
+					DEBUG
+					    ("FT1000:ft1000_ChIoctl: copy fault occurred\n");
+					result = -EFAULT;
+				} else {
 #if 0
-                    // whc - for debugging only
-                    ptr = (char *)&dpram_data;
-                    for (i=0; i<msgsz; i++) {
-                        DEBUG(1,"FT1000:ft1000_ChIoctl: data %d =
0x%x\n", i, *ptr++);
-                    }
+					// whc - for debugging only
+					ptr = (char *)&dpram_data;
+					for (i = 0; i < msgsz; i++) {
+						DEBUG(1,
+						      "FT1000:ft1000_ChIoctl: data %d = 0x%x\n",
+						      i, *ptr++);
+					}
 #endif
-                    // Check if this message came from a registered application
-                    for (i=0; i<MAX_NUM_APP; i++) {
-                        if ( info->app_info[i].fileobject ==
(u32)(&File->f_owner) ) {
-                            break;
-                        }
-                    }
-                    if (i==MAX_NUM_APP) {
-                        DEBUG("FT1000:No matching application fileobject\n");
-                        result = -EINVAL;
-                        break;
-                    }
-                    app_index = i;
-
-                    // Check message qtype type which is the lower
byte within qos_class
-                    //qtype =
ntohs(dpram_command.dpram_blk.pseudohdr.qos_class) & 0xff;
-                    qtype = ntohs(dpram_data.pseudohdr.qos_class) & 0xff;
-                    //DEBUG("FT1000_ft1000_ChIoctl: qtype = %d\n", qtype);
-                    if (qtype) {
-                    }
-                    else {
-                        // Put message into Slow Queue
-                        // Only put a message into the DPRAM if msg
doorbell is available
-                        status = ft1000_read_register(ft1000dev,
&tempword, FT1000_REG_DOORBELL);
-                        //DEBUG("FT1000_ft1000_ChIoctl: READ REGISTER
tempword=%x\n", tempword);
-                        if (tempword & FT1000_DB_DPRAM_TX) {
-                            // Suspend for 2ms and try again due to
DSP doorbell busy
-                            mdelay(2);
-                            status = ft1000_read_register(ft1000dev,
&tempword, FT1000_REG_DOORBELL);
-                            if (tempword & FT1000_DB_DPRAM_TX) {
-                                // Suspend for 1ms and try again due
to DSP doorbell busy
-                                mdelay(1);
-                                status =
ft1000_read_register(ft1000dev, &tempword, FT1000_REG_DOORBELL);
-                                if (tempword & FT1000_DB_DPRAM_TX) {
-                                    status =
ft1000_read_register(ft1000dev, &tempword, FT1000_REG_DOORBELL);
-                                    if (tempword & FT1000_DB_DPRAM_TX) {
-                                        // Suspend for 3ms and try
again due to DSP doorbell busy
-                                        mdelay(3);
-                                        status =
ft1000_read_register(ft1000dev, &tempword, FT1000_REG_DOORBELL);
-                                        if (tempword & FT1000_DB_DPRAM_TX) {
-
DEBUG("FT1000:ft1000_ChIoctl:Doorbell not available\n");
-                                            result = -ENOTTY;
-                                            break;
-                                        }
-                                    }
-                                }
-                            }
-                        }
-
-                        //DEBUG("FT1000_ft1000_ChIoctl: finished
reading register\n");
-
-                        // Make sure we are within the limits of the
slow queue memory limitation
-                        if ( (msgsz < MAX_CMD_SQSIZE) && (msgsz > PSEUDOSZ) ) {
-                            // Need to put sequence number plus new
checksum for message
-                            //pmsg =
(PUSHORT)&dpram_command.dpram_blk.pseudohdr;
-                            pmsg = (PUSHORT)&dpram_data.pseudohdr;
-                            ppseudo_hdr = (PPSEUDO_HDR)pmsg;
-                            total_len = msgsz+2;
-                            if (total_len & 0x1) {
-                                total_len++;
-                            }
-
-                            // Insert slow queue sequence number
-                            ppseudo_hdr->seq_num = info->squeseqnum++;
-                            ppseudo_hdr->portsrc =
info->app_info[app_index].app_id;
-                            // Calculate new checksum
-                            ppseudo_hdr->checksum = *pmsg++;
-                            //DEBUG("checksum = 0x%x\n",
ppseudo_hdr->checksum);
-                            for (i=1; i<7; i++) {
-                                ppseudo_hdr->checksum ^= *pmsg++;
-                                //DEBUG("checksum = 0x%x\n",
ppseudo_hdr->checksum);
-                            }
-                            pmsg++;
-                            ppseudo_hdr = (PPSEUDO_HDR)pmsg;
+					// Check if this message came from a registered application
+					for (i = 0; i < MAX_NUM_APP; i++) {
+						if (info->app_info[i].
+						    fileobject ==
+						    (u32) (&File->f_owner)) {
+							break;
+						}
+					}
+					if (i == MAX_NUM_APP) {
+						DEBUG
+						    ("FT1000:No matching application fileobject\n");
+						result = -EINVAL;
+						break;
+					}
+					app_index = i;
+
+					// Check message qtype type which is the lower byte within qos_class
+					//qtype = ntohs(dpram_command.dpram_blk.pseudohdr.qos_class) & 0xff;
+					qtype =
+					    ntohs(dpram_data.pseudohdr.
+						  qos_class) & 0xff;
+					//DEBUG("FT1000_ft1000_ChIoctl: qtype = %d\n", qtype);
+					if (qtype) {
+					} else {
+						// Put message into Slow Queue
+						// Only put a message into the DPRAM if msg doorbell is available
+						status =
+						    ft1000_read_register
+						    (ft1000dev, &tempword,
+						     FT1000_REG_DOORBELL);
+						//DEBUG("FT1000_ft1000_ChIoctl: READ REGISTER tempword=%x\n", tempword);
+						if (tempword &
+						    FT1000_DB_DPRAM_TX) {
+							// Suspend for 2ms and try again due to DSP doorbell busy
+							mdelay(2);
+							status =
+							    ft1000_read_register
+							    (ft1000dev,
+							     &tempword,
+							     FT1000_REG_DOORBELL);
+							if (tempword &
+							    FT1000_DB_DPRAM_TX)
+							{
+								// Suspend for 1ms and try again due to DSP doorbell busy
+								mdelay(1);
+								status =
+								    ft1000_read_register
+								    (ft1000dev,
+								     &tempword,
+								     FT1000_REG_DOORBELL);
+								if (tempword &
+								    FT1000_DB_DPRAM_TX)
+								{
+									status =
+									    ft1000_read_register
+									    (ft1000dev,
+									     &tempword,
+									     FT1000_REG_DOORBELL);
+									if (tempword & FT1000_DB_DPRAM_TX) {
+										// Suspend for 3ms and try again due to DSP doorbell busy
+										mdelay
+										    (3);
+										status
+										    =
+										    ft1000_read_register
+										    (ft1000dev,
+										     &tempword,
+										     FT1000_REG_DOORBELL);
+										if (tempword & FT1000_DB_DPRAM_TX) {
+											DEBUG
+											    ("FT1000:ft1000_ChIoctl:Doorbell not available\n");
+											result
+											    =
+											    -ENOTTY;
+											break;
+										}
+									}
+								}
+							}
+						}
+						//DEBUG("FT1000_ft1000_ChIoctl: finished reading register\n");
+
+						// Make sure we are within the limits of the slow queue memory limitation
+						if ((msgsz < MAX_CMD_SQSIZE)
+						    && (msgsz > PSEUDOSZ)) {
+							// Need to put sequence number plus new checksum for message
+							//pmsg = (PUSHORT)&dpram_command.dpram_blk.pseudohdr;
+							pmsg =
+							    (PUSHORT) &
+							    dpram_data.
+							    pseudohdr;
+							ppseudo_hdr =
+							    (PPSEUDO_HDR) pmsg;
+							total_len = msgsz + 2;
+							if (total_len & 0x1) {
+								total_len++;
+							}
+							// Insert slow queue sequence number
+							ppseudo_hdr->seq_num =
+							    info->squeseqnum++;
+							ppseudo_hdr->portsrc =
+							    info->
+							    app_info[app_index].
+							    app_id;
+							// Calculate new checksum
+							ppseudo_hdr->checksum =
+							    *pmsg++;
+							//DEBUG("checksum = 0x%x\n", ppseudo_hdr->checksum);
+							for (i = 1; i < 7; i++) {
+								ppseudo_hdr->
+								    checksum ^=
+								    *pmsg++;
+								//DEBUG("checksum = 0x%x\n", ppseudo_hdr->checksum);
+							}
+							pmsg++;
+							ppseudo_hdr =
+							    (PPSEUDO_HDR) pmsg;
 #if 0
-                            ptr = (char *)&dpram_data;
-                            DEBUG("FT1000:ft1000_ChIoctl: Command Send\n");
-                            for (i=0; i<total_len; i++) {
-                                DEBUG("FT1000:ft1000_ChIoctl: data %d
= 0x%x\n", i, *ptr++);
-                            }
+							ptr =
+							    (char *)&dpram_data;
+							DEBUG
+							    ("FT1000:ft1000_ChIoctl: Command Send\n");
+							for (i = 0;
+							     i < total_len;
+							     i++) {
+								DEBUG
+								    ("FT1000:ft1000_ChIoctl: data %d = 0x%x\n",
+								     i, *ptr++);
+							}
 #endif
-                            //dpram_command.extra = 0;
-
-                            //CardSendCommand(ft1000dev,(unsigned
char*)&dpram_command,total_len+2);
-                            CardSendCommand(ft1000dev,(unsigned
short*)&dpram_data,total_len+2);
-
-
-                            info->app_info[app_index].nTxMsg++;
-                            break;
-                        }
-                        else {
-                            result = -EINVAL;
-                            break;
-                        }
-                    }
-                }
-            }
-            else {
-                DEBUG("FT1000:ft1000_ChIoctl: Card not ready take messages\n");
-                result = -EACCES;
-            }
-
-        }
-        break;
-    case IOCTL_GET_DPRAM_CMD:
-        {
-            PDPRAM_BLK pdpram_blk;
-            PIOCTL_DPRAM_BLK pioctl_dpram;
-            int msglen;
-
-            //DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_GET_DPRAM called\n");
-
-            if (ft1000_flarion_cnt == 0) {
-                return (-EBADF);
-            }
-
-            // Search for matching file object
-            for (i=0; i<MAX_NUM_APP; i++) {
-                if ( info->app_info[i].fileobject == (u32)(&File->f_owner) ) {
-                    //DEBUG("FT1000:ft1000_ChIoctl: Message is for
AppId = %d\n", info->app_info[i].app_id);
-                    break;
-                }
-            }
-
-            // Could not find application info block
-            if (i == MAX_NUM_APP) {
-                DEBUG("FT1000:ft1000_ChIoctl:Could not find
application info block\n");
-                result = -EBADF;
-                break;
-            }
-
-            result = 0;
-            pioctl_dpram = (PIOCTL_DPRAM_BLK)Argument;
-            if (list_empty(&info->app_info[i].app_sqlist) == 0) {
-                //DEBUG("FT1000:ft1000_ChIoctl:Message detected in
slow queue\n");
-                spin_lock_irqsave(&free_buff_lock, flags);
-                pdpram_blk =
list_entry(info->app_info[i].app_sqlist.next, DPRAM_BLK, list);
-                list_del(&pdpram_blk->list);
-                info->app_info[i].NumOfMsg--;
-                //DEBUG("FT1000:ft1000_ChIoctl:NumOfMsg for app %d =
%d\n", i, info->app_info[i].NumOfMsg);
-                spin_unlock_irqrestore(&free_buff_lock, flags);
-                msglen = ntohs(*(u16 *)pdpram_blk->pbuffer) + PSEUDOSZ;
-                pioctl_dpram->total_len = htons(msglen);
-                //DEBUG("FT1000:ft1000_ChIoctl:msg length = %x\n", msglen);
-                if(copy_to_user (&pioctl_dpram->pseudohdr,
pdpram_blk->pbuffer, msglen))
-				{
-					DEBUG("FT1000:ft1000_ChIoctl: copy fault occurred\n");
-	             	result = -EFAULT;
-	             	break;
+							//dpram_command.extra = 0;
+
+							//CardSendCommand(ft1000dev,(unsigned char*)&dpram_command,total_len+2);
+							CardSendCommand
+							    (ft1000dev,
+							     (unsigned short *)
+							     &dpram_data,
+							     total_len + 2);
+
+							info->
+							    app_info[app_index].
+							    nTxMsg++;
+							break;
+						} else {
+							result = -EINVAL;
+							break;
+						}
+					}
+				}
+			} else {
+				DEBUG
+				    ("FT1000:ft1000_ChIoctl: Card not ready take messages\n");
+				result = -EACCES;
+			}
+
+		}
+		break;
+	case IOCTL_GET_DPRAM_CMD:
+		{
+			PDPRAM_BLK pdpram_blk;
+			PIOCTL_DPRAM_BLK pioctl_dpram;
+			int msglen;
+
+			//DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_GET_DPRAM called\n");
+
+			if (ft1000_flarion_cnt == 0) {
+				return (-EBADF);
+			}
+			// Search for matching file object
+			for (i = 0; i < MAX_NUM_APP; i++) {
+				if (info->app_info[i].fileobject ==
+				    (u32) (&File->f_owner)) {
+					//DEBUG("FT1000:ft1000_ChIoctl: Message is for AppId = %d\n",
info->app_info[i].app_id);
+					break;
+				}
+			}
+
+			// Could not find application info block
+			if (i == MAX_NUM_APP) {
+				DEBUG
+				    ("FT1000:ft1000_ChIoctl:Could not find application info block\n");
+				result = -EBADF;
+				break;
+			}
+
+			result = 0;
+			pioctl_dpram = (PIOCTL_DPRAM_BLK) Argument;
+			if (list_empty(&info->app_info[i].app_sqlist) == 0) {
+				//DEBUG("FT1000:ft1000_ChIoctl:Message detected in slow queue\n");
+				spin_lock_irqsave(&free_buff_lock, flags);
+				pdpram_blk =
+				    list_entry(info->app_info[i].app_sqlist.
+					       next, DPRAM_BLK, list);
+				list_del(&pdpram_blk->list);
+				info->app_info[i].NumOfMsg--;
+				//DEBUG("FT1000:ft1000_ChIoctl:NumOfMsg for app %d = %d\n", i,
info->app_info[i].NumOfMsg);
+				spin_unlock_irqrestore(&free_buff_lock, flags);
+				msglen =
+				    ntohs(*(u16 *) pdpram_blk->pbuffer) +
+				    PSEUDOSZ;
+				pioctl_dpram->total_len = htons(msglen);
+				//DEBUG("FT1000:ft1000_ChIoctl:msg length = %x\n", msglen);
+				if (copy_to_user
+				    (&pioctl_dpram->pseudohdr,
+				     pdpram_blk->pbuffer, msglen)) {
+					DEBUG
+					    ("FT1000:ft1000_ChIoctl: copy fault occurred\n");
+					result = -EFAULT;
+					break;
 				}

-                ft1000_free_buffer(pdpram_blk, &freercvpool);
-                result = msglen;
-            }
-            //DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_GET_DPRAM no
message\n");
-        }
-        break;
-
-    default:
-        DEBUG("FT1000:ft1000_ChIoctl:unknown command: 0x%x\n", Command);
-        result = -ENOTTY;
-        break;
-    }
-    info->fAppMsgPend = 0;
-    return result;
+				ft1000_free_buffer(pdpram_blk, &freercvpool);
+				result = msglen;
+			}
+			//DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_GET_DPRAM no message\n");
+		}
+		break;
+
+	default:
+		DEBUG("FT1000:ft1000_ChIoctl:unknown command: 0x%x\n", Command);
+		result = -ENOTTY;
+		break;
+	}
+	info->fAppMsgPend = 0;
+	return result;
 }

 //---------------------------------------------------------------------------
@@ -889,46 +969,46 @@ static int ft1000_ChIoctl (struct file *File,
unsigned int Command,
 // Notes:
 //
 //---------------------------------------------------------------------------
-static int ft1000_ChRelease (struct inode *Inode, struct file *File)
+static int ft1000_ChRelease(struct inode *Inode, struct file *File)
 {
-    PFT1000_INFO info;
-    struct net_device *dev;
-    int i;
-    PDPRAM_BLK pdpram_blk;
-
-    DEBUG("ft1000_ChRelease called\n");
-
-    dev = File->private_data;
-	info = (FT1000_INFO *) netdev_priv (dev);
-
-    if (ft1000_flarion_cnt == 0) {
-        info->appcnt--;
-        return (-EBADF);
-    }
-
-    // Search for matching file object
-    for (i=0; i<MAX_NUM_APP; i++) {
-        if ( info->app_info[i].fileobject == (u32)(&File->f_owner) ) {
-            //DEBUG("FT1000:ft1000_ChIoctl: Message is for AppId =
%d\n", info->app_info[i].app_id);
-            break;
-        }
-    }
-
-    if (i==MAX_NUM_APP)
-	    return 0;
-
-    while (list_empty(&info->app_info[i].app_sqlist) == 0) {
-        DEBUG("Remove and free memory queue up on slow queue\n");
-        pdpram_blk = list_entry(info->app_info[i].app_sqlist.next,
DPRAM_BLK, list);
-        list_del(&pdpram_blk->list);
-        ft1000_free_buffer(pdpram_blk, &freercvpool);
-    }
-
-    // initialize application information
-    info->appcnt--;
-    DEBUG("ft1000_chdev:%s:appcnt = %d\n", __FUNCTION__, info->appcnt);
-    info->app_info[i].fileobject = 0;
-
-    return 0;
-}
+	PFT1000_INFO info;
+	struct net_device *dev;
+	int i;
+	PDPRAM_BLK pdpram_blk;
+
+	DEBUG("ft1000_ChRelease called\n");

+	dev = File->private_data;
+	info = (FT1000_INFO *) netdev_priv(dev);
+
+	if (ft1000_flarion_cnt == 0) {
+		info->appcnt--;
+		return (-EBADF);
+	}
+	// Search for matching file object
+	for (i = 0; i < MAX_NUM_APP; i++) {
+		if (info->app_info[i].fileobject == (u32) (&File->f_owner)) {
+			//DEBUG("FT1000:ft1000_ChIoctl: Message is for AppId = %d\n",
info->app_info[i].app_id);
+			break;
+		}
+	}
+
+	if (i == MAX_NUM_APP)
+		return 0;
+
+	while (list_empty(&info->app_info[i].app_sqlist) == 0) {
+		DEBUG("Remove and free memory queue up on slow queue\n");
+		pdpram_blk =
+		    list_entry(info->app_info[i].app_sqlist.next, DPRAM_BLK,
+			       list);
+		list_del(&pdpram_blk->list);
+		ft1000_free_buffer(pdpram_blk, &freercvpool);
+	}
+
+	// initialize application information
+	info->appcnt--;
+	DEBUG("ft1000_chdev:%s:appcnt = %d\n", __FUNCTION__, info->appcnt);
+	info->app_info[i].fileobject = 0;
+
+	return 0;
+}
diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_download.c
b/drivers/staging/ft1000/ft1000-usb/ft1000_download.c
index 93f75b1..a889606 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_download.c
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_download.c
@@ -26,23 +26,23 @@
 #define  DWNLD_PS_HDR_LOC        0x0A

 #define  MAX_DSP_WAIT_LOOPS      40
-#define  DSP_WAIT_SLEEP_TIME     1000       /* 1 millisecond */
-#define  DSP_WAIT_DISPATCH_LVL   50         /* 50 usec */
+#define  DSP_WAIT_SLEEP_TIME     1000	/* 1 millisecond */
+#define  DSP_WAIT_DISPATCH_LVL   50	/* 50 usec */

 #define  HANDSHAKE_TIMEOUT_VALUE 0xF1F1
-#define  HANDSHAKE_RESET_VALUE   0xFEFE   /* When DSP requests startover */
-#define  HANDSHAKE_RESET_VALUE_USB   0xFE7E   /* When DSP requests startover */
-#define  HANDSHAKE_DSP_BL_READY  0xFEFE   /* At start DSP writes this
when bootloader ready */
-#define  HANDSHAKE_DSP_BL_READY_USB  0xFE7E   /* At start DSP writes
this when bootloader ready */
-#define  HANDSHAKE_DRIVER_READY  0xFFFF   /* Driver writes after
receiving 0xFEFE */
-#define  HANDSHAKE_SEND_DATA     0x0000   /* DSP writes this when
ready for more data */
+#define  HANDSHAKE_RESET_VALUE   0xFEFE	/* When DSP requests startover */
+#define  HANDSHAKE_RESET_VALUE_USB   0xFE7E	/* When DSP requests startover */
+#define  HANDSHAKE_DSP_BL_READY  0xFEFE	/* At start DSP writes this
when bootloader ready */
+#define  HANDSHAKE_DSP_BL_READY_USB  0xFE7E	/* At start DSP writes
this when bootloader ready */
+#define  HANDSHAKE_DRIVER_READY  0xFFFF	/* Driver writes after
receiving 0xFEFE */
+#define  HANDSHAKE_SEND_DATA     0x0000	/* DSP writes this when ready
for more data */

-#define  HANDSHAKE_REQUEST       0x0001   /* Request from DSP */
-#define  HANDSHAKE_RESPONSE      0x0000   /* Satisfied DSP request */
+#define  HANDSHAKE_REQUEST       0x0001	/* Request from DSP */
+#define  HANDSHAKE_RESPONSE      0x0000	/* Satisfied DSP request */

 #define  REQUEST_CODE_LENGTH     0x0000
 #define  REQUEST_RUN_ADDRESS     0x0001
-#define  REQUEST_CODE_SEGMENT    0x0002   /* In WORD count */
+#define  REQUEST_CODE_SEGMENT    0x0002	/* In WORD count */
 #define  REQUEST_DONE_BL         0x0003
 #define  REQUEST_DONE_CL         0x0004
 #define  REQUEST_VERSION_INFO    0x0005
@@ -67,18 +67,17 @@
 #define  DWNLD_MAG_CHKSUM_LOC        0x03
 #define  DWNLD_MAG_VAL_LOC           0x04

-#define  HANDSHAKE_MAG_DSP_BL_READY  0xFEFE0000   /* At start DSP
writes this when bootloader ready */
-#define  HANDSHAKE_MAG_DSP_ENTRY     0x01000000   /* Dsp writes this
to request for entry address */
-#define  HANDSHAKE_MAG_DSP_DATA      0x02000000   /* Dsp writes this
to request for data block */
-#define  HANDSHAKE_MAG_DSP_DONE      0x03000000   /* Dsp writes this
to indicate download done */
+#define  HANDSHAKE_MAG_DSP_BL_READY  0xFEFE0000	/* At start DSP
writes this when bootloader ready */
+#define  HANDSHAKE_MAG_DSP_ENTRY     0x01000000	/* Dsp writes this to
request for entry address */
+#define  HANDSHAKE_MAG_DSP_DATA      0x02000000	/* Dsp writes this to
request for data block */
+#define  HANDSHAKE_MAG_DSP_DONE      0x03000000	/* Dsp writes this to
indicate download done */

-#define  HANDSHAKE_MAG_DRV_READY     0xFFFF0000   /* Driver writes
this to indicate ready to download */
-#define  HANDSHAKE_MAG_DRV_DATA      0x02FECDAB   /* Driver writes
this to indicate data available to DSP */
-#define  HANDSHAKE_MAG_DRV_ENTRY     0x01FECDAB   /* Driver writes
this to indicate entry point to DSP */
+#define  HANDSHAKE_MAG_DRV_READY     0xFFFF0000	/* Driver writes this
to indicate ready to download */
+#define  HANDSHAKE_MAG_DRV_DATA      0x02FECDAB	/* Driver writes this
to indicate data available to DSP */
+#define  HANDSHAKE_MAG_DRV_ENTRY     0x01FECDAB	/* Driver writes this
to indicate entry point to DSP */

 #define  HANDSHAKE_MAG_TIMEOUT_VALUE 0xF1F1

-
 // New Magnemite downloader
 #define  DWNLD_MAG1_HANDSHAKE_LOC     0x00
 #define  DWNLD_MAG1_TYPE_LOC          0x01
@@ -87,60 +86,67 @@

 #pragma pack (push, pack_save, 1)
 typedef struct _DSP_FILE_HDR {
-   long        build_date;
-   long        dsp_coff_date;
-   long        loader_code_address;
-   long        loader_code_size;
-   long        loader_code_end;
-   long        dsp_code_address;
-   long        dsp_code_size;
-   long        dsp_code_end;
-   long        reserved[8];
+	long build_date;
+	long dsp_coff_date;
+	long loader_code_address;
+	long loader_code_size;
+	long loader_code_end;
+	long dsp_code_address;
+	long dsp_code_size;
+	long dsp_code_end;
+	long reserved[8];
 } DSP_FILE_HDR, *PDSP_FILE_HDR;

 typedef struct _DSP_FILE_HDR_5 {
-   long              version_id;          // Version ID of this image format.
-   long              package_id;          // Package ID of code release.
-   long              build_date;          // Date/time stamp when
file was built.
-   long              commands_offset;     // Offset to attached
commands in Pseudo Hdr format.
-   long              loader_offset;       // Offset to bootloader code.
-   long              loader_code_address; // Start address of bootloader.
-   long              loader_code_end;     // Where bootloader code ends.
-   long              loader_code_size;
-   long              version_data_offset; // Offset were scrambled
version data begins.
-   long              version_data_size;   // Size, in words, of
scrambled version data.
-   long              nDspImages;          // Number of DSP images in file.
-} DSP_FILE_HDR_5, * PDSP_FILE_HDR_5;
+	long version_id;	// Version ID of this image format.
+	long package_id;	// Package ID of code release.
+	long build_date;	// Date/time stamp when file was built.
+	long commands_offset;	// Offset to attached commands in Pseudo Hdr format.
+	long loader_offset;	// Offset to bootloader code.
+	long loader_code_address;	// Start address of bootloader.
+	long loader_code_end;	// Where bootloader code ends.
+	long loader_code_size;
+	long version_data_offset;	// Offset were scrambled version data begins.
+	long version_data_size;	// Size, in words, of scrambled version data.
+	long nDspImages;	// Number of DSP images in file.
+} DSP_FILE_HDR_5, *PDSP_FILE_HDR_5;

 typedef struct _DSP_IMAGE_INFO {
-   long              coff_date;           // Date/time when DSP Coff
image was built.
-   long              begin_offset;        // Offset in file where image begins.
-   long              end_offset;          // Offset in file where image begins.
-   long              run_address;         // On chip Start address of DSP code.
-   long              image_size;          // Size of image.
-   long              version;             // Embedded version # of DSP code.
+	long coff_date;		// Date/time when DSP Coff image was built.
+	long begin_offset;	// Offset in file where image begins.
+	long end_offset;	// Offset in file where image begins.
+	long run_address;	// On chip Start address of DSP code.
+	long image_size;	// Size of image.
+	long version;		// Embedded version # of DSP code.
 } DSP_IMAGE_INFO, *PDSP_IMAGE_INFO;

 typedef struct _DSP_IMAGE_INFO_V6 {
-   long              coff_date;           // Date/time when DSP Coff
image was built.
-   long              begin_offset;        // Offset in file where image begins.
-   long              end_offset;          // Offset in file where image begins.
-   long              run_address;         // On chip Start address of DSP code.
-   long              image_size;          // Size of image.
-   long              version;             // Embedded version # of DSP code.
-   unsigned short    checksum;            // DSP File checksum
-   unsigned short    pad1;
+	long coff_date;		// Date/time when DSP Coff image was built.
+	long begin_offset;	// Offset in file where image begins.
+	long end_offset;	// Offset in file where image begins.
+	long run_address;	// On chip Start address of DSP code.
+	long image_size;	// Size of image.
+	long version;		// Embedded version # of DSP code.
+	unsigned short checksum;	// DSP File checksum
+	unsigned short pad1;
 } DSP_IMAGE_INFO_V6, *PDSP_IMAGE_INFO_V6;

-
-u16 ft1000_read_register(struct ft1000_device *ft1000dev, short*
Data, u16 nRegIndx);
-u16 ft1000_write_register(struct ft1000_device *ft1000dev, USHORT
value, u16 nRegIndx);
-u16 ft1000_read_dpram32(struct ft1000_device *ft1000dev, USHORT indx,
PUCHAR buffer, USHORT cnt);
-u16 ft1000_write_dpram32(struct ft1000_device *ft1000dev, USHORT
indx, PUCHAR buffer, USHORT cnt);
-u16 ft1000_read_dpram16(struct ft1000_device *ft1000dev, USHORT indx,
PUCHAR buffer, u8 highlow);
-u16 ft1000_write_dpram16(struct ft1000_device *ft1000dev, USHORT
indx, USHORT value, u8 highlow);
-u16 fix_ft1000_read_dpram32(struct ft1000_device *ft1000dev, USHORT
indx, PUCHAR buffer);
-u16 fix_ft1000_write_dpram32(struct ft1000_device *ft1000dev, USHORT
indx, PUCHAR buffer);
+u16 ft1000_read_register(struct ft1000_device *ft1000dev, short *Data,
+			 u16 nRegIndx);
+u16 ft1000_write_register(struct ft1000_device *ft1000dev, USHORT value,
+			  u16 nRegIndx);
+u16 ft1000_read_dpram32(struct ft1000_device *ft1000dev, USHORT indx,
+			PUCHAR buffer, USHORT cnt);
+u16 ft1000_write_dpram32(struct ft1000_device *ft1000dev, USHORT indx,
+			 PUCHAR buffer, USHORT cnt);
+u16 ft1000_read_dpram16(struct ft1000_device *ft1000dev, USHORT indx,
+			PUCHAR buffer, u8 highlow);
+u16 ft1000_write_dpram16(struct ft1000_device *ft1000dev, USHORT indx,
+			 USHORT value, u8 highlow);
+u16 fix_ft1000_read_dpram32(struct ft1000_device *ft1000dev, USHORT indx,
+			    PUCHAR buffer);
+u16 fix_ft1000_write_dpram32(struct ft1000_device *ft1000dev, USHORT indx,
+			     PUCHAR buffer);

 //---------------------------------------------------------------------------
 // Function:    getfw
@@ -154,54 +160,54 @@ u16 fix_ft1000_write_dpram32(struct
ft1000_device *ft1000dev, USHORT indx, PUCHA
 // Notes:
 //
 //---------------------------------------------------------------------------
-char *getfw (char *fn, int *pimgsz)
+char *getfw(char *fn, int *pimgsz)
 {
-    struct file *fd;
-    mm_segment_t fs = get_fs();
-    loff_t pos;
-    char *pfwimg;
-    int fwimgsz;
-
-    set_fs(get_ds());
-
-    fd = filp_open(fn, 0, 0);
-    if ( IS_ERR(fd) )
-    {
-       DEBUG("FT1000:%s:can not open dsp image\n", __FUNCTION__);
-       set_fs(fs);
-       return NULL;
-    }
-
-    fwimgsz = i_size_read(fd->f_dentry->d_inode);
-    *pimgsz = fwimgsz;
-
-    if (fwimgsz <= 0)
-    {
-       DEBUG("FT1000:%s:invalid file size\n", __FUNCTION__);
-       filp_close(fd, current->files);
-       set_fs(fs);
-       return NULL;
-    }
-    pfwimg = (char*)vmalloc ( fwimgsz );
-    if (pfwimg == NULL) {
-        DEBUG("FT1000:%s:can not allocate memory for dsp image\n",
__FUNCTION__);
-        filp_close(fd, current->files);
-        set_fs(fs);
-        return NULL;
-    }
-    pos = 0;
-    if (vfs_read(fd, pfwimg, fwimgsz, &pos) != fwimgsz) {
-       vfree(pfwimg);
-       DEBUG("FT1000:%s:failed to read firmware image\n",__FUNCTION__);
-       filp_close(fd, current->files);
-       set_fs(fs);
-       return NULL;
-    }
-
-    filp_close(fd, current->files);
-    set_fs(fs);
-
-    return pfwimg;
+	struct file *fd;
+	mm_segment_t fs = get_fs();
+	loff_t pos;
+	char *pfwimg;
+	int fwimgsz;
+
+	set_fs(get_ds());
+
+	fd = filp_open(fn, 0, 0);
+	if (IS_ERR(fd)) {
+		DEBUG("FT1000:%s:can not open dsp image\n", __FUNCTION__);
+		set_fs(fs);
+		return NULL;
+	}
+
+	fwimgsz = i_size_read(fd->f_dentry->d_inode);
+	*pimgsz = fwimgsz;
+
+	if (fwimgsz <= 0) {
+		DEBUG("FT1000:%s:invalid file size\n", __FUNCTION__);
+		filp_close(fd, current->files);
+		set_fs(fs);
+		return NULL;
+	}
+	pfwimg = (char *)vmalloc(fwimgsz);
+	if (pfwimg == NULL) {
+		DEBUG("FT1000:%s:can not allocate memory for dsp image\n",
+		      __FUNCTION__);
+		filp_close(fd, current->files);
+		set_fs(fs);
+		return NULL;
+	}
+	pos = 0;
+	if (vfs_read(fd, pfwimg, fwimgsz, &pos) != fwimgsz) {
+		vfree(pfwimg);
+		DEBUG("FT1000:%s:failed to read firmware image\n",
+		      __FUNCTION__);
+		filp_close(fd, current->files);
+		set_fs(fs);
+		return NULL;
+	}
+
+	filp_close(fd, current->files);
+	set_fs(fs);
+
+	return pfwimg;
 }

 //---------------------------------------------------------------------------
@@ -216,68 +222,71 @@ char *getfw (char *fn, int *pimgsz)
 // Notes:
 //
 //---------------------------------------------------------------------------
-ULONG check_usb_db (struct ft1000_device *ft1000dev)
+ULONG check_usb_db(struct ft1000_device * ft1000dev)
 {
-   int               loopcnt;
-   USHORT            temp;
-   ULONG             status;
-
-   loopcnt = 0;
-   while (loopcnt < 10)
-   {
-
-      status = ft1000_read_register (ft1000dev, &temp, FT1000_REG_DOORBELL);
-      DEBUG("check_usb_db: read FT1000_REG_DOORBELL value is %x\n", temp);
-      if (temp & 0x0080)
-      {
-           DEBUG("FT1000:Got checkusb doorbell\n");
-           status = ft1000_write_register (ft1000dev, 0x0080,
FT1000_REG_DOORBELL);
+	int loopcnt;
+	USHORT temp;
+	ULONG status;
+
+	loopcnt = 0;
+	while (loopcnt < 10) {
+
+		status =
+		    ft1000_read_register(ft1000dev, &temp, FT1000_REG_DOORBELL);
+		DEBUG("check_usb_db: read FT1000_REG_DOORBELL value is %x\n",
+		      temp);
+		if (temp & 0x0080) {
+			DEBUG("FT1000:Got checkusb doorbell\n");
+			status =
+			    ft1000_write_register(ft1000dev, 0x0080,
+						  FT1000_REG_DOORBELL);
 #if FIFO_DNLD
-           status = ft1000_write_register (ft1000dev, 0x0100,
FT1000_REG_DOORBELL);
+			status =
+			    ft1000_write_register(ft1000dev, 0x0100,
+						  FT1000_REG_DOORBELL);
 #endif
-           status = ft1000_write_register (ft1000dev,  0x8000,
FT1000_REG_DOORBELL);
-           break;
-      }
-      else
-      {
-           loopcnt++;
-           msleep (10);
-      }
-
-   } //end of while
+			status =
+			    ft1000_write_register(ft1000dev, 0x8000,
+						  FT1000_REG_DOORBELL);
+			break;
+		} else {
+			loopcnt++;
+			msleep(10);
+		}

+	}			//end of while

-   loopcnt = 0;
-   while (loopcnt < 20)
-   {
+	loopcnt = 0;
+	while (loopcnt < 20) {

-      status = ft1000_read_register (ft1000dev, &temp, FT1000_REG_DOORBELL);
-      DEBUG("FT1000:check_usb_db:Doorbell = 0x%x\n", temp);
-      if (temp & 0x8000)
-      {
-         loopcnt++;
-         msleep (10);
-      }
-      else
-      {
-         DEBUG("check_usb_db: door bell is cleared, return 0\n");
-         return 0;
-      }
+		status =
+		    ft1000_read_register(ft1000dev, &temp, FT1000_REG_DOORBELL);
+		DEBUG("FT1000:check_usb_db:Doorbell = 0x%x\n", temp);
+		if (temp & 0x8000) {
+			loopcnt++;
+			msleep(10);
+		} else {
+			DEBUG("check_usb_db: door bell is cleared, return 0\n");
+			return 0;
+		}
 #if 0
-      // Check if Card is present
-      status = ft1000_read_register (ft1000dev, &temp, FT1000_REG_SUP_IMASK);
-      if (temp == 0x0000) {
-          break;
-      }
+		// Check if Card is present
+		status =
+		    ft1000_read_register(ft1000dev, &temp,
+					 FT1000_REG_SUP_IMASK);
+		if (temp == 0x0000) {
+			break;
+		}

-      status = ft1000_read_register (ft1000dev, &temp, FT1000_REG_ASIC_ID);
-      if (temp == 0xffff) {
-         break;
-      }
+		status =
+		    ft1000_read_register(ft1000dev, &temp, FT1000_REG_ASIC_ID);
+		if (temp == 0xffff) {
+			break;
+		}
 #endif
-   }
+	}

-   return HANDSHAKE_MAG_TIMEOUT_VALUE;
+	return HANDSHAKE_MAG_TIMEOUT_VALUE;

 }

@@ -295,101 +304,112 @@ ULONG check_usb_db (struct ft1000_device *ft1000dev)
 // Notes:
 //
 //---------------------------------------------------------------------------
-USHORT get_handshake(struct ft1000_device *ft1000dev, USHORT expected_value)
+USHORT get_handshake(struct ft1000_device * ft1000dev, USHORT expected_value)
 {
-   USHORT            handshake;
-   int               loopcnt;
-   ULONG             status=0;
-   PFT1000_INFO       pft1000info = netdev_priv(ft1000dev->net);
+	USHORT handshake;
+	int loopcnt;
+	ULONG status = 0;
+	PFT1000_INFO pft1000info = netdev_priv(ft1000dev->net);

-   loopcnt = 0;
-   while (loopcnt < 100)
-   {
+	loopcnt = 0;
+	while (loopcnt < 100) {

 #if FIFO_DNLD
-           // Need to clear downloader doorbell if Hartley ASIC
-           status = ft1000_write_register (ft1000dev,
FT1000_DB_DNLD_RX, FT1000_REG_DOORBELL);
-           //DEBUG("FT1000:get_handshake:doorbell = 0x%x\n", temp);
-               if (pft1000info->fcodeldr)
-               {
-                   DEBUG(" get_handshake: fcodeldr is %d\n",
pft1000info->fcodeldr);
-                   pft1000info->fcodeldr = 0;
-                   status = check_usb_db(ft1000dev);
-                   if (status != STATUS_SUCCESS)
-                   {
-                       DEBUG("get_handshake: check_usb_db failed\n");
-                       status = STATUS_FAILURE;
-                       break;
-                   }
-                   status = ft1000_write_register (ft1000dev,
FT1000_DB_DNLD_RX, FT1000_REG_DOORBELL);
-               }
-
-                status = ft1000_read_dpram16 (ft1000dev,
DWNLD_MAG1_HANDSHAKE_LOC, (PUCHAR)&handshake, 1);
-                //DEBUG("get_handshake: handshake is %x\n", tempx);
-                handshake = ntohs(handshake);
-                //DEBUG("get_handshake: after swap, handshake is
%x\n", handshake);
+		// Need to clear downloader doorbell if Hartley ASIC
+		status =
+		    ft1000_write_register(ft1000dev, FT1000_DB_DNLD_RX,
+					  FT1000_REG_DOORBELL);
+		//DEBUG("FT1000:get_handshake:doorbell = 0x%x\n", temp);
+		if (pft1000info->fcodeldr) {
+			DEBUG(" get_handshake: fcodeldr is %d\n",
+			      pft1000info->fcodeldr);
+			pft1000info->fcodeldr = 0;
+			status = check_usb_db(ft1000dev);
+			if (status != STATUS_SUCCESS) {
+				DEBUG("get_handshake: check_usb_db failed\n");
+				status = STATUS_FAILURE;
+				break;
+			}
+			status =
+			    ft1000_write_register(ft1000dev, FT1000_DB_DNLD_RX,
+						  FT1000_REG_DOORBELL);
+		}
+
+		status =
+		    ft1000_read_dpram16(ft1000dev, DWNLD_MAG1_HANDSHAKE_LOC,
+					(PUCHAR) & handshake, 1);
+		//DEBUG("get_handshake: handshake is %x\n", tempx);
+		handshake = ntohs(handshake);
+		//DEBUG("get_handshake: after swap, handshake is %x\n", handshake);
 #else
-           // Need to clear downloader doorbell if Hartley ASIC
-           status = ft1000_read_register (ft1000dev, &temp,
FT1000_REG_DOORBELL);
-           //DEBUG("FT1000:get_handshake:doorbell = 0x%x\n", temp);
-           if (temp)
-           {
-               if (temp & FT1000_DB_DNLD_RX)
-               {
-                   //DEBUG("get_handshake: write FT1000_DB_DNLD_RX to
doorbell register\n");
-                   status = ft1000_write_register(ft1000dev,
FT1000_DB_DNLD_RX, FT1000_REG_DOORBELL);
-               }
-
-               if (pft1000info->fcodeldr)
-               {
-                   DEBUG(" get_handshake: fcodeldr is %d\n",
pft1000info->fcodeldr);
-                   pft1000info->fcodeldr = 0;
-                   status = check_usb_db(ft1000dev);
-                   if (status != STATUS_SUCCESS)
-                   {
-                       DEBUG("get_handshake: check_usb_db failed\n");
-                       status = STATUS_FAILURE;
-                       break;
-                   }
-
-                   status = ft1000_read_register (ft1000dev, &temp,
FT1000_REG_DOORBELL);
-                   //DEBUG("FT1000:get_handshake:doorbell = 0x%x\n", temp);
-                   if (temp)
-                   {
-                       if (temp & FT1000_DB_DNLD_RX)
-                           status =
ft1000_write_register(ft1000dev,FT1000_DB_DNLD_RX,
FT1000_REG_DOORBELL);
-                   }
-                }
-
-                status = ft1000_read_dpram16 (ft1000dev,
DWNLD_MAG1_HANDSHAKE_LOC, (PUCHAR)&handshake, 1);
-                //DEBUG("get_handshake: handshake is %x\n", tempx);
-                handshake = ntohs(handshake);
-                //DEBUG("get_handshake: after swap, handshake is
%x\n", handshake);
-
-           } //end of if temp
-#endif
+		// Need to clear downloader doorbell if Hartley ASIC
+		status =
+		    ft1000_read_register(ft1000dev, &temp, FT1000_REG_DOORBELL);
+		//DEBUG("FT1000:get_handshake:doorbell = 0x%x\n", temp);
+		if (temp) {
+			if (temp & FT1000_DB_DNLD_RX) {
+				//DEBUG("get_handshake: write FT1000_DB_DNLD_RX to doorbell register\n");
+				status =
+				    ft1000_write_register(ft1000dev,
+							  FT1000_DB_DNLD_RX,
+							  FT1000_REG_DOORBELL);
+			}

+			if (pft1000info->fcodeldr) {
+				DEBUG(" get_handshake: fcodeldr is %d\n",
+				      pft1000info->fcodeldr);
+				pft1000info->fcodeldr = 0;
+				status = check_usb_db(ft1000dev);
+				if (status != STATUS_SUCCESS) {
+					DEBUG
+					    ("get_handshake: check_usb_db failed\n");
+					status = STATUS_FAILURE;
+					break;
+				}

-        if (status)
-           return HANDSHAKE_TIMEOUT_VALUE;
+				status =
+				    ft1000_read_register(ft1000dev, &temp,
+							 FT1000_REG_DOORBELL);
+				//DEBUG("FT1000:get_handshake:doorbell = 0x%x\n", temp);
+				if (temp) {
+					if (temp & FT1000_DB_DNLD_RX)
+						status =
+						    ft1000_write_register
+						    (ft1000dev,
+						     FT1000_DB_DNLD_RX,
+						     FT1000_REG_DOORBELL);
+				}
+			}
+
+			status =
+			    ft1000_read_dpram16(ft1000dev,
+						DWNLD_MAG1_HANDSHAKE_LOC,
+						(PUCHAR) & handshake, 1);
+			//DEBUG("get_handshake: handshake is %x\n", tempx);
+			handshake = ntohs(handshake);
+			//DEBUG("get_handshake: after swap, handshake is %x\n", handshake);
+
+		}		//end of if temp
+#endif

-        //DEBUG("get_handshake: handshake= %x\n", handshake);
-        if ((handshake == expected_value) || (handshake ==
HANDSHAKE_RESET_VALUE_USB))
-        {
-            //DEBUG("get_handshake: return handshake %x\n", handshake);
-            return handshake;
-        }
-        else
-        {
-            loopcnt++;
-            msleep (10);
-        }
-        //DEBUG("HANDSHKE LOOP: %d\n", loopcnt);
+		if (status)
+			return HANDSHAKE_TIMEOUT_VALUE;
+
+		//DEBUG("get_handshake: handshake= %x\n", handshake);
+		if ((handshake == expected_value)
+		    || (handshake == HANDSHAKE_RESET_VALUE_USB)) {
+			//DEBUG("get_handshake: return handshake %x\n", handshake);
+			return handshake;
+		} else {
+			loopcnt++;
+			msleep(10);
+		}
+		//DEBUG("HANDSHKE LOOP: %d\n", loopcnt);

-   }
+	}

-   //DEBUG("get_handshake: return handshake time out\n");
-   return HANDSHAKE_TIMEOUT_VALUE;
+	//DEBUG("get_handshake: return handshake time out\n");
+	return HANDSHAKE_TIMEOUT_VALUE;
 }

 //---------------------------------------------------------------------------
@@ -406,87 +426,102 @@ USHORT get_handshake(struct ft1000_device
*ft1000dev, USHORT expected_value)
 // Notes:
 //
 //---------------------------------------------------------------------------
-void put_handshake(struct ft1000_device *ft1000dev,USHORT handshake_value)
+void put_handshake(struct ft1000_device *ft1000dev, USHORT handshake_value)
 {
-    ULONG tempx;
-    USHORT tempword;
-    int i;
-    ULONG status;
-
-
-
-        tempx = (ULONG)handshake_value;
-        tempx = ntohl(tempx);
-
-        tempword = (USHORT)(tempx & 0xffff);
-        status = ft1000_write_dpram16 (ft1000dev,
DWNLD_MAG1_HANDSHAKE_LOC, tempword, 0);
-        tempword = (USHORT)(tempx >> 16);
-        status = ft1000_write_dpram16 (ft1000dev,
DWNLD_MAG1_HANDSHAKE_LOC, tempword, 1);
-        status = ft1000_write_register(ft1000dev, FT1000_DB_DNLD_TX,
FT1000_REG_DOORBELL);
+	ULONG tempx;
+	USHORT tempword;
+	int i;
+	ULONG status;
+
+	tempx = (ULONG) handshake_value;
+	tempx = ntohl(tempx);
+
+	tempword = (USHORT) (tempx & 0xffff);
+	status =
+	    ft1000_write_dpram16(ft1000dev, DWNLD_MAG1_HANDSHAKE_LOC, tempword,
+				 0);
+	tempword = (USHORT) (tempx >> 16);
+	status =
+	    ft1000_write_dpram16(ft1000dev, DWNLD_MAG1_HANDSHAKE_LOC, tempword,
+				 1);
+	status =
+	    ft1000_write_register(ft1000dev, FT1000_DB_DNLD_TX,
+				  FT1000_REG_DOORBELL);
 #if FIFO_DNLD
-        for (i=0; i<1000; i++);
+	for (i = 0; i < 1000; i++) ;
 #else
-        for (i=0; i<10; i++)
-        {
-            status = ft1000_read_register (ft1000dev, &tempword,
FT1000_REG_DOORBELL);
-            if ((tempword & FT1000_DB_DNLD_TX) == 0)
-                break;
-        }
-        if (i==10)
-        {
-            DEBUG("FT1000:put_handshake could not clear Tx doorbell\n");
-            status = ft1000_read_register (ft1000dev, &tempword,
FT1000_REG_DOORBELL);
-            DEBUG("FT1000:put_handshake:doorbell = 0x%x\n",tempword);
-        }
+	for (i = 0; i < 10; i++) {
+		status =
+		    ft1000_read_register(ft1000dev, &tempword,
+					 FT1000_REG_DOORBELL);
+		if ((tempword & FT1000_DB_DNLD_TX) == 0)
+			break;
+	}
+	if (i == 10) {
+		DEBUG("FT1000:put_handshake could not clear Tx doorbell\n");
+		status =
+		    ft1000_read_register(ft1000dev, &tempword,
+					 FT1000_REG_DOORBELL);
+		DEBUG("FT1000:put_handshake:doorbell = 0x%x\n", tempword);
+	}
 #endif

 }

 USHORT get_handshake_usb(struct ft1000_device *ft1000dev, USHORT
expected_value)
 {
-   USHORT            handshake;
-   int               loopcnt;
-   USHORT            temp;
-   ULONG             status=0;
-
-   PFT1000_INFO      pft1000info = netdev_priv(ft1000dev->net);
-   loopcnt = 0;
-   handshake = 0;
-   while (loopcnt < 100)
-   {
-       if (pft1000info->usbboot == 2) {
-           status = ft1000_read_dpram32 (ft1000dev, 0,
(PUCHAR)&(pft1000info->tempbuf[0]), 64);
-           for (temp=0; temp<16; temp++)
-               DEBUG("tempbuf %d = 0x%x\n", temp, pft1000info->tempbuf[temp]);
-           status = ft1000_read_dpram16 (ft1000dev,
DWNLD_MAG1_HANDSHAKE_LOC, (PUCHAR)&handshake, 1);
-           DEBUG("handshake from read_dpram16 = 0x%x\n", handshake);
-           if (pft1000info->dspalive == pft1000info->tempbuf[6])
-               handshake = 0;
-           else {
-               handshake = pft1000info->tempbuf[1];
-               pft1000info->dspalive = pft1000info->tempbuf[6];
-           }
-       }
-       else {
-           status = ft1000_read_dpram16 (ft1000dev,
DWNLD_MAG1_HANDSHAKE_LOC, (PUCHAR)&handshake, 1);
-       }
-       loopcnt++;
-       msleep(10);
-       handshake = ntohs(handshake);
-       if ((handshake == expected_value) || (handshake ==
HANDSHAKE_RESET_VALUE_USB))
-       {
-           return handshake;
-       }
-   }
-
-   return HANDSHAKE_TIMEOUT_VALUE;
+	USHORT handshake;
+	int loopcnt;
+	USHORT temp;
+	ULONG status = 0;
+
+	PFT1000_INFO pft1000info = netdev_priv(ft1000dev->net);
+	loopcnt = 0;
+	handshake = 0;
+	while (loopcnt < 100) {
+		if (pft1000info->usbboot == 2) {
+			status =
+			    ft1000_read_dpram32(ft1000dev, 0,
+						(PUCHAR) & (pft1000info->
+							    tempbuf[0]), 64);
+			for (temp = 0; temp < 16; temp++)
+				DEBUG("tempbuf %d = 0x%x\n", temp,
+				      pft1000info->tempbuf[temp]);
+			status =
+			    ft1000_read_dpram16(ft1000dev,
+						DWNLD_MAG1_HANDSHAKE_LOC,
+						(PUCHAR) & handshake, 1);
+			DEBUG("handshake from read_dpram16 = 0x%x\n",
+			      handshake);
+			if (pft1000info->dspalive == pft1000info->tempbuf[6])
+				handshake = 0;
+			else {
+				handshake = pft1000info->tempbuf[1];
+				pft1000info->dspalive = pft1000info->tempbuf[6];
+			}
+		} else {
+			status =
+			    ft1000_read_dpram16(ft1000dev,
+						DWNLD_MAG1_HANDSHAKE_LOC,
+						(PUCHAR) & handshake, 1);
+		}
+		loopcnt++;
+		msleep(10);
+		handshake = ntohs(handshake);
+		if ((handshake == expected_value)
+		    || (handshake == HANDSHAKE_RESET_VALUE_USB)) {
+			return handshake;
+		}
+	}
+
+	return HANDSHAKE_TIMEOUT_VALUE;
 }

-void put_handshake_usb(struct ft1000_device *ft1000dev,USHORT handshake_value)
+void put_handshake_usb(struct ft1000_device *ft1000dev, USHORT handshake_value)
 {
-   int i;
+	int i;

-        for (i=0; i<1000; i++);
+	for (i = 0; i < 1000; i++) ;
 }

 //---------------------------------------------------------------------------
@@ -503,65 +538,68 @@ void put_handshake_usb(struct ft1000_device
*ft1000dev,USHORT handshake_value)
 //---------------------------------------------------------------------------
 USHORT get_request_type(struct ft1000_device *ft1000dev)
 {
-   USHORT   request_type;
-   ULONG    status;
-   USHORT   tempword;
-   ULONG    tempx;
-   PFT1000_INFO pft1000info = netdev_priv(ft1000dev->net);
-
-   if ( pft1000info->bootmode == 1)
-   {
-       status = fix_ft1000_read_dpram32 (ft1000dev,
DWNLD_MAG1_TYPE_LOC, (PUCHAR)&tempx);
-       tempx = ntohl(tempx);
-   }
-   else
-   {
+	USHORT request_type;
+	ULONG status;
+	USHORT tempword;
+	ULONG tempx;
+	PFT1000_INFO pft1000info = netdev_priv(ft1000dev->net);
+
+	if (pft1000info->bootmode == 1) {
+		status =
+		    fix_ft1000_read_dpram32(ft1000dev, DWNLD_MAG1_TYPE_LOC,
+					    (PUCHAR) & tempx);
+		tempx = ntohl(tempx);
+	} else {
 #if FIFO_DNLD
-       tempx = 0;
+		tempx = 0;
 #else
-       status = ft1000_read_dpram16 (ft1000dev, DWNLD_MAG1_TYPE_LOC,
(PUCHAR)&tempword, 0);
-       tempx = tempword;
+		status =
+		    ft1000_read_dpram16(ft1000dev, DWNLD_MAG1_TYPE_LOC,
+					(PUCHAR) & tempword, 0);
+		tempx = tempword;
 #endif
-       status = ft1000_read_dpram16 (ft1000dev, DWNLD_MAG1_TYPE_LOC,
(PUCHAR)&tempword, 1);
-       tempx |= (tempword << 16);
-       tempx = ntohl(tempx);
-   }
-   request_type = (USHORT)tempx;
+		status =
+		    ft1000_read_dpram16(ft1000dev, DWNLD_MAG1_TYPE_LOC,
+					(PUCHAR) & tempword, 1);
+		tempx |= (tempword << 16);
+		tempx = ntohl(tempx);
+	}
+	request_type = (USHORT) tempx;

-   //DEBUG("get_request_type: request_type is %x\n", request_type);
-   return request_type;
+	//DEBUG("get_request_type: request_type is %x\n", request_type);
+	return request_type;

 }

-USHORT get_request_type_usb(struct ft1000_device *ft1000dev)
+USHORT get_request_type_usb(struct ft1000_device * ft1000dev)
 {
-   USHORT   request_type;
-   ULONG    status;
-   USHORT   tempword;
-   ULONG    tempx;
-   PFT1000_INFO pft1000info = netdev_priv(ft1000dev->net);
-   if ( pft1000info->bootmode == 1)
-   {
-       status = fix_ft1000_read_dpram32 (ft1000dev,
DWNLD_MAG1_TYPE_LOC, (PUCHAR)&tempx);
-       tempx = ntohl(tempx);
-   }
-   else
-   {
-       if (pft1000info->usbboot == 2) {
-          tempx = pft1000info->tempbuf[2];
-          tempword = pft1000info->tempbuf[3];
-       }
-       else {
-          tempx = 0;
-          status = ft1000_read_dpram16 (ft1000dev,
DWNLD_MAG1_TYPE_LOC, (PUCHAR)&tempword, 1);
-       }
-       tempx |= (tempword << 16);
-       tempx = ntohl(tempx);
-   }
-   request_type = (USHORT)tempx;
-
-   //DEBUG("get_request_type: request_type is %x\n", request_type);
-   return request_type;
+	USHORT request_type;
+	ULONG status;
+	USHORT tempword;
+	ULONG tempx;
+	PFT1000_INFO pft1000info = netdev_priv(ft1000dev->net);
+	if (pft1000info->bootmode == 1) {
+		status =
+		    fix_ft1000_read_dpram32(ft1000dev, DWNLD_MAG1_TYPE_LOC,
+					    (PUCHAR) & tempx);
+		tempx = ntohl(tempx);
+	} else {
+		if (pft1000info->usbboot == 2) {
+			tempx = pft1000info->tempbuf[2];
+			tempword = pft1000info->tempbuf[3];
+		} else {
+			tempx = 0;
+			status =
+			    ft1000_read_dpram16(ft1000dev, DWNLD_MAG1_TYPE_LOC,
+						(PUCHAR) & tempword, 1);
+		}
+		tempx |= (tempword << 16);
+		tempx = ntohl(tempx);
+	}
+	request_type = (USHORT) tempx;
+
+	//DEBUG("get_request_type: request_type is %x\n", request_type);
+	return request_type;

 }

@@ -579,58 +617,60 @@ USHORT get_request_type_usb(struct ft1000_device
*ft1000dev)
 //---------------------------------------------------------------------------
 long get_request_value(struct ft1000_device *ft1000dev)
 {
-   ULONG     value;
-   USHORT   tempword;
-   ULONG    status;
-   PFT1000_INFO pft1000info = netdev_priv(ft1000dev->net);
-
-
-       if ( pft1000info->bootmode == 1)
-       {
-	   status = fix_ft1000_read_dpram32(ft1000dev, DWNLD_MAG1_SIZE_LOC,
(PUCHAR)&value);
-	   value = ntohl(value);
-       }
-       else
-       {
-	   status = ft1000_read_dpram16(ft1000dev, DWNLD_MAG1_SIZE_LOC,
(PUCHAR)&tempword, 0);
-	   value = tempword;
-           status = ft1000_read_dpram16(ft1000dev,
DWNLD_MAG1_SIZE_LOC, (PUCHAR)&tempword, 1);
-	   value |= (tempword << 16);
-	   value = ntohl(value);
-       }
-
-
-   //DEBUG("get_request_value: value is %x\n", value);
-   return value;
+	ULONG value;
+	USHORT tempword;
+	ULONG status;
+	PFT1000_INFO pft1000info = netdev_priv(ft1000dev->net);
+
+	if (pft1000info->bootmode == 1) {
+		status =
+		    fix_ft1000_read_dpram32(ft1000dev, DWNLD_MAG1_SIZE_LOC,
+					    (PUCHAR) & value);
+		value = ntohl(value);
+	} else {
+		status =
+		    ft1000_read_dpram16(ft1000dev, DWNLD_MAG1_SIZE_LOC,
+					(PUCHAR) & tempword, 0);
+		value = tempword;
+		status =
+		    ft1000_read_dpram16(ft1000dev, DWNLD_MAG1_SIZE_LOC,
+					(PUCHAR) & tempword, 1);
+		value |= (tempword << 16);
+		value = ntohl(value);
+	}
+
+	//DEBUG("get_request_value: value is %x\n", value);
+	return value;

 }

 long get_request_value_usb(struct ft1000_device *ft1000dev)
 {
-   ULONG     value;
-   USHORT   tempword;
-   ULONG    status;
-   PFT1000_INFO pft1000info = netdev_priv(ft1000dev->net);
-
-       if (pft1000info->usbboot == 2) {
-          value = pft1000info->tempbuf[4];
-          tempword = pft1000info->tempbuf[5];
-       }
-       else {
-          value = 0;
-          status = ft1000_read_dpram16(ft1000dev,
DWNLD_MAG1_SIZE_LOC, (PUCHAR)&tempword, 1);
-       }
-
-       value |= (tempword << 16);
-       value = ntohl(value);
+	ULONG value;
+	USHORT tempword;
+	ULONG status;
+	PFT1000_INFO pft1000info = netdev_priv(ft1000dev->net);
+
+	if (pft1000info->usbboot == 2) {
+		value = pft1000info->tempbuf[4];
+		tempword = pft1000info->tempbuf[5];
+	} else {
+		value = 0;
+		status =
+		    ft1000_read_dpram16(ft1000dev, DWNLD_MAG1_SIZE_LOC,
+					(PUCHAR) & tempword, 1);
+	}
+
+	value |= (tempword << 16);
+	value = ntohl(value);

 #if FIFO_DNLD
-   if (pft1000info->usbboot == 1)
-       pft1000info->usbboot = 2;
+	if (pft1000info->usbboot == 1)
+		pft1000info->usbboot = 2;
 #endif

-   //DEBUG("get_request_value_usb: value is %x\n", value);
-   return value;
+	//DEBUG("get_request_value_usb: value is %x\n", value);
+	return value;

 }

@@ -649,20 +689,18 @@ long get_request_value_usb(struct ft1000_device
*ft1000dev)
 //---------------------------------------------------------------------------
 void put_request_value(struct ft1000_device *ft1000dev, long lvalue)
 {
-   ULONG    tempx;
-   ULONG    status;
-
-       tempx = ntohl(lvalue);
-       status = fix_ft1000_write_dpram32(ft1000dev,
DWNLD_MAG1_SIZE_LOC, (PUCHAR)&tempx);
-
+	ULONG tempx;
+	ULONG status;

+	tempx = ntohl(lvalue);
+	status =
+	    fix_ft1000_write_dpram32(ft1000dev, DWNLD_MAG1_SIZE_LOC,
+				     (PUCHAR) & tempx);

-   //DEBUG("put_request_value: value is %x\n", lvalue);
+	//DEBUG("put_request_value: value is %x\n", lvalue);

 }

-
-
 //---------------------------------------------------------------------------
 // Function:    hdr_checksum
 //
@@ -677,17 +715,15 @@ void put_request_value(struct ft1000_device
*ft1000dev, long lvalue)
 //---------------------------------------------------------------------------
 USHORT hdr_checksum(PPSEUDO_HDR pHdr)
 {
-   USHORT   *usPtr = (USHORT *)pHdr;
-   USHORT   chksum;
+	USHORT *usPtr = (USHORT *) pHdr;
+	USHORT chksum;

+	chksum = ((((((usPtr[0] ^ usPtr[1]) ^ usPtr[2]) ^ usPtr[3]) ^
+		    usPtr[4]) ^ usPtr[5]) ^ usPtr[6]);

-  chksum = ((((((usPtr[0] ^ usPtr[1]) ^ usPtr[2]) ^ usPtr[3]) ^
-                    usPtr[4]) ^ usPtr[5]) ^ usPtr[6]);
-
-  return chksum;
+	return chksum;
 }

-
 //---------------------------------------------------------------------------
 // Function:    write_blk
 //
@@ -705,143 +741,157 @@ USHORT hdr_checksum(PPSEUDO_HDR pHdr)
 // Notes:
 //
 //---------------------------------------------------------------------------
-ULONG write_blk (struct ft1000_device *ft1000dev, USHORT **pUsFile,
UCHAR **pUcFile, long word_length)
+ULONG write_blk(struct ft1000_device * ft1000dev, USHORT ** pUsFile,
+		UCHAR ** pUcFile, long word_length)
 {
-   ULONG Status = STATUS_SUCCESS;
-   USHORT dpram;
-   long temp_word_length;
-   int loopcnt, i, j;
-   USHORT *pTempFile;
-   USHORT tempword;
-   USHORT tempbuffer[64];
-   USHORT resultbuffer[64];
-   PFT1000_INFO pft1000info = netdev_priv(ft1000dev->net);
-
-   //DEBUG("FT1000:download:start word_length = %d\n",(int)word_length);
-   dpram = (USHORT)DWNLD_MAG1_PS_HDR_LOC;
-   tempword = *(*pUsFile);
-   (*pUsFile)++;
-   Status = ft1000_write_dpram16(ft1000dev, dpram, tempword, 0);
-   tempword = *(*pUsFile);
-   (*pUsFile)++;
-   Status = ft1000_write_dpram16(ft1000dev, dpram++, tempword, 1);
-
-   *pUcFile = *pUcFile + 4;
-   word_length--;
-   tempword = (USHORT)word_length;
-   word_length = (word_length / 16) + 1;
-   pTempFile = *pUsFile;
-   temp_word_length = word_length;
-   for (; word_length > 0; word_length--) /* In words */
-   {
-	   loopcnt = 0;
-
-	      for (i=0; i<32; i++)
-	      {
-		       if (tempword != 0)
-		       {
-    		           tempbuffer[i++] = *(*pUsFile);
-			   (*pUsFile)++;
-   	    	           tempbuffer[i] = *(*pUsFile);
-			   (*pUsFile)++;
-			   *pUcFile = *pUcFile + 4;
-			   loopcnt++;
-			   tempword--;
-		       }
-		       else
-		       {
-			   tempbuffer[i++] = 0;
-			   tempbuffer[i] = 0;
-                       }
-	      }
-
-              //DEBUG("write_blk: loopcnt is %d\n", loopcnt);
-              //DEBUG("write_blk: bootmode = %d\n", bootmode);
-              //DEBUG("write_blk: dpram = %x\n", dpram);
-	      if (pft1000info->bootmode == 0)
-	      {
-		 if (dpram >= 0x3F4)
-                     Status = ft1000_write_dpram32 (ft1000dev, dpram,
(PUCHAR)&tempbuffer[0], 8);
-	         else
-                    Status = ft1000_write_dpram32 (ft1000dev, dpram,
(PUCHAR)&tempbuffer[0], 64);
-	      }
-	      else
-	      {
-                 for (j=0; j<10; j++)
-                 {
-                   Status = ft1000_write_dpram32 (ft1000dev, dpram,
(PUCHAR)&tempbuffer[0], 64);
-		   if (Status == STATUS_SUCCESS)
-		   {
-		       // Work around for ASIC bit stuffing problem.
-		       if ( (tempbuffer[31] & 0xfe00) == 0xfe00)
-		       {
-      		           Status = ft1000_write_dpram32(ft1000dev, dpram+12,
(PUCHAR)&tempbuffer[24], 64);
-		       }
-    		       // Let's check the data written
-	    	       Status = ft1000_read_dpram32 (ft1000dev, dpram,
(PUCHAR)&resultbuffer[0], 64);
-		       if ( (tempbuffer[31] & 0xfe00) == 0xfe00)
-		       {
-		           for (i=0; i<28; i++)
-		           {
-			       if (resultbuffer[i] != tempbuffer[i])
-			       {
-			           //NdisMSleep (100);
-                                   DEBUG("FT1000:download:DPRAM write
failed 1 during bootloading\n");
-				   msleep(10);
-     	  			   Status = STATUS_FAILURE;
-				   break;
-				}
-			   }
-   			   Status = ft1000_read_dpram32 (ft1000dev, dpram+12,
(PUCHAR)&resultbuffer[0], 64);
-		           for (i=0; i<16; i++)
-		           {
-    			       if (resultbuffer[i] != tempbuffer[i+24])
-    			       {
-                                   //NdisMSleep (100);
-                                   DEBUG("FT1000:download:DPRAM write
failed 2 during bootloading\n");
-				   msleep(10);
-				   Status = STATUS_FAILURE;
-				   break;
-				}
-			   }
+	ULONG Status = STATUS_SUCCESS;
+	USHORT dpram;
+	long temp_word_length;
+	int loopcnt, i, j;
+	USHORT *pTempFile;
+	USHORT tempword;
+	USHORT tempbuffer[64];
+	USHORT resultbuffer[64];
+	PFT1000_INFO pft1000info = netdev_priv(ft1000dev->net);
+
+	//DEBUG("FT1000:download:start word_length = %d\n",(int)word_length);
+	dpram = (USHORT) DWNLD_MAG1_PS_HDR_LOC;
+	tempword = *(*pUsFile);
+	(*pUsFile)++;
+	Status = ft1000_write_dpram16(ft1000dev, dpram, tempword, 0);
+	tempword = *(*pUsFile);
+	(*pUsFile)++;
+	Status = ft1000_write_dpram16(ft1000dev, dpram++, tempword, 1);
+
+	*pUcFile = *pUcFile + 4;
+	word_length--;
+	tempword = (USHORT) word_length;
+	word_length = (word_length / 16) + 1;
+	pTempFile = *pUsFile;
+	temp_word_length = word_length;
+	for (; word_length > 0; word_length--) {	/* In words */
+		loopcnt = 0;
+
+		for (i = 0; i < 32; i++) {
+			if (tempword != 0) {
+				tempbuffer[i++] = *(*pUsFile);
+				(*pUsFile)++;
+				tempbuffer[i] = *(*pUsFile);
+				(*pUsFile)++;
+				*pUcFile = *pUcFile + 4;
+				loopcnt++;
+				tempword--;
+			} else {
+				tempbuffer[i++] = 0;
+				tempbuffer[i] = 0;
 			}
+		}
+
+		//DEBUG("write_blk: loopcnt is %d\n", loopcnt);
+		//DEBUG("write_blk: bootmode = %d\n", bootmode);
+		//DEBUG("write_blk: dpram = %x\n", dpram);
+		if (pft1000info->bootmode == 0) {
+			if (dpram >= 0x3F4)
+				Status =
+				    ft1000_write_dpram32(ft1000dev, dpram,
+							 (PUCHAR) &
+							 tempbuffer[0], 8);
 			else
-			{
-			    for (i=0; i<32; i++)
-			    {
-    			        if (resultbuffer[i] != tempbuffer[i])
-    			        {
-                                    //NdisMSleep (100);
-                                    DEBUG("FT1000:download:DPRAM
write failed 3 during bootloading\n");
-				    msleep(10);
-				    Status = STATUS_FAILURE;
-				    break;
+				Status =
+				    ft1000_write_dpram32(ft1000dev, dpram,
+							 (PUCHAR) &
+							 tempbuffer[0], 64);
+		} else {
+			for (j = 0; j < 10; j++) {
+				Status =
+				    ft1000_write_dpram32(ft1000dev, dpram,
+							 (PUCHAR) &
+							 tempbuffer[0], 64);
+				if (Status == STATUS_SUCCESS) {
+					// Work around for ASIC bit stuffing problem.
+					if ((tempbuffer[31] & 0xfe00) == 0xfe00) {
+						Status =
+						    ft1000_write_dpram32
+						    (ft1000dev, dpram + 12,
+						     (PUCHAR) & tempbuffer[24],
+						     64);
+					}
+					// Let's check the data written
+					Status =
+					    ft1000_read_dpram32(ft1000dev,
+								dpram,
+								(PUCHAR) &
+								resultbuffer[0],
+								64);
+					if ((tempbuffer[31] & 0xfe00) == 0xfe00) {
+						for (i = 0; i < 28; i++) {
+							if (resultbuffer[i] !=
+							    tempbuffer[i]) {
+								//NdisMSleep (100);
+								DEBUG
+								    ("FT1000:download:DPRAM write failed 1 during bootloading\n");
+								msleep(10);
+								Status =
+								    STATUS_FAILURE;
+								break;
+							}
+						}
+						Status =
+						    ft1000_read_dpram32
+						    (ft1000dev, dpram + 12,
+						     (PUCHAR) & resultbuffer[0],
+						     64);
+						for (i = 0; i < 16; i++) {
+							if (resultbuffer[i] !=
+							    tempbuffer[i +
+								       24]) {
+								//NdisMSleep (100);
+								DEBUG
+								    ("FT1000:download:DPRAM write failed 2 during bootloading\n");
+								msleep(10);
+								Status =
+								    STATUS_FAILURE;
+								break;
+							}
+						}
+					} else {
+						for (i = 0; i < 32; i++) {
+							if (resultbuffer[i] !=
+							    tempbuffer[i]) {
+								//NdisMSleep (100);
+								DEBUG
+								    ("FT1000:download:DPRAM write failed 3 during bootloading\n");
+								msleep(10);
+								Status =
+								    STATUS_FAILURE;
+								break;
+							}
+						}
+					}
+
+					if (Status == STATUS_SUCCESS)
+						break;
+
 				}
-			    }
 			}

-			if (Status == STATUS_SUCCESS)
-			    break;
-
-		    }
-		}
+			if (Status != STATUS_SUCCESS) {
+				DEBUG
+				    ("FT1000:download:Write failed tempbuffer[31] = 0x%x\n",
+				     tempbuffer[31]);
+				break;
+			}

-		if (Status != STATUS_SUCCESS)
-		{
-                    DEBUG("FT1000:download:Write failed
tempbuffer[31] = 0x%x\n", tempbuffer[31]);
-		    break;
 		}
+		dpram = dpram + loopcnt;
+	}

-	     }
-   	     dpram = dpram + loopcnt;
-   }
-
-   return Status;
+	return Status;
 }

-static void usb_dnld_complete (struct urb *urb)
+static void usb_dnld_complete(struct urb *urb)
 {
-    //DEBUG("****** usb_dnld_complete\n");
+	//DEBUG("****** usb_dnld_complete\n");
 }

 //---------------------------------------------------------------------------
@@ -861,60 +911,58 @@ static void usb_dnld_complete (struct urb *urb)
 // Notes:
 //
 //---------------------------------------------------------------------------
-ULONG write_blk_fifo (struct ft1000_device *ft1000dev, USHORT
**pUsFile, UCHAR **pUcFile, long word_length)
+ULONG write_blk_fifo(struct ft1000_device *ft1000dev, USHORT ** pUsFile,
+		     UCHAR ** pUcFile, long word_length)
 {
-   ULONG Status = STATUS_SUCCESS;
-   int byte_length;
-   long aligncnt;
+	ULONG Status = STATUS_SUCCESS;
+	int byte_length;
+	long aligncnt;

-   byte_length = word_length * 4;
+	byte_length = word_length * 4;

-   if (byte_length % 4)
-      aligncnt = 4 - (byte_length % 4);
-   else
-      aligncnt = 0;
-   byte_length += aligncnt;
+	if (byte_length % 4)
+		aligncnt = 4 - (byte_length % 4);
+	else
+		aligncnt = 0;
+	byte_length += aligncnt;

-   if (byte_length && ((byte_length % 64) == 0)) {
-      byte_length += 4;
-   }
+	if (byte_length && ((byte_length % 64) == 0)) {
+		byte_length += 4;
+	}

-   if (byte_length < 64)
-       byte_length = 68;
+	if (byte_length < 64)
+		byte_length = 68;

 #if 0
-   pblk = kzalloc(byte_length, GFP_KERNEL);
-   memcpy (pblk, *pUcFile, byte_length);
+	pblk = kzalloc(byte_length, GFP_KERNEL);
+	memcpy(pblk, *pUcFile, byte_length);

-   pipe = usb_sndbulkpipe (ft1000dev->dev, ft1000dev->bulk_out_endpointAddr);
+	pipe =
+	    usb_sndbulkpipe(ft1000dev->dev, ft1000dev->bulk_out_endpointAddr);

-   Status = usb_bulk_msg (ft1000dev->dev,
-                          pipe,
-                          pblk,
-                          byte_length,
-                          &cnt,
-                          10);
-   DEBUG("write_blk_fifo Status = 0x%8x Bytes Transfer = %d Data =
0x%x\n", Status, cnt, *pblk);
+	Status = usb_bulk_msg(ft1000dev->dev,
+			      pipe, pblk, byte_length, &cnt, 10);
+	DEBUG("write_blk_fifo Status = 0x%8x Bytes Transfer = %d Data = 0x%x\n",
+	      Status, cnt, *pblk);

-   kfree(pblk);
+	kfree(pblk);
 #else
-    usb_init_urb(ft1000dev->tx_urb);
-    memcpy (ft1000dev->tx_buf, *pUcFile, byte_length);
-    usb_fill_bulk_urb(ft1000dev->tx_urb,
-                      ft1000dev->dev,
-                      usb_sndbulkpipe(ft1000dev->dev,
ft1000dev->bulk_out_endpointAddr),
-                      ft1000dev->tx_buf,
-                      byte_length,
-                      usb_dnld_complete,
-                      (void*)ft1000dev);
-
-    usb_submit_urb(ft1000dev->tx_urb, GFP_ATOMIC);
+	usb_init_urb(ft1000dev->tx_urb);
+	memcpy(ft1000dev->tx_buf, *pUcFile, byte_length);
+	usb_fill_bulk_urb(ft1000dev->tx_urb,
+			  ft1000dev->dev,
+			  usb_sndbulkpipe(ft1000dev->dev,
+					  ft1000dev->bulk_out_endpointAddr),
+			  ft1000dev->tx_buf, byte_length, usb_dnld_complete,
+			  (void *)ft1000dev);
+
+	usb_submit_urb(ft1000dev->tx_urb, GFP_ATOMIC);
 #endif

-   *pUsFile = *pUsFile + (word_length << 1);
-   *pUcFile = *pUcFile + (word_length << 2);
+	*pUsFile = *pUsFile + (word_length << 1);
+	*pUcFile = *pUcFile + (word_length << 2);

-   return Status;
+	return Status;
 }

 //---------------------------------------------------------------------------
@@ -929,469 +977,558 @@ ULONG write_blk_fifo (struct ft1000_device
*ft1000dev, USHORT **pUsFile, UCHAR *
 //  Returns:    status                  - return code
 //---------------------------------------------------------------------------

-u16 scram_dnldr(struct ft1000_device *ft1000dev, void *pFileStart,
ULONG  FileLength)
+u16 scram_dnldr(struct ft1000_device * ft1000dev, void *pFileStart,
+		ULONG FileLength)
 {
-   u16                     Status = STATUS_SUCCESS;
-   UINT                    uiState;
-   USHORT                  handshake;
-   PPSEUDO_HDR             pHdr;
-   USHORT                  usHdrLength;
-   //PPROV_RECORD            pProvRecord;
-   PDSP_FILE_HDR           pFileHdr;
-   long                    word_length;
-   USHORT                  request;
-   USHORT                  temp;
-   USHORT                  tempword;
-
-   PDSP_FILE_HDR_5         pFileHdr5;
-   PDSP_IMAGE_INFO_V6      pDspImageInfoV6 = NULL;
-   long                    requested_version;
-   BOOLEAN                 bGoodVersion;
-   PDRVMSG                 pMailBoxData;
-   USHORT                  *pUsData = NULL;
-   USHORT                  *pUsFile = NULL;
-   UCHAR                   *pUcFile = NULL;
-   UCHAR                   *pBootEnd = NULL, *pCodeEnd= NULL;
-   int                     imageN;
-   long                    loader_code_address, loader_code_size = 0;
-   long                    run_address = 0, run_size = 0;
-
-   ULONG                   templong;
-   ULONG                   image_chksum = 0;
-
-   USHORT                  dpram = 0;
-   PUCHAR                  pbuffer;
-   PPROV_RECORD            pprov_record;
-   FT1000_INFO *pft1000info = netdev_priv(ft1000dev->net);
-
-   DEBUG("Entered   scram_dnldr...\n");
-
-   pft1000info->fcodeldr = 0;
-   pft1000info->usbboot = 0;
-   pft1000info->dspalive = 0xffff;
-
-
-   //
-   // Get version id of file, at first 4 bytes of file, for newer files.
-   //
-
-   uiState = STATE_START_DWNLD;
-
-   pFileHdr = (PDSP_FILE_HDR)pFileStart;
-   pFileHdr5 = (PDSP_FILE_HDR_5)pFileStart;
-
-   ft1000_write_register (ft1000dev, 0x800, FT1000_REG_MAG_WATERMARK);
-
-      pUsFile = (USHORT *)(pFileStart + pFileHdr5->loader_offset);
-      pUcFile = (UCHAR *)(pFileStart + pFileHdr5->loader_offset);
-
-      pBootEnd = (UCHAR *)(pFileStart + pFileHdr5->loader_code_end);
-
-      loader_code_address = pFileHdr5->loader_code_address;
-      loader_code_size = pFileHdr5->loader_code_size;
-      bGoodVersion = FALSE;
-
-   while ((Status == STATUS_SUCCESS) && (uiState != STATE_DONE_FILE))
-   {
-      switch (uiState)
-      {
-      case  STATE_START_DWNLD:
-         DEBUG("FT1000:STATE_START_DWNLD\n");
-         if (pft1000info->usbboot)
-             handshake = get_handshake_usb(ft1000dev, HANDSHAKE_DSP_BL_READY);
-         else
-             handshake = get_handshake(ft1000dev, HANDSHAKE_DSP_BL_READY);
-
-         if (handshake == HANDSHAKE_DSP_BL_READY)
-         {
-            DEBUG("scram_dnldr: handshake is HANDSHAKE_DSP_BL_READY,
call put_handshake(HANDSHAKE_DRIVER_READY)\n");
-            put_handshake(ft1000dev, HANDSHAKE_DRIVER_READY);
-         }
-         else
-         {
-            DEBUG("FT1000:download:Download error: Handshake failed\n");
-            Status = STATUS_FAILURE;
-         }
-
-         uiState = STATE_BOOT_DWNLD;
-
-         break;
-
-      case STATE_BOOT_DWNLD:
-         DEBUG("FT1000:STATE_BOOT_DWNLD\n");
-         pft1000info->bootmode = 1;
-         handshake = get_handshake(ft1000dev, HANDSHAKE_REQUEST);
-         if (handshake == HANDSHAKE_REQUEST)
-         {
-            /*
-             * Get type associated with the request.
-             */
-            request = get_request_type(ft1000dev);
-            switch (request)
-            {
-            case  REQUEST_RUN_ADDRESS:
-               DEBUG("FT1000:REQUEST_RUN_ADDRESS\n");
-               put_request_value(ft1000dev, loader_code_address);
-               break;
-            case  REQUEST_CODE_LENGTH:
-               DEBUG("FT1000:REQUEST_CODE_LENGTH\n");
-               put_request_value(ft1000dev, loader_code_size);
-               break;
-            case  REQUEST_DONE_BL:
-               DEBUG("FT1000:REQUEST_DONE_BL\n");
-               /* Reposition ptrs to beginning of code section */
-               pUsFile = (USHORT *)(pBootEnd);
-               pUcFile = (UCHAR *)(pBootEnd);
-               //DEBUG("FT1000:download:pUsFile = 0x%8x\n", (int)pUsFile);
-               //DEBUG("FT1000:download:pUcFile = 0x%8x\n", (int)pUcFile);
-               uiState = STATE_CODE_DWNLD;
-               pft1000info->fcodeldr = 1;
-               break;
-            case  REQUEST_CODE_SEGMENT:
-               //DEBUG("FT1000:REQUEST_CODE_SEGMENT\n");
-               word_length = get_request_value(ft1000dev);
-               //DEBUG("FT1000:word_length = 0x%x\n", (int)word_length);
-               //NdisMSleep (100);
-               if (word_length > MAX_LENGTH)
-               {
-                  DEBUG("FT1000:download:Download error: Max length
exceeded\n");
-                  Status = STATUS_FAILURE;
-                  break;
-               }
-               if ( (word_length*2 + pUcFile) > pBootEnd)
-               {
-                  /*
-                   * Error, beyond boot code range.
-                   */
-                  DEBUG("FT1000:download:Download error: Requested
len=%d exceeds BOOT code boundry.\n",
-                                                            (int)word_length);
-                  Status = STATUS_FAILURE;
-                  break;
-               }
-               /*
-                * Position ASIC DPRAM auto-increment pointer.
-                */
-				    dpram = (USHORT)DWNLD_MAG1_PS_HDR_LOC;
+	u16 Status = STATUS_SUCCESS;
+	UINT uiState;
+	USHORT handshake;
+	PPSEUDO_HDR pHdr;
+	USHORT usHdrLength;
+	//PPROV_RECORD            pProvRecord;
+	PDSP_FILE_HDR pFileHdr;
+	long word_length;
+	USHORT request;
+	USHORT temp;
+	USHORT tempword;
+
+	PDSP_FILE_HDR_5 pFileHdr5;
+	PDSP_IMAGE_INFO_V6 pDspImageInfoV6 = NULL;
+	long requested_version;
+	BOOLEAN bGoodVersion;
+	PDRVMSG pMailBoxData;
+	USHORT *pUsData = NULL;
+	USHORT *pUsFile = NULL;
+	UCHAR *pUcFile = NULL;
+	UCHAR *pBootEnd = NULL, *pCodeEnd = NULL;
+	int imageN;
+	long loader_code_address, loader_code_size = 0;
+	long run_address = 0, run_size = 0;
+
+	ULONG templong;
+	ULONG image_chksum = 0;
+
+	USHORT dpram = 0;
+	PUCHAR pbuffer;
+	PPROV_RECORD pprov_record;
+	FT1000_INFO *pft1000info = netdev_priv(ft1000dev->net);
+
+	DEBUG("Entered   scram_dnldr...\n");
+
+	pft1000info->fcodeldr = 0;
+	pft1000info->usbboot = 0;
+	pft1000info->dspalive = 0xffff;
+
+	//
+	// Get version id of file, at first 4 bytes of file, for newer files.
+	//
+
+	uiState = STATE_START_DWNLD;
+
+	pFileHdr = (PDSP_FILE_HDR) pFileStart;
+	pFileHdr5 = (PDSP_FILE_HDR_5) pFileStart;
+
+	ft1000_write_register(ft1000dev, 0x800, FT1000_REG_MAG_WATERMARK);
+
+	pUsFile = (USHORT *) (pFileStart + pFileHdr5->loader_offset);
+	pUcFile = (UCHAR *) (pFileStart + pFileHdr5->loader_offset);
+
+	pBootEnd = (UCHAR *) (pFileStart + pFileHdr5->loader_code_end);
+
+	loader_code_address = pFileHdr5->loader_code_address;
+	loader_code_size = pFileHdr5->loader_code_size;
+	bGoodVersion = FALSE;
+
+	while ((Status == STATUS_SUCCESS) && (uiState != STATE_DONE_FILE)) {
+		switch (uiState) {
+		case STATE_START_DWNLD:
+			DEBUG("FT1000:STATE_START_DWNLD\n");
+			if (pft1000info->usbboot)
+				handshake =
+				    get_handshake_usb(ft1000dev,
+						      HANDSHAKE_DSP_BL_READY);
+			else
+				handshake =
+				    get_handshake(ft1000dev,
+						  HANDSHAKE_DSP_BL_READY);
+
+			if (handshake == HANDSHAKE_DSP_BL_READY) {
+				DEBUG
+				    ("scram_dnldr: handshake is HANDSHAKE_DSP_BL_READY, call
put_handshake(HANDSHAKE_DRIVER_READY)\n");
+				put_handshake(ft1000dev,
+					      HANDSHAKE_DRIVER_READY);
+			} else {
+				DEBUG
+				    ("FT1000:download:Download error: Handshake failed\n");
+				Status = STATUS_FAILURE;
+			}
+
+			uiState = STATE_BOOT_DWNLD;
+
+			break;
+
+		case STATE_BOOT_DWNLD:
+			DEBUG("FT1000:STATE_BOOT_DWNLD\n");
+			pft1000info->bootmode = 1;
+			handshake = get_handshake(ft1000dev, HANDSHAKE_REQUEST);
+			if (handshake == HANDSHAKE_REQUEST) {
+				/*
+				 * Get type associated with the request.
+				 */
+				request = get_request_type(ft1000dev);
+				switch (request) {
+				case REQUEST_RUN_ADDRESS:
+					DEBUG("FT1000:REQUEST_RUN_ADDRESS\n");
+					put_request_value(ft1000dev,
+							  loader_code_address);
+					break;
+				case REQUEST_CODE_LENGTH:
+					DEBUG("FT1000:REQUEST_CODE_LENGTH\n");
+					put_request_value(ft1000dev,
+							  loader_code_size);
+					break;
+				case REQUEST_DONE_BL:
+					DEBUG("FT1000:REQUEST_DONE_BL\n");
+					/* Reposition ptrs to beginning of code section */
+					pUsFile = (USHORT *) (pBootEnd);
+					pUcFile = (UCHAR *) (pBootEnd);
+					//DEBUG("FT1000:download:pUsFile = 0x%8x\n", (int)pUsFile);
+					//DEBUG("FT1000:download:pUcFile = 0x%8x\n", (int)pUcFile);
+					uiState = STATE_CODE_DWNLD;
+					pft1000info->fcodeldr = 1;
+					break;
+				case REQUEST_CODE_SEGMENT:
+					//DEBUG("FT1000:REQUEST_CODE_SEGMENT\n");
+					word_length =
+					    get_request_value(ft1000dev);
+					//DEBUG("FT1000:word_length = 0x%x\n", (int)word_length);
+					//NdisMSleep (100);
+					if (word_length > MAX_LENGTH) {
+						DEBUG
+						    ("FT1000:download:Download error: Max length exceeded\n");
+						Status = STATUS_FAILURE;
+						break;
+					}
+					if ((word_length * 2 + pUcFile) >
+					    pBootEnd) {
+						/*
+						 * Error, beyond boot code range.
+						 */
+						DEBUG
+						    ("FT1000:download:Download error: Requested len=%d exceeds
BOOT code boundry.\n",
+						     (int)word_length);
+						Status = STATUS_FAILURE;
+						break;
+					}
+					/*
+					 * Position ASIC DPRAM auto-increment pointer.
+					 */
+					dpram = (USHORT) DWNLD_MAG1_PS_HDR_LOC;
 					if (word_length & 0x1)
 						word_length++;
 					word_length = word_length / 2;

-			Status =   write_blk(ft1000dev, &pUsFile, &pUcFile, word_length);
-			//DEBUG("write_blk returned %d\n", Status);
-               break;
-            default:
-               DEBUG("FT1000:download:Download error: Bad request
type=%d in BOOT download state.\n",request);
-               Status = STATUS_FAILURE;
-               break;
-            }
-            if (pft1000info->usbboot)
-                put_handshake_usb(ft1000dev, HANDSHAKE_RESPONSE);
-            else
-                put_handshake(ft1000dev, HANDSHAKE_RESPONSE);
-         }
-         else
-         {
-            DEBUG("FT1000:download:Download error: Handshake failed\n");
-            Status = STATUS_FAILURE;
-         }
-
-         break;
-
-      case STATE_CODE_DWNLD:
-         //DEBUG("FT1000:STATE_CODE_DWNLD\n");
-         pft1000info->bootmode = 0;
-         if (pft1000info->usbboot)
-            handshake = get_handshake_usb(ft1000dev, HANDSHAKE_REQUEST);
-         else
-            handshake = get_handshake(ft1000dev, HANDSHAKE_REQUEST);
-         if (handshake == HANDSHAKE_REQUEST)
-         {
-            /*
-             * Get type associated with the request.
-             */
-            if (pft1000info->usbboot)
-                request = get_request_type_usb(ft1000dev);
-            else
-                request = get_request_type(ft1000dev);
-            switch (request)
-            {
-            case REQUEST_FILE_CHECKSUM:
-                DEBUG("FT1000:download:image_chksum = 0x%8x\n", image_chksum);
-                put_request_value(ft1000dev, image_chksum);
-                break;
-            case  REQUEST_RUN_ADDRESS:
-               DEBUG("FT1000:download:  REQUEST_RUN_ADDRESS\n");
-               if (bGoodVersion)
-               {
-                  DEBUG("FT1000:download:run_address = 0x%8x\n",
(int)run_address);
-                  put_request_value(ft1000dev, run_address);
-               }
-               else
-               {
-                  DEBUG("FT1000:download:Download error: Got Run
address request before image offset request.\n");
-                  Status = STATUS_FAILURE;
-                  break;
-               }
-               break;
-            case  REQUEST_CODE_LENGTH:
-               DEBUG("FT1000:download:REQUEST_CODE_LENGTH\n");
-               if (bGoodVersion)
-               {
-                  DEBUG("FT1000:download:run_size = 0x%8x\n", (int)run_size);
-                  put_request_value(ft1000dev, run_size);
-               }
-               else
-               {
-                  DEBUG("FT1000:download:Download error: Got Size
request before image offset request.\n");
-                  Status = STATUS_FAILURE;
-                  break;
-               }
-               break;
-            case  REQUEST_DONE_CL:
+					Status =
+					    write_blk(ft1000dev, &pUsFile,
+						      &pUcFile, word_length);
+					//DEBUG("write_blk returned %d\n", Status);
+					break;
+				default:
+					DEBUG
+					    ("FT1000:download:Download error: Bad request type=%d in
BOOT download state.\n",
+					     request);
+					Status = STATUS_FAILURE;
+					break;
+				}
+				if (pft1000info->usbboot)
+					put_handshake_usb(ft1000dev,
+							  HANDSHAKE_RESPONSE);
+				else
+					put_handshake(ft1000dev,
+						      HANDSHAKE_RESPONSE);
+			} else {
+				DEBUG
+				    ("FT1000:download:Download error: Handshake failed\n");
+				Status = STATUS_FAILURE;
+			}
+
+			break;
+
+		case STATE_CODE_DWNLD:
+			//DEBUG("FT1000:STATE_CODE_DWNLD\n");
+			pft1000info->bootmode = 0;
+			if (pft1000info->usbboot)
+				handshake =
+				    get_handshake_usb(ft1000dev,
+						      HANDSHAKE_REQUEST);
+			else
+				handshake =
+				    get_handshake(ft1000dev, HANDSHAKE_REQUEST);
+			if (handshake == HANDSHAKE_REQUEST) {
+				/*
+				 * Get type associated with the request.
+				 */
+				if (pft1000info->usbboot)
+					request =
+					    get_request_type_usb(ft1000dev);
+				else
+					request = get_request_type(ft1000dev);
+				switch (request) {
+				case REQUEST_FILE_CHECKSUM:
+					DEBUG
+					    ("FT1000:download:image_chksum = 0x%8x\n",
+					     image_chksum);
+					put_request_value(ft1000dev,
+							  image_chksum);
+					break;
+				case REQUEST_RUN_ADDRESS:
+					DEBUG
+					    ("FT1000:download:  REQUEST_RUN_ADDRESS\n");
+					if (bGoodVersion) {
+						DEBUG
+						    ("FT1000:download:run_address = 0x%8x\n",
+						     (int)run_address);
+						put_request_value(ft1000dev,
+								  run_address);
+					} else {
+						DEBUG
+						    ("FT1000:download:Download error: Got Run address request
before image offset request.\n");
+						Status = STATUS_FAILURE;
+						break;
+					}
+					break;
+				case REQUEST_CODE_LENGTH:
+					DEBUG
+					    ("FT1000:download:REQUEST_CODE_LENGTH\n");
+					if (bGoodVersion) {
+						DEBUG
+						    ("FT1000:download:run_size = 0x%8x\n",
+						     (int)run_size);
+						put_request_value(ft1000dev,
+								  run_size);
+					} else {
+						DEBUG
+						    ("FT1000:download:Download error: Got Size request before
image offset request.\n");
+						Status = STATUS_FAILURE;
+						break;
+					}
+					break;
+				case REQUEST_DONE_CL:
 #if FIFO_DNLD
-               pft1000info->usbboot = 3;
+					pft1000info->usbboot = 3;
 #endif
-               /* Reposition ptrs to beginning of provisioning section */
-                  pUsFile = (USHORT *)(pFileStart +
pFileHdr5->commands_offset);
-                  pUcFile = (UCHAR *)(pFileStart + pFileHdr5->commands_offset);
-               uiState = STATE_DONE_DWNLD;
-               break;
-            case  REQUEST_CODE_SEGMENT:
-               //DEBUG("FT1000:download: REQUEST_CODE_SEGMENT - CODELOADER\n");
-               if (!bGoodVersion)
-               {
-                  DEBUG("FT1000:download:Download error: Got Code
Segment request before image offset request.\n");
-                  Status = STATUS_FAILURE;
-                  break;
-               }
+					/* Reposition ptrs to beginning of provisioning section */
+					pUsFile =
+					    (USHORT *) (pFileStart +
+							pFileHdr5->
+							commands_offset);
+					pUcFile =
+					    (UCHAR *) (pFileStart +
+						       pFileHdr5->
+						       commands_offset);
+					uiState = STATE_DONE_DWNLD;
+					break;
+				case REQUEST_CODE_SEGMENT:
+					//DEBUG("FT1000:download: REQUEST_CODE_SEGMENT - CODELOADER\n");
+					if (!bGoodVersion) {
+						DEBUG
+						    ("FT1000:download:Download error: Got Code Segment request
before image offset request.\n");
+						Status = STATUS_FAILURE;
+						break;
+					}
 #if 0
-               word_length = get_request_value_usb(ft1000dev);
-               //DEBUG("FT1000:download:word_length = %d\n", (int)word_length);
-               if (word_length > MAX_LENGTH/2)
+					word_length =
+					    get_request_value_usb(ft1000dev);
+					//DEBUG("FT1000:download:word_length = %d\n", (int)word_length);
+					if (word_length > MAX_LENGTH / 2)
 #else
-               word_length = get_request_value(ft1000dev);
-               //DEBUG("FT1000:download:word_length = %d\n", (int)word_length);
-               if (word_length > MAX_LENGTH)
+					word_length =
+					    get_request_value(ft1000dev);
+					//DEBUG("FT1000:download:word_length = %d\n", (int)word_length);
+					if (word_length > MAX_LENGTH)
 #endif
-               {
-                  DEBUG("FT1000:download:Download error: Max length
exceeded\n");
-                  Status = STATUS_FAILURE;
-                  break;
-               }
-               if ( (word_length*2 + pUcFile) > pCodeEnd)
-               {
-                  /*
-                   * Error, beyond boot code range.
-                   */
-                  DEBUG("FT1000:download:Download error: Requested
len=%d exceeds DSP code boundry.\n",
-                               (int)word_length);
-                  Status = STATUS_FAILURE;
-                  break;
-               }
-               /*
-                * Position ASIC DPRAM auto-increment pointer.
-                */
-		   dpram = (USHORT)DWNLD_MAG1_PS_HDR_LOC;
-		   if (word_length & 0x1)
-			word_length++;
-		   word_length = word_length / 2;
+					{
+						DEBUG
+						    ("FT1000:download:Download error: Max length exceeded\n");
+						Status = STATUS_FAILURE;
+						break;
+					}
+					if ((word_length * 2 + pUcFile) >
+					    pCodeEnd) {
+						/*
+						 * Error, beyond boot code range.
+						 */
+						DEBUG
+						    ("FT1000:download:Download error: Requested len=%d exceeds
DSP code boundry.\n",
+						     (int)word_length);
+						Status = STATUS_FAILURE;
+						break;
+					}
+					/*
+					 * Position ASIC DPRAM auto-increment pointer.
+					 */
+					dpram = (USHORT) DWNLD_MAG1_PS_HDR_LOC;
+					if (word_length & 0x1)
+						word_length++;
+					word_length = word_length / 2;

 #if FIFO_DNLD
-   	       write_blk_fifo (ft1000dev, &pUsFile, &pUcFile, word_length);
-               if (pft1000info->usbboot == 0)
-                   pft1000info->usbboot++;
-               if (pft1000info->usbboot == 1) {
-                   tempword = 0;
-                   ft1000_write_dpram16 (ft1000dev,
DWNLD_MAG1_PS_HDR_LOC, tempword, 0);
-               }
+					write_blk_fifo(ft1000dev, &pUsFile,
+						       &pUcFile, word_length);
+					if (pft1000info->usbboot == 0)
+						pft1000info->usbboot++;
+					if (pft1000info->usbboot == 1) {
+						tempword = 0;
+						ft1000_write_dpram16(ft1000dev,
+								     DWNLD_MAG1_PS_HDR_LOC,
+								     tempword,
+								     0);
+					}
 #else
-   	       write_blk (ft1000dev, &pUsFile, &pUcFile, word_length);
-   	       //ft1000_write_dpram32 (ft1000dev, dpram, (PUCHAR)pUcFile,
word_length);
+					write_blk(ft1000dev, &pUsFile, &pUcFile,
+						  word_length);
+					//ft1000_write_dpram32 (ft1000dev, dpram, (PUCHAR)pUcFile, word_length);
 #endif
-               break;
+					break;
+
+				case REQUEST_MAILBOX_DATA:
+					DEBUG
+					    ("FT1000:download: REQUEST_MAILBOX_DATA\n");
+					// Convert length from byte count to word count. Make sure we round up.
+					word_length =
+					    (long)(pft1000info->DSPInfoBlklen +
+						   1) / 2;
+					put_request_value(ft1000dev,
+							  word_length);
+					pMailBoxData =
+					    (PDRVMSG) & (pft1000info->
+							 DSPInfoBlk[0]);
+					/*
+					 * Position ASIC DPRAM auto-increment pointer.
+					 */
+
+					pUsData =
+					    (USHORT *) & pMailBoxData->data[0];
+					dpram = (USHORT) DWNLD_MAG1_PS_HDR_LOC;
+					if (word_length & 0x1)
+						word_length++;

-            case  REQUEST_MAILBOX_DATA:
-               DEBUG("FT1000:download: REQUEST_MAILBOX_DATA\n");
-               // Convert length from byte count to word count. Make
sure we round up.
-               word_length = (long)(pft1000info->DSPInfoBlklen + 1)/2;
-               put_request_value(ft1000dev, word_length);
-               pMailBoxData = (PDRVMSG)&(pft1000info->DSPInfoBlk[0]);
-               /*
-                * Position ASIC DPRAM auto-increment pointer.
-                */
-
-
-                   pUsData = (USHORT *)&pMailBoxData->data[0];
-                   dpram = (USHORT)DWNLD_MAG1_PS_HDR_LOC;
-                   if (word_length & 0x1)
-                       word_length++;
-
-                   word_length = (word_length / 2);
-
-
-               for (; word_length > 0; word_length--) /* In words */
-               {
-
-                      templong = *pUsData++;
-					  templong |= (*pUsData++ << 16);
-                      Status = fix_ft1000_write_dpram32 (ft1000dev,
dpram++, (PUCHAR)&templong);
-
-               }
-               break;
-
-            case  REQUEST_VERSION_INFO:
-               DEBUG("FT1000:download:REQUEST_VERSION_INFO\n");
-               word_length = pFileHdr5->version_data_size;
-               put_request_value(ft1000dev, word_length);
-               /*
-                * Position ASIC DPRAM auto-increment pointer.
-                */
-
-               pUsFile = (USHORT *)(pFileStart +
pFileHdr5->version_data_offset);
-
-
-                   dpram = (USHORT)DWNLD_MAG1_PS_HDR_LOC;
-                   if (word_length & 0x1)
-                       word_length++;
-
-                   word_length = (word_length / 2);
-
-
-               for (; word_length > 0; word_length--) /* In words */
-               {
-
-                      templong = ntohs(*pUsFile++);
-					  temp = ntohs(*pUsFile++);
-					  templong |= (temp << 16);
-                      Status = fix_ft1000_write_dpram32 (ft1000dev,
dpram++, (PUCHAR)&templong);
-
-               }
-               break;
-
-            case  REQUEST_CODE_BY_VERSION:
-               DEBUG("FT1000:download:REQUEST_CODE_BY_VERSION\n");
-               bGoodVersion = FALSE;
-               requested_version = get_request_value(ft1000dev);
-
-                   pDspImageInfoV6 = (PDSP_IMAGE_INFO_V6)(pFileStart
+ sizeof(DSP_FILE_HDR_5));
-
-               for (imageN = 0; imageN < pFileHdr5->nDspImages; imageN++)
-               {
-
-                       temp = (USHORT)(pDspImageInfoV6->version);
-                       templong = temp;
-                       temp = (USHORT)(pDspImageInfoV6->version >> 16);
-                       templong |= (temp << 16);
-                   if (templong == (ULONG)requested_version)
-                       {
-                           bGoodVersion = TRUE;
-                           DEBUG("FT1000:download: bGoodVersion is TRUE\n");
-                           pUsFile = (USHORT *)(pFileStart +
pDspImageInfoV6->begin_offset);
-                           pUcFile = (UCHAR *)(pFileStart +
pDspImageInfoV6->begin_offset);
-                           pCodeEnd = (UCHAR *)(pFileStart +
pDspImageInfoV6->end_offset);
-                           run_address = pDspImageInfoV6->run_address;
-                           run_size = pDspImageInfoV6->image_size;
-                           image_chksum = (ULONG)pDspImageInfoV6->checksum;
-                           break;
-                        }
-                        pDspImageInfoV6++;
-
-
-               } //end of for
-
-               if (!bGoodVersion)
-               {
-                  /*
-                   * Error, beyond boot code range.
-                   */
-                  DEBUG("FT1000:download:Download error: Bad Version
Request = 0x%x.\n",(int)requested_version);
-                  Status = STATUS_FAILURE;
-                  break;
-               }
-               break;
-
-            default:
-               DEBUG("FT1000:download:Download error: Bad request
type=%d in CODE download state.\n",request);
-               Status = STATUS_FAILURE;
-               break;
-            }
-            if (pft1000info->usbboot)
-                put_handshake_usb(ft1000dev, HANDSHAKE_RESPONSE);
-            else
-                put_handshake(ft1000dev, HANDSHAKE_RESPONSE);
-         }
-         else
-         {
-            DEBUG("FT1000:download:Download error: Handshake failed\n");
-            Status = STATUS_FAILURE;
-         }
-
-         break;
-
-      case STATE_DONE_DWNLD:
-         DEBUG("FT1000:download:Code loader is done...\n");
-         uiState = STATE_SECTION_PROV;
-         break;
-
-      case  STATE_SECTION_PROV:
-         DEBUG("FT1000:download:STATE_SECTION_PROV\n");
-         pHdr = (PPSEUDO_HDR)pUcFile;
-
-         if (pHdr->checksum == hdr_checksum(pHdr))
-         {
-            if (pHdr->portdest != 0x80 /* Dsp OAM */)
-            {
-               uiState = STATE_DONE_PROV;
-               break;
-            }
-            usHdrLength = ntohs(pHdr->length);    /* Byte length for
PROV records */
-
-            // Get buffer for provisioning data
-            pbuffer = kmalloc ( (usHdrLength + sizeof(PSEUDO_HDR) ),
GFP_ATOMIC );
-            if (pbuffer) {
-                memcpy(pbuffer, (void *)pUcFile, (UINT)(usHdrLength +
sizeof(PSEUDO_HDR)));
-                // link provisioning data
-                pprov_record = kmalloc( sizeof(PROV_RECORD), GFP_ATOMIC );
-                if (pprov_record) {
-                    pprov_record->pprov_data = pbuffer;
-                    list_add_tail (&pprov_record->list,
&pft1000info->prov_list);
-                    // Move to next entry if available
-                    pUcFile = (UCHAR *)((UINT)pUcFile +
(UINT)((usHdrLength + 1) & 0xFFFFFFFE) + sizeof(PSEUDO_HDR));
-                    if ( (UINT)(pUcFile) - (UINT)(pFileStart) >=
(UINT)FileLength) {
-                       uiState = STATE_DONE_FILE;
-                    }
-                }
-                else {
-                    kfree(pbuffer);
-                    Status = STATUS_FAILURE;
-                }
-            }
-            else {
-                Status = STATUS_FAILURE;
-            }
-         }
-         else
-         {
-            /* Checksum did not compute */
-            Status = STATUS_FAILURE;
-         }
-         DEBUG("ft1000:download: after STATE_SECTION_PROV, uiState =
%d, Status= %d\n", uiState, Status);
-         break;
-
-      case  STATE_DONE_PROV:
-         DEBUG("FT1000:download:STATE_DONE_PROV\n");
-         uiState = STATE_DONE_FILE;
-         break;
-
-
-      default:
-         Status = STATUS_FAILURE;
-         break;
-      } /* End Switch */
-
-      if (Status != STATUS_SUCCESS) {
-          break;
-      }
+					word_length = (word_length / 2);
+
+					for (; word_length > 0; word_length--) {	/* In words */
+
+						templong = *pUsData++;
+						templong |= (*pUsData++ << 16);
+						Status =
+						    fix_ft1000_write_dpram32
+						    (ft1000dev, dpram++,
+						     (PUCHAR) & templong);
+
+					}
+					break;
+
+				case REQUEST_VERSION_INFO:
+					DEBUG
+					    ("FT1000:download:REQUEST_VERSION_INFO\n");
+					word_length =
+					    pFileHdr5->version_data_size;
+					put_request_value(ft1000dev,
+							  word_length);
+					/*
+					 * Position ASIC DPRAM auto-increment pointer.
+					 */
+
+					pUsFile =
+					    (USHORT *) (pFileStart +
+							pFileHdr5->
+							version_data_offset);
+
+					dpram = (USHORT) DWNLD_MAG1_PS_HDR_LOC;
+					if (word_length & 0x1)
+						word_length++;
+
+					word_length = (word_length / 2);
+
+					for (; word_length > 0; word_length--) {	/* In words */
+
+						templong = ntohs(*pUsFile++);
+						temp = ntohs(*pUsFile++);
+						templong |= (temp << 16);
+						Status =
+						    fix_ft1000_write_dpram32
+						    (ft1000dev, dpram++,
+						     (PUCHAR) & templong);
+
+					}
+					break;
+
+				case REQUEST_CODE_BY_VERSION:
+					DEBUG
+					    ("FT1000:download:REQUEST_CODE_BY_VERSION\n");
+					bGoodVersion = FALSE;
+					requested_version =
+					    get_request_value(ft1000dev);
+
+					pDspImageInfoV6 =
+					    (PDSP_IMAGE_INFO_V6) (pFileStart +
+								  sizeof
+								  (DSP_FILE_HDR_5));
+
+					for (imageN = 0;
+					     imageN < pFileHdr5->nDspImages;
+					     imageN++) {
+
+						temp =
+						    (USHORT) (pDspImageInfoV6->
+							      version);
+						templong = temp;
+						temp =
+						    (USHORT) (pDspImageInfoV6->
+							      version >> 16);
+						templong |= (temp << 16);
+						if (templong ==
+						    (ULONG) requested_version) {
+							bGoodVersion = TRUE;
+							DEBUG
+							    ("FT1000:download: bGoodVersion is TRUE\n");
+							pUsFile =
+							    (USHORT
+							     *) (pFileStart +
+								 pDspImageInfoV6->
+								 begin_offset);
+							pUcFile =
+							    (UCHAR
+							     *) (pFileStart +
+								 pDspImageInfoV6->
+								 begin_offset);
+							pCodeEnd =
+							    (UCHAR
+							     *) (pFileStart +
+								 pDspImageInfoV6->
+								 end_offset);
+							run_address =
+							    pDspImageInfoV6->
+							    run_address;
+							run_size =
+							    pDspImageInfoV6->
+							    image_size;
+							image_chksum =
+							    (ULONG)
+							    pDspImageInfoV6->
+							    checksum;
+							break;
+						}
+						pDspImageInfoV6++;
+
+					}	//end of for
+
+					if (!bGoodVersion) {
+						/*
+						 * Error, beyond boot code range.
+						 */
+						DEBUG
+						    ("FT1000:download:Download error: Bad Version Request = 0x%x.\n",
+						     (int)requested_version);
+						Status = STATUS_FAILURE;
+						break;
+					}
+					break;
+
+				default:
+					DEBUG
+					    ("FT1000:download:Download error: Bad request type=%d in
CODE download state.\n",
+					     request);
+					Status = STATUS_FAILURE;
+					break;
+				}
+				if (pft1000info->usbboot)
+					put_handshake_usb(ft1000dev,
+							  HANDSHAKE_RESPONSE);
+				else
+					put_handshake(ft1000dev,
+						      HANDSHAKE_RESPONSE);
+			} else {
+				DEBUG
+				    ("FT1000:download:Download error: Handshake failed\n");
+				Status = STATUS_FAILURE;
+			}
+
+			break;
+
+		case STATE_DONE_DWNLD:
+			DEBUG("FT1000:download:Code loader is done...\n");
+			uiState = STATE_SECTION_PROV;
+			break;
+
+		case STATE_SECTION_PROV:
+			DEBUG("FT1000:download:STATE_SECTION_PROV\n");
+			pHdr = (PPSEUDO_HDR) pUcFile;
+
+			if (pHdr->checksum == hdr_checksum(pHdr)) {
+				if (pHdr->portdest != 0x80 /* Dsp OAM */ ) {
+					uiState = STATE_DONE_PROV;
+					break;
+				}
+				usHdrLength = ntohs(pHdr->length);	/* Byte length for PROV records */
+
+				// Get buffer for provisioning data
+				pbuffer =
+				    kmalloc((usHdrLength + sizeof(PSEUDO_HDR)),
+					    GFP_ATOMIC);
+				if (pbuffer) {
+					memcpy(pbuffer, (void *)pUcFile,
+					       (UINT) (usHdrLength +
+						       sizeof(PSEUDO_HDR)));
+					// link provisioning data
+					pprov_record =
+					    kmalloc(sizeof(PROV_RECORD),
+						    GFP_ATOMIC);
+					if (pprov_record) {
+						pprov_record->pprov_data =
+						    pbuffer;
+						list_add_tail(&pprov_record->
+							      list,
+							      &pft1000info->
+							      prov_list);
+						// Move to next entry if available
+						pUcFile =
+						    (UCHAR *) ((UINT) pUcFile +
+							       (UINT) ((usHdrLength + 1) & 0xFFFFFFFE) + sizeof(PSEUDO_HDR));
+						if ((UINT) (pUcFile) -
+						    (UINT) (pFileStart) >=
+						    (UINT) FileLength) {
+							uiState =
+							    STATE_DONE_FILE;
+						}
+					} else {
+						kfree(pbuffer);
+						Status = STATUS_FAILURE;
+					}
+				} else {
+					Status = STATUS_FAILURE;
+				}
+			} else {
+				/* Checksum did not compute */
+				Status = STATUS_FAILURE;
+			}
+			DEBUG
+			    ("ft1000:download: after STATE_SECTION_PROV, uiState = %d,
Status= %d\n",
+			     uiState, Status);
+			break;
+
+		case STATE_DONE_PROV:
+			DEBUG("FT1000:download:STATE_DONE_PROV\n");
+			uiState = STATE_DONE_FILE;
+			break;
+
+		default:
+			Status = STATUS_FAILURE;
+			break;
+		}		/* End Switch */
+
+		if (Status != STATUS_SUCCESS) {
+			break;
+		}

 /****
       // Check if Card is present
@@ -1406,11 +1543,11 @@ u16 scram_dnldr(struct ft1000_device
*ft1000dev, void *pFileStart, ULONG  FileLe
       }
 ****/

-   } /* End while */
+	}			/* End while */

-   DEBUG("Download exiting with status = 0x%8x\n", Status);
-   ft1000_write_register(ft1000dev, FT1000_DB_DNLD_TX, FT1000_REG_DOORBELL);
+	DEBUG("Download exiting with status = 0x%8x\n", Status);
+	ft1000_write_register(ft1000dev, FT1000_DB_DNLD_TX,
+			      FT1000_REG_DOORBELL);

-   return Status;
+	return Status;
 }
-
diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
b/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
index 51ed0dd..1d9a799 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
@@ -16,8 +16,8 @@
 #include <linux/usb.h>
 #include "ft1000_usb.h"
 #include <linux/types.h>
-//#include <asm/semaphore.h>		//aelias [-] reason : file moved
-//#include <linux/semaphore.h>		//aelias [+] reason : file moved
+//#include <asm/semaphore.h>            //aelias [-] reason : file moved
+//#include <linux/semaphore.h>          //aelias [+] reason : file moved
 //#include <asm/io.h>
 //#include <linux/kthread.h>

@@ -35,26 +35,24 @@

 //#define JDEBUG

-
 extern void *pFileStart;
 extern ULONG FileLength;

-
 extern int numofmsgbuf;

-
 int ft1000_poll_thread(void *arg);

 static void ft1000_hbchk(u_long data);
 int ft1000_reset(struct net_device *ft1000dev);
 static int ft1000_start_xmit(struct sk_buff *skb, struct net_device *dev);
-static int ft1000_open (struct net_device *dev);
-int ft1000_close (struct net_device *dev);
+static int ft1000_open(struct net_device *dev);
+int ft1000_close(struct net_device *dev);
 static struct net_device_stats *ft1000_netdev_stats(struct net_device *dev);
-u16 scram_dnldr(struct ft1000_device *ft1000dev, void *pFileStart,
ULONG  FileLength);
+u16 scram_dnldr(struct ft1000_device *ft1000dev, void *pFileStart,
+		ULONG FileLength);
 int ft1000_submit_rx_urb(PFT1000_INFO info);
 static struct timer_list poll_timer[MAX_NUM_CARDS];
-static int ft1000_chkcard (struct ft1000_device *dev);
+static int ft1000_chkcard(struct ft1000_device *dev);
 /*
 static const struct net_device_ops ft1000net_ops = {
     .ndo_start_xmit = ft1000_start_xmit,
@@ -71,61 +69,55 @@ int gCardIndex;

 #define MAX_RCV_LOOP   100

-
 extern struct list_head freercvpool;
-extern spinlock_t free_buff_lock;   // lock to arbitrate free buffer
list for receive command data
+extern spinlock_t free_buff_lock;	// lock to arbitrate free buffer
list for receive command data

 //end of Jim

 extern int ft1000_CreateDevice(struct ft1000_device *dev);
-extern PDPRAM_BLK ft1000_get_buffer (struct list_head *bufflist);
-extern void ft1000_free_buffer (PDPRAM_BLK pdpram_blk, struct
list_head *plist);
-
+extern PDPRAM_BLK ft1000_get_buffer(struct list_head *bufflist);
+extern void ft1000_free_buffer(PDPRAM_BLK pdpram_blk, struct list_head *plist);

 static int atoi(const char *s)
 {
-        int k = 0;
-    int cnt;
-
-        k = 0;
-    cnt = 0;
-        while (*s != '\0' && *s >= '0' && *s <= '9') {
-                k = 10 * k + (*s - '0');
-                s++;
-        // Let's put a limit on this while loop to avoid deadlock scenario
-        if (cnt > 100)
-           break;
-        cnt++;
-        }
-        return k;
+	int k = 0;
+	int cnt;
+
+	k = 0;
+	cnt = 0;
+	while (*s != '\0' && *s >= '0' && *s <= '9') {
+		k = 10 * k + (*s - '0');
+		s++;
+		// Let's put a limit on this while loop to avoid deadlock scenario
+		if (cnt > 100)
+			break;
+		cnt++;
+	}
+	return k;
 }
+
 /****************************************************************
  *     ft1000_control_complete
  ****************************************************************/
 static void ft1000_control_complete(struct urb *urb)
 {
-    struct ft1000_device *ft1000dev = (struct ft1000_device *)urb->context;
-
-    //DEBUG("FT1000_CONTROL_COMPLETE ENTERED\n");
-    if (ft1000dev == NULL )
-    {
-        DEBUG("NULL ft1000dev, failure\n");
-        return ;
-    }
-    else if ( ft1000dev->dev == NULL )
-    {
-        DEBUG("NULL ft1000dev->dev, failure\n");
-        return ;
-    }
-    //spin_lock(&ft1000dev->device_lock);
-
-    if(waitqueue_active(&ft1000dev->control_wait))
-    {
-        wake_up(&ft1000dev->control_wait);
-    }
+	struct ft1000_device *ft1000dev = (struct ft1000_device *)urb->context;
+
+	//DEBUG("FT1000_CONTROL_COMPLETE ENTERED\n");
+	if (ft1000dev == NULL) {
+		DEBUG("NULL ft1000dev, failure\n");
+		return;
+	} else if (ft1000dev->dev == NULL) {
+		DEBUG("NULL ft1000dev->dev, failure\n");
+		return;
+	}
+	//spin_lock(&ft1000dev->device_lock);

-    //DEBUG("FT1000_CONTROL_COMPLETE RETURNED\n");
-    //spin_unlock(&ft1000dev->device_lock);
+	if (waitqueue_active(&ft1000dev->control_wait)) {
+		wake_up(&ft1000dev->control_wait);
+	}
+	//DEBUG("FT1000_CONTROL_COMPLETE RETURNED\n");
+	//spin_unlock(&ft1000dev->device_lock);
 }

 //---------------------------------------------------------------------------
@@ -149,48 +141,37 @@ static void ft1000_control_complete(struct urb *urb)
 // Notes:
 //
 //---------------------------------------------------------------------------
-static int ft1000_control(struct ft1000_device *ft1000dev,unsigned int pipe,
-                          u8 request,
-                          u8 requesttype,
-                          u16 value,
-                          u16 index,
-                          void *data,
-                          u16 size,
-                          int timeout)
+static int ft1000_control(struct ft1000_device *ft1000dev, unsigned int pipe,
+			  u8 request,
+			  u8 requesttype,
+			  u16 value,
+			  u16 index, void *data, u16 size, int timeout)
 {
 	u16 ret;

-    if (ft1000dev == NULL )
-    {
-        DEBUG("NULL ft1000dev, failure\n");
-        return STATUS_FAILURE;
-    }
-    else if ( ft1000dev->dev == NULL )
-    {
-        DEBUG("NULL ft1000dev->dev, failure\n");
-        return STATUS_FAILURE;
-    }
-
-    ret = usb_control_msg(ft1000dev->dev,
-                          pipe,
-                          request,
-                          requesttype,
-                          value,
-                          index,
-                          data,
-                          size,
-                          LARGE_TIMEOUT);
-
-    if (ret>0)
-        ret = STATUS_SUCCESS;
-    else
-        ret = STATUS_FAILURE;
+	if (ft1000dev == NULL) {
+		DEBUG("NULL ft1000dev, failure\n");
+		return STATUS_FAILURE;
+	} else if (ft1000dev->dev == NULL) {
+		DEBUG("NULL ft1000dev->dev, failure\n");
+		return STATUS_FAILURE;
+	}

+	ret = usb_control_msg(ft1000dev->dev,
+			      pipe,
+			      request,
+			      requesttype,
+			      value, index, data, size, LARGE_TIMEOUT);

-    return ret;
+	if (ret > 0)
+		ret = STATUS_SUCCESS;
+	else
+		ret = STATUS_FAILURE;

+	return ret;

 }
+
 //---------------------------------------------------------------------------
 // Function:    ft1000_read_register
 //
@@ -207,29 +188,28 @@ static int ft1000_control(struct ft1000_device
*ft1000dev,unsigned int pipe,
 //
 //---------------------------------------------------------------------------

-u16 ft1000_read_register(struct ft1000_device *ft1000dev, short*
Data, u16 nRegIndx)
+u16 ft1000_read_register(struct ft1000_device * ft1000dev, short *Data,
+			 u16 nRegIndx)
 {
-    u16 ret = STATUS_SUCCESS;
-
-    //DEBUG("ft1000_read_register: reg index is %d\n", nRegIndx);
-    //DEBUG("ft1000_read_register: spin_lock locked\n");
-    ret = ft1000_control(ft1000dev,
-                         usb_rcvctrlpipe(ft1000dev->dev,0),
-                         HARLEY_READ_REGISTER,   //request --READ_REGISTER
-                         HARLEY_READ_OPERATION,  //requestType
-                         0,                      //value
-                         nRegIndx,               //index
-                         Data,                   //data
-                         2,                      //data size
-                         LARGE_TIMEOUT );        //timeout
-
-   //DEBUG("ft1000_read_register: ret is  %d \n", ret);
-
-   //DEBUG("ft1000_read_register: data is  %x \n", *Data);
-   if ( ret != STATUS_SUCCESS )
-       return STATUS_FAILURE;
+	u16 ret = STATUS_SUCCESS;
+
+	//DEBUG("ft1000_read_register: reg index is %d\n", nRegIndx);
+	//DEBUG("ft1000_read_register: spin_lock locked\n");
+	ret = ft1000_control(ft1000dev, usb_rcvctrlpipe(ft1000dev->dev, 0),
HARLEY_READ_REGISTER,	//request --READ_REGISTER
+			     HARLEY_READ_OPERATION,	//requestType
+			     0,	//value
+			     nRegIndx,	//index
+			     Data,	//data
+			     2,	//data size
+			     LARGE_TIMEOUT);	//timeout
+
+	//DEBUG("ft1000_read_register: ret is  %d \n", ret);
+
+	//DEBUG("ft1000_read_register: data is  %x \n", *Data);
+	if (ret != STATUS_SUCCESS)
+		return STATUS_FAILURE;

-   return ret;
+	return ret;

 }

@@ -248,26 +228,21 @@ u16 ft1000_read_register(struct ft1000_device
*ft1000dev, short* Data, u16 nRegI
 // Notes:
 //
 //---------------------------------------------------------------------------
-u16 ft1000_write_register(struct ft1000_device *ft1000dev, USHORT
value, u16 nRegIndx)
+u16 ft1000_write_register(struct ft1000_device * ft1000dev, USHORT value,
+			  u16 nRegIndx)
 {
-     u16 ret = STATUS_SUCCESS;
+	u16 ret = STATUS_SUCCESS;

-     //DEBUG("ft1000_write_register: value is: %d, reg index is:
%d\n", value, nRegIndx);
+	//DEBUG("ft1000_write_register: value is: %d, reg index is: %d\n",
value, nRegIndx);

-     ret = ft1000_control(ft1000dev,
-                           usb_sndctrlpipe(ft1000dev->dev, 0),
-                           HARLEY_WRITE_REGISTER,       //request --
WRITE_REGISTER
-                           HARLEY_WRITE_OPERATION,      //requestType
-                           value,
-                           nRegIndx,
-                           NULL,
-                           0,
-                           LARGE_TIMEOUT );
+	ret = ft1000_control(ft1000dev, usb_sndctrlpipe(ft1000dev->dev, 0),
HARLEY_WRITE_REGISTER,	//request -- WRITE_REGISTER
+			     HARLEY_WRITE_OPERATION,	//requestType
+			     value, nRegIndx, NULL, 0, LARGE_TIMEOUT);

-   if ( ret != STATUS_SUCCESS )
-       return STATUS_FAILURE;
+	if (ret != STATUS_SUCCESS)
+		return STATUS_FAILURE;

-    return ret;
+	return ret;
 }

 //---------------------------------------------------------------------------
@@ -287,28 +262,27 @@ u16 ft1000_write_register(struct ft1000_device
*ft1000dev, USHORT value, u16 nRe
 //
 //---------------------------------------------------------------------------

-u16 ft1000_read_dpram32(struct ft1000_device *ft1000dev, USHORT indx,
PUCHAR buffer, USHORT cnt)
+u16 ft1000_read_dpram32(struct ft1000_device * ft1000dev, USHORT indx,
+			PUCHAR buffer, USHORT cnt)
 {
-    u16 ret = STATUS_SUCCESS;
+	u16 ret = STATUS_SUCCESS;

-    //DEBUG("ft1000_read_dpram32: indx: %d  cnt: %d\n", indx, cnt);
-    ret =ft1000_control(ft1000dev,
-                         usb_rcvctrlpipe(ft1000dev->dev,0),
-                         HARLEY_READ_DPRAM_32,
//request --READ_DPRAM_32
-                         HARLEY_READ_OPERATION,               //requestType
-                         0,                                   //value
-                         indx,                                //index
-                         buffer,                              //data
-                         cnt,                                 //data size
-                         LARGE_TIMEOUT );                     //timeout
+	//DEBUG("ft1000_read_dpram32: indx: %d  cnt: %d\n", indx, cnt);
+	ret = ft1000_control(ft1000dev, usb_rcvctrlpipe(ft1000dev->dev, 0),
HARLEY_READ_DPRAM_32,	//request --READ_DPRAM_32
+			     HARLEY_READ_OPERATION,	//requestType
+			     0,	//value
+			     indx,	//index
+			     buffer,	//data
+			     cnt,	//data size
+			     LARGE_TIMEOUT);	//timeout

-   //DEBUG("ft1000_read_dpram32: ret is  %d \n", ret);
+	//DEBUG("ft1000_read_dpram32: ret is  %d \n", ret);

-   //DEBUG("ft1000_read_dpram32: ret=%d \n", ret);
-   if ( ret != STATUS_SUCCESS )
-       return STATUS_FAILURE;
+	//DEBUG("ft1000_read_dpram32: ret=%d \n", ret);
+	if (ret != STATUS_SUCCESS)
+		return STATUS_FAILURE;

-   return ret;
+	return ret;

 }

@@ -328,30 +302,27 @@ u16 ft1000_read_dpram32(struct ft1000_device
*ft1000dev, USHORT indx, PUCHAR buf
 // Notes:
 //
 //---------------------------------------------------------------------------
-u16 ft1000_write_dpram32(struct ft1000_device *ft1000dev, USHORT
indx, PUCHAR buffer, USHORT cnt)
+u16 ft1000_write_dpram32(struct ft1000_device * ft1000dev, USHORT indx,
+			 PUCHAR buffer, USHORT cnt)
 {
-     u16 ret = STATUS_SUCCESS;
-
-     //DEBUG("ft1000_write_dpram32: indx: %d   buffer: %x cnt: %d\n",
indx, buffer, cnt);
-     if ( cnt % 4)
-         cnt += cnt - (cnt % 4);
+	u16 ret = STATUS_SUCCESS;

-     ret = ft1000_control(ft1000dev,
-                           usb_sndctrlpipe(ft1000dev->dev, 0),
-                           HARLEY_WRITE_DPRAM_32,
//request -- WRITE_DPRAM_32
-                           HARLEY_WRITE_OPERATION,             //requestType
-                           0,                                  //value
-                           indx,                               //index
-                           buffer,                             //buffer
-                           cnt,                                //buffer size
-                           LARGE_TIMEOUT );
+	//DEBUG("ft1000_write_dpram32: indx: %d   buffer: %x cnt: %d\n",
indx, buffer, cnt);
+	if (cnt % 4)
+		cnt += cnt - (cnt % 4);

+	ret = ft1000_control(ft1000dev, usb_sndctrlpipe(ft1000dev->dev, 0),
HARLEY_WRITE_DPRAM_32,	//request -- WRITE_DPRAM_32
+			     HARLEY_WRITE_OPERATION,	//requestType
+			     0,	//value
+			     indx,	//index
+			     buffer,	//buffer
+			     cnt,	//buffer size
+			     LARGE_TIMEOUT);

-   if ( ret != STATUS_SUCCESS )
-       return STATUS_FAILURE;
-
+	if (ret != STATUS_SUCCESS)
+		return STATUS_FAILURE;

-    return ret;
+	return ret;
 }

 //---------------------------------------------------------------------------
@@ -370,37 +341,35 @@ u16 ft1000_write_dpram32(struct ft1000_device
*ft1000dev, USHORT indx, PUCHAR bu
 // Notes:
 //
 //---------------------------------------------------------------------------
-u16 ft1000_read_dpram16(struct ft1000_device *ft1000dev, USHORT indx,
PUCHAR buffer, u8 highlow)
+u16 ft1000_read_dpram16(struct ft1000_device * ft1000dev, USHORT indx,
+			PUCHAR buffer, u8 highlow)
 {
-    u16 ret = STATUS_SUCCESS;
-
-    //DEBUG("ft1000_read_dpram16: indx: %d  hightlow: %d\n", indx, highlow);
+	u16 ret = STATUS_SUCCESS;

-    u8 request;
+	//DEBUG("ft1000_read_dpram16: indx: %d  hightlow: %d\n", indx, highlow);

-    if (highlow == 0 )
-        request = HARLEY_READ_DPRAM_LOW;
-    else
-        request = HARLEY_READ_DPRAM_HIGH;
+	u8 request;

-    ret = ft1000_control(ft1000dev,
-                         usb_rcvctrlpipe(ft1000dev->dev,0),
-                         request,                     //request
--READ_DPRAM_H/L
-                         HARLEY_READ_OPERATION,       //requestType
-                         0,                           //value
-                         indx,                        //index
-                         buffer,                      //data
-                         2,                           //data size
-                         LARGE_TIMEOUT );             //timeout
+	if (highlow == 0)
+		request = HARLEY_READ_DPRAM_LOW;
+	else
+		request = HARLEY_READ_DPRAM_HIGH;

-   //DEBUG("ft1000_read_dpram16: ret is  %d \n", ret);
+	ret = ft1000_control(ft1000dev, usb_rcvctrlpipe(ft1000dev->dev, 0),
request,	//request --READ_DPRAM_H/L
+			     HARLEY_READ_OPERATION,	//requestType
+			     0,	//value
+			     indx,	//index
+			     buffer,	//data
+			     2,	//data size
+			     LARGE_TIMEOUT);	//timeout

+	//DEBUG("ft1000_read_dpram16: ret is  %d \n", ret);

-   //DEBUG("ft1000_read_dpram16: data is  %x \n", *buffer);
-   if ( ret != STATUS_SUCCESS )
-       return STATUS_FAILURE;
+	//DEBUG("ft1000_read_dpram16: data is  %x \n", *buffer);
+	if (ret != STATUS_SUCCESS)
+		return STATUS_FAILURE;

-   return ret;
+	return ret;

 }

@@ -420,38 +389,32 @@ u16 ft1000_read_dpram16(struct ft1000_device
*ft1000dev, USHORT indx, PUCHAR buf
 // Notes:
 //
 //---------------------------------------------------------------------------
-u16 ft1000_write_dpram16(struct ft1000_device *ft1000dev, USHORT
indx, USHORT value, u8 highlow)
+u16 ft1000_write_dpram16(struct ft1000_device * ft1000dev, USHORT indx,
+			 USHORT value, u8 highlow)
 {
-     u16 ret = STATUS_SUCCESS;
-
-
+	u16 ret = STATUS_SUCCESS;

-     //DEBUG("ft1000_write_dpram16: indx: %d  value: %d  highlow:
%d\n", indx, value, highlow);
+	//DEBUG("ft1000_write_dpram16: indx: %d  value: %d  highlow: %d\n",
indx, value, highlow);

-     u8 request;
+	u8 request;

+	if (highlow == 0)
+		request = HARLEY_WRITE_DPRAM_LOW;
+	else
+		request = HARLEY_WRITE_DPRAM_HIGH;

-     if ( highlow == 0 )
-         request = HARLEY_WRITE_DPRAM_LOW;
-     else
-         request = HARLEY_WRITE_DPRAM_HIGH;
-
-     ret = ft1000_control(ft1000dev,
-                           usb_sndctrlpipe(ft1000dev->dev, 0),
-                           request,
//request -- WRITE_DPRAM_H/L
-                           HARLEY_WRITE_OPERATION,              //requestType
-                           value,                                   //value
-                           indx,                                //index
-                           NULL,                               //buffer
-                           0,                                   //buffer size
-                           LARGE_TIMEOUT );
-
-
-   if ( ret != STATUS_SUCCESS )
-       return STATUS_FAILURE;
+	ret = ft1000_control(ft1000dev, usb_sndctrlpipe(ft1000dev->dev, 0),
request,	//request -- WRITE_DPRAM_H/L
+			     HARLEY_WRITE_OPERATION,	//requestType
+			     value,	//value
+			     indx,	//index
+			     NULL,	//buffer
+			     0,	//buffer size
+			     LARGE_TIMEOUT);

+	if (ret != STATUS_SUCCESS)
+		return STATUS_FAILURE;

-    return ret;
+	return ret;
 }

 //---------------------------------------------------------------------------
@@ -470,39 +433,36 @@ u16 ft1000_write_dpram16(struct ft1000_device
*ft1000dev, USHORT indx, USHORT va
 // Notes:
 //
 //---------------------------------------------------------------------------
-u16 fix_ft1000_read_dpram32(struct ft1000_device *ft1000dev, USHORT
indx, PUCHAR buffer)
+u16 fix_ft1000_read_dpram32(struct ft1000_device * ft1000dev, USHORT indx,
+			    PUCHAR buffer)
 {
-    UCHAR tempbuffer[16];
-    USHORT pos;
-    u16 ret = STATUS_SUCCESS;
-
-    //DEBUG("fix_ft1000_read_dpram32: indx: %d  \n", indx);
-    pos = (indx / 4)*4;
-    ret = ft1000_read_dpram32(ft1000dev, pos, (PUCHAR)&tempbuffer[0], 16);
-    if (ret == STATUS_SUCCESS)
-    {
-        pos = (indx % 4)*4;
-        *buffer++ = tempbuffer[pos++];
-        *buffer++ = tempbuffer[pos++];
-        *buffer++ = tempbuffer[pos++];
-        *buffer++ = tempbuffer[pos++];
-    }
-    else
-    {
-        DEBUG("fix_ft1000_read_dpram32: DPRAM32 Read failed\n");
-        *buffer++ = 0;
-        *buffer++ = 0;
-        *buffer++ = 0;
-        *buffer++ = 0;
+	UCHAR tempbuffer[16];
+	USHORT pos;
+	u16 ret = STATUS_SUCCESS;
+
+	//DEBUG("fix_ft1000_read_dpram32: indx: %d  \n", indx);
+	pos = (indx / 4) * 4;
+	ret = ft1000_read_dpram32(ft1000dev, pos, (PUCHAR) & tempbuffer[0], 16);
+	if (ret == STATUS_SUCCESS) {
+		pos = (indx % 4) * 4;
+		*buffer++ = tempbuffer[pos++];
+		*buffer++ = tempbuffer[pos++];
+		*buffer++ = tempbuffer[pos++];
+		*buffer++ = tempbuffer[pos++];
+	} else {
+		DEBUG("fix_ft1000_read_dpram32: DPRAM32 Read failed\n");
+		*buffer++ = 0;
+		*buffer++ = 0;
+		*buffer++ = 0;
+		*buffer++ = 0;

-    }
+	}

-   //DEBUG("fix_ft1000_read_dpram32: data is  %x \n", *buffer);
-   return ret;
+	//DEBUG("fix_ft1000_read_dpram32: data is  %x \n", *buffer);
+	return ret;

 }

-
 //---------------------------------------------------------------------------
 // Function:    fix_ft1000_write_dpram32
 //
@@ -519,73 +479,74 @@ u16 fix_ft1000_read_dpram32(struct ft1000_device
*ft1000dev, USHORT indx, PUCHAR
 // Notes:
 //
 //---------------------------------------------------------------------------
-u16 fix_ft1000_write_dpram32(struct ft1000_device *ft1000dev, USHORT
indx, PUCHAR buffer)
+u16 fix_ft1000_write_dpram32(struct ft1000_device * ft1000dev, USHORT indx,
+			     PUCHAR buffer)
 {
-    USHORT pos1;
-    USHORT pos2;
-    USHORT i;
-    UCHAR tempbuffer[32];
-    UCHAR resultbuffer[32];
-    PUCHAR pdata;
-    u16 ret  = STATUS_SUCCESS;
-
-    //DEBUG("fix_ft1000_write_dpram32: Entered:\n");
-
-    pos1 = (indx / 4)*4;
-    pdata = buffer;
-    ret = ft1000_read_dpram32(ft1000dev, pos1, (PUCHAR)&tempbuffer[0], 16);
-    if (ret == STATUS_SUCCESS)
-    {
-        pos2 = (indx % 4)*4;
-        tempbuffer[pos2++] = *buffer++;
-        tempbuffer[pos2++] = *buffer++;
-        tempbuffer[pos2++] = *buffer++;
-        tempbuffer[pos2++] = *buffer++;
-        ret = ft1000_write_dpram32(ft1000dev, pos1,
(PUCHAR)&tempbuffer[0], 16);
-    }
-    else
-    {
-        DEBUG("fix_ft1000_write_dpram32: DPRAM32 Read failed\n");
-
-        return ret;
-    }
+	USHORT pos1;
+	USHORT pos2;
+	USHORT i;
+	UCHAR tempbuffer[32];
+	UCHAR resultbuffer[32];
+	PUCHAR pdata;
+	u16 ret = STATUS_SUCCESS;
+
+	//DEBUG("fix_ft1000_write_dpram32: Entered:\n");
+
+	pos1 = (indx / 4) * 4;
+	pdata = buffer;
+	ret =
+	    ft1000_read_dpram32(ft1000dev, pos1, (PUCHAR) & tempbuffer[0], 16);
+	if (ret == STATUS_SUCCESS) {
+		pos2 = (indx % 4) * 4;
+		tempbuffer[pos2++] = *buffer++;
+		tempbuffer[pos2++] = *buffer++;
+		tempbuffer[pos2++] = *buffer++;
+		tempbuffer[pos2++] = *buffer++;
+		ret =
+		    ft1000_write_dpram32(ft1000dev, pos1,
+					 (PUCHAR) & tempbuffer[0], 16);
+	} else {
+		DEBUG("fix_ft1000_write_dpram32: DPRAM32 Read failed\n");
+
+		return ret;
+	}

-    ret = ft1000_read_dpram32(ft1000dev, pos1, (PUCHAR)&resultbuffer[0], 16);
-    if (ret == STATUS_SUCCESS)
-    {
-        buffer = pdata;
-        for (i=0; i<16; i++)
-        {
-            if (tempbuffer[i] != resultbuffer[i]){
-
-                ret = STATUS_FAILURE;
-            }
-        }
-    }
+	ret =
+	    ft1000_read_dpram32(ft1000dev, pos1, (PUCHAR) & resultbuffer[0],
+				16);
+	if (ret == STATUS_SUCCESS) {
+		buffer = pdata;
+		for (i = 0; i < 16; i++) {
+			if (tempbuffer[i] != resultbuffer[i]) {
+
+				ret = STATUS_FAILURE;
+			}
+		}
+	}

-    if (ret == STATUS_FAILURE)
-    {
-        ret = ft1000_write_dpram32(ft1000dev, pos1,
(PUCHAR)&tempbuffer[0], 16);
-        ret = ft1000_read_dpram32(ft1000dev, pos1,
(PUCHAR)&resultbuffer[0], 16);
-        if (ret == STATUS_SUCCESS)
-        {
-            buffer = pdata;
-            for (i=0; i<16; i++)
-            {
-                if (tempbuffer[i] != resultbuffer[i])
-                {
-                    ret = STATUS_FAILURE;
-                    DEBUG("fix_ft1000_write_dpram32 Failed to write\n");
-                }
-            }
-         }
-    }
+	if (ret == STATUS_FAILURE) {
+		ret =
+		    ft1000_write_dpram32(ft1000dev, pos1,
+					 (PUCHAR) & tempbuffer[0], 16);
+		ret =
+		    ft1000_read_dpram32(ft1000dev, pos1,
+					(PUCHAR) & resultbuffer[0], 16);
+		if (ret == STATUS_SUCCESS) {
+			buffer = pdata;
+			for (i = 0; i < 16; i++) {
+				if (tempbuffer[i] != resultbuffer[i]) {
+					ret = STATUS_FAILURE;
+					DEBUG
+					    ("fix_ft1000_write_dpram32 Failed to write\n");
+				}
+			}
+		}
+	}

-    return ret;
+	return ret;

 }

-
 //------------------------------------------------------------------------
 //
 //  Function:   card_reset_dsp
@@ -596,38 +557,51 @@ u16 fix_ft1000_write_dpram32(struct
ft1000_device *ft1000dev, USHORT indx, PUCHA
 //
 //  Returns:    None
 //-----------------------------------------------------------------------
-void card_reset_dsp (struct ft1000_device *ft1000dev, BOOLEAN value)
+void card_reset_dsp(struct ft1000_device *ft1000dev, BOOLEAN value)
 {
-    u16 status = STATUS_SUCCESS;
-    USHORT tempword;
-
-    status = ft1000_write_register (ft1000dev, HOST_INTF_BE,
FT1000_REG_SUP_CTRL);
-    status = ft1000_read_register(ft1000dev, &tempword, FT1000_REG_SUP_CTRL);
-    if (value)
-    {
-        DEBUG("Reset DSP\n");
-        status = ft1000_read_register(ft1000dev, &tempword, FT1000_REG_RESET);
-        tempword |= DSP_RESET_BIT;
-        status = ft1000_write_register(ft1000dev, tempword, FT1000_REG_RESET);
-    }
-    else
-    {
-        DEBUG("Activate DSP\n");
-        status = ft1000_read_register(ft1000dev, &tempword, FT1000_REG_RESET);
+	u16 status = STATUS_SUCCESS;
+	USHORT tempword;
+
+	status =
+	    ft1000_write_register(ft1000dev, HOST_INTF_BE, FT1000_REG_SUP_CTRL);
+	status =
+	    ft1000_read_register(ft1000dev, &tempword, FT1000_REG_SUP_CTRL);
+	if (value) {
+		DEBUG("Reset DSP\n");
+		status =
+		    ft1000_read_register(ft1000dev, &tempword,
+					 FT1000_REG_RESET);
+		tempword |= DSP_RESET_BIT;
+		status =
+		    ft1000_write_register(ft1000dev, tempword,
+					  FT1000_REG_RESET);
+	} else {
+		DEBUG("Activate DSP\n");
+		status =
+		    ft1000_read_register(ft1000dev, &tempword,
+					 FT1000_REG_RESET);
 #if 1
-        tempword |= DSP_ENCRYPTED;
-        tempword &= ~DSP_UNENCRYPTED;
+		tempword |= DSP_ENCRYPTED;
+		tempword &= ~DSP_UNENCRYPTED;
 #else
-        tempword |= DSP_UNENCRYPTED;
-        tempword &= ~DSP_ENCRYPTED;
+		tempword |= DSP_UNENCRYPTED;
+		tempword &= ~DSP_ENCRYPTED;
 #endif
-        status = ft1000_write_register(ft1000dev, tempword, FT1000_REG_RESET);
-        status = ft1000_read_register(ft1000dev, &tempword, FT1000_REG_RESET);
-        tempword &= ~EFUSE_MEM_DISABLE;
-        tempword &= ~DSP_RESET_BIT;
-        status = ft1000_write_register(ft1000dev, tempword, FT1000_REG_RESET);
-        status = ft1000_read_register(ft1000dev, &tempword, FT1000_REG_RESET);
-    }
+		status =
+		    ft1000_write_register(ft1000dev, tempword,
+					  FT1000_REG_RESET);
+		status =
+		    ft1000_read_register(ft1000dev, &tempword,
+					 FT1000_REG_RESET);
+		tempword &= ~EFUSE_MEM_DISABLE;
+		tempword &= ~DSP_RESET_BIT;
+		status =
+		    ft1000_write_register(ft1000dev, tempword,
+					  FT1000_REG_RESET);
+		status =
+		    ft1000_read_register(ft1000dev, &tempword,
+					 FT1000_REG_RESET);
+	}
 }

 //---------------------------------------------------------------------------
@@ -645,18 +619,19 @@ void card_reset_dsp (struct ft1000_device
*ft1000dev, BOOLEAN value)
 // Notes:
 //
 //---------------------------------------------------------------------------
-void CardSendCommand(struct ft1000_device *ft1000dev, unsigned char
*ptempbuffer, int size)
+void CardSendCommand(struct ft1000_device *ft1000dev,
+		     unsigned char *ptempbuffer, int size)
 {
-    unsigned short temp;
-    unsigned char *commandbuf;
+	unsigned short temp;
+	unsigned char *commandbuf;

-    DEBUG("CardSendCommand: enter CardSendCommand... size=%d\n", size);
+	DEBUG("CardSendCommand: enter CardSendCommand... size=%d\n", size);

-    commandbuf =(unsigned char*) kmalloc(size+2, GFP_KERNEL);
-    //memset((void*)commandbuf, 0, size+2);
-    memcpy((void*)commandbuf+2, (void*)ptempbuffer, size);
+	commandbuf = (unsigned char *)kmalloc(size + 2, GFP_KERNEL);
+	//memset((void*)commandbuf, 0, size+2);
+	memcpy((void *)commandbuf + 2, (void *)ptempbuffer, size);

-    //DEBUG("CardSendCommand: Command Send\n");
+	//DEBUG("CardSendCommand: Command Send\n");
     /***
     for (i=0; i<size+2; i++)
     {
@@ -664,39 +639,34 @@ void CardSendCommand(struct ft1000_device
*ft1000dev, unsigned char *ptempbuffer
     }
     ***/

-    ft1000_read_register(ft1000dev, &temp, FT1000_REG_DOORBELL);
-
-    if (temp & 0x0100)
-    {
-       msleep(10);
-    }
+	ft1000_read_register(ft1000dev, &temp, FT1000_REG_DOORBELL);

-    // check for odd word
-    size = size + 2;
-    if (size % 4)
-    {
-       // Must force to be 32 bit aligned
-       size += 4 - (size % 4);
-    }
-
-
-    //DEBUG("CardSendCommand: write dpram ... size=%d\n", size);
-    ft1000_write_dpram32(ft1000dev, 0,commandbuf, size);
-    msleep(1);
-    //DEBUG("CardSendCommand: write into doorbell ...\n");
-    ft1000_write_register(ft1000dev,  FT1000_DB_DPRAM_TX
,FT1000_REG_DOORBELL) ;
-    msleep(1);
+	if (temp & 0x0100) {
+		msleep(10);
+	}
+	// check for odd word
+	size = size + 2;
+	if (size % 4) {
+		// Must force to be 32 bit aligned
+		size += 4 - (size % 4);
+	}

-    ft1000_read_register(ft1000dev, &temp, FT1000_REG_DOORBELL);
-    //DEBUG("CardSendCommand: read doorbell ...temp=%x\n", temp);
-    if ( (temp & 0x0100) == 0)
-    {
-       //DEBUG("CardSendCommand: Message sent\n");
-    }
+	//DEBUG("CardSendCommand: write dpram ... size=%d\n", size);
+	ft1000_write_dpram32(ft1000dev, 0, commandbuf, size);
+	msleep(1);
+	//DEBUG("CardSendCommand: write into doorbell ...\n");
+	ft1000_write_register(ft1000dev, FT1000_DB_DPRAM_TX,
+			      FT1000_REG_DOORBELL);
+	msleep(1);
+
+	ft1000_read_register(ft1000dev, &temp, FT1000_REG_DOORBELL);
+	//DEBUG("CardSendCommand: read doorbell ...temp=%x\n", temp);
+	if ((temp & 0x0100) == 0) {
+		//DEBUG("CardSendCommand: Message sent\n");
+	}

 }

-
 //--------------------------------------------------------------------------
 //
 //  Function:   dsp_reload
@@ -707,52 +677,54 @@ void CardSendCommand(struct ft1000_device
*ft1000dev, unsigned char *ptempbuffer
 //
 //  Returns:    None
 //-----------------------------------------------------------------------
-void dsp_reload (struct ft1000_device *ft1000dev)
+void dsp_reload(struct ft1000_device *ft1000dev)
 {
-    u16 status;
-    USHORT tempword;
-    ULONG templong;
-
-    PFT1000_INFO pft1000info;
+	u16 status;
+	USHORT tempword;
+	ULONG templong;

-    pft1000info = netdev_priv(ft1000dev->net);
+	PFT1000_INFO pft1000info;

-    pft1000info->CardReady = 0;
-    pft1000info->DSP_loading= 1;
+	pft1000info = netdev_priv(ft1000dev->net);

-    // Program Interrupt Mask register
-    status = ft1000_write_register (ft1000dev, 0xffff, FT1000_REG_SUP_IMASK);
+	pft1000info->CardReady = 0;
+	pft1000info->DSP_loading = 1;

-    status = ft1000_read_register (ft1000dev, &tempword, FT1000_REG_RESET);
-    tempword |= ASIC_RESET_BIT;
-    status = ft1000_write_register (ft1000dev, tempword, FT1000_REG_RESET);
-    msleep(1000);
-    status = ft1000_read_register (ft1000dev, &tempword, FT1000_REG_RESET);
-    DEBUG("Reset Register = 0x%x\n", tempword);
+	// Program Interrupt Mask register
+	status = ft1000_write_register(ft1000dev, 0xffff, FT1000_REG_SUP_IMASK);

-    // Toggle DSP reset
-    card_reset_dsp (ft1000dev, 1);
-    msleep(1000);
-    card_reset_dsp (ft1000dev, 0);
-    msleep(1000);
+	status = ft1000_read_register(ft1000dev, &tempword, FT1000_REG_RESET);
+	tempword |= ASIC_RESET_BIT;
+	status = ft1000_write_register(ft1000dev, tempword, FT1000_REG_RESET);
+	msleep(1000);
+	status = ft1000_read_register(ft1000dev, &tempword, FT1000_REG_RESET);
+	DEBUG("Reset Register = 0x%x\n", tempword);

-    status = ft1000_write_register (ft1000dev, HOST_INTF_BE,
FT1000_REG_SUP_CTRL);
+	// Toggle DSP reset
+	card_reset_dsp(ft1000dev, 1);
+	msleep(1000);
+	card_reset_dsp(ft1000dev, 0);
+	msleep(1000);

-    // Let's check for FEFE
-    status = ft1000_read_dpram32 (ft1000dev,
FT1000_MAG_DPRAM_FEFE_INDX, (PUCHAR)&templong, 4);
-    DEBUG("templong (fefe) = 0x%8x\n", templong);
+	status =
+	    ft1000_write_register(ft1000dev, HOST_INTF_BE, FT1000_REG_SUP_CTRL);

-    // call codeloader
-    status = scram_dnldr(ft1000dev, pFileStart, FileLength);
+	// Let's check for FEFE
+	status =
+	    ft1000_read_dpram32(ft1000dev, FT1000_MAG_DPRAM_FEFE_INDX,
+				(PUCHAR) & templong, 4);
+	DEBUG("templong (fefe) = 0x%8x\n", templong);

-    if ( status != STATUS_SUCCESS)
-       return;
+	// call codeloader
+	status = scram_dnldr(ft1000dev, pFileStart, FileLength);

-    msleep(1000);
-    pft1000info->DSP_loading= 0;
+	if (status != STATUS_SUCCESS)
+		return;

-    DEBUG("dsp_reload returned\n");
+	msleep(1000);
+	pft1000info->DSP_loading = 0;

+	DEBUG("dsp_reload returned\n");

 }

@@ -767,33 +739,35 @@ void dsp_reload (struct ft1000_device *ft1000dev)
 //     none
 //
 //---------------------------------------------------------------------------
-static void ft1000_reset_asic (struct net_device *dev)
+static void ft1000_reset_asic(struct net_device *dev)
 {
-    FT1000_INFO *info = netdev_priv(dev);
-    struct ft1000_device *ft1000dev = info->pFt1000Dev;
-    u16 tempword;
+	FT1000_INFO *info = netdev_priv(dev);
+	struct ft1000_device *ft1000dev = info->pFt1000Dev;
+	u16 tempword;

-    DEBUG("ft1000_hw:ft1000_reset_asic called\n");
+	DEBUG("ft1000_hw:ft1000_reset_asic called\n");

-    info->ASICResetNum++;
+	info->ASICResetNum++;

-    // Let's use the register provided by the Magnemite ASIC to reset the
-    // ASIC and DSP.
-    ft1000_write_register(ft1000dev,  (DSP_RESET_BIT |
ASIC_RESET_BIT), FT1000_REG_RESET );
+	// Let's use the register provided by the Magnemite ASIC to reset the
+	// ASIC and DSP.
+	ft1000_write_register(ft1000dev, (DSP_RESET_BIT | ASIC_RESET_BIT),
+			      FT1000_REG_RESET);

-    mdelay(1);
+	mdelay(1);

-    // set watermark to -1 in order to not generate an interrrupt
-    ft1000_write_register(ft1000dev, 0xffff, FT1000_REG_MAG_WATERMARK);
+	// set watermark to -1 in order to not generate an interrrupt
+	ft1000_write_register(ft1000dev, 0xffff, FT1000_REG_MAG_WATERMARK);

-    // clear interrupts
-    ft1000_read_register (ft1000dev, &tempword, FT1000_REG_SUP_ISR);
-    DEBUG("ft1000_hw: interrupt status register = 0x%x\n",tempword);
-    ft1000_write_register (ft1000dev,  tempword, FT1000_REG_SUP_ISR);
-    ft1000_read_register (ft1000dev, &tempword, FT1000_REG_SUP_ISR);
-    DEBUG("ft1000_hw: interrupt status register = 0x%x\n",tempword);
+	// clear interrupts
+	ft1000_read_register(ft1000dev, &tempword, FT1000_REG_SUP_ISR);
+	DEBUG("ft1000_hw: interrupt status register = 0x%x\n", tempword);
+	ft1000_write_register(ft1000dev, tempword, FT1000_REG_SUP_ISR);
+	ft1000_read_register(ft1000dev, &tempword, FT1000_REG_SUP_ISR);
+	DEBUG("ft1000_hw: interrupt status register = 0x%x\n", tempword);

 }
+
 /*
 //---------------------------------------------------------------------------
 //
@@ -851,148 +825,147 @@ static void ft1000_enable_interrupts(struct
net_device *dev) {
 //              TRUE  (card reset successful)
 //
 //---------------------------------------------------------------------------
-static int ft1000_reset_card (struct net_device *dev)
+static int ft1000_reset_card(struct net_device *dev)
 {
-    FT1000_INFO *info = netdev_priv(dev);
-    struct ft1000_device *ft1000dev = info->pFt1000Dev;
-    u16 tempword;
-    PPROV_RECORD ptr;
-
-    DEBUG("ft1000_hw:ft1000_reset_card called.....\n");
-
-    info->fCondResetPend = 1;
-    info->CardReady = 0;
-    info->fProvComplete = 0;
-    //ft1000_disable_interrupts(dev);
-
-    // Cancel heartbeat task since we are reloading the dsp
-    //del_timer(&poll_timer[info->CardNumber]);
-
-    // Make sure we free any memory reserve for provisioning
-    while (list_empty(&info->prov_list) == 0) {
-        DEBUG("ft1000_hw:ft1000_reset_card:deleting provisioning record\n");
-        ptr = list_entry(info->prov_list.next, PROV_RECORD, list);
-        list_del(&ptr->list);
-        kfree(ptr->pprov_data);
-        kfree(ptr);
-    }
+	FT1000_INFO *info = netdev_priv(dev);
+	struct ft1000_device *ft1000dev = info->pFt1000Dev;
+	u16 tempword;
+	PPROV_RECORD ptr;
+
+	DEBUG("ft1000_hw:ft1000_reset_card called.....\n");
+
+	info->fCondResetPend = 1;
+	info->CardReady = 0;
+	info->fProvComplete = 0;
+	//ft1000_disable_interrupts(dev);
+
+	// Cancel heartbeat task since we are reloading the dsp
+	//del_timer(&poll_timer[info->CardNumber]);
+
+	// Make sure we free any memory reserve for provisioning
+	while (list_empty(&info->prov_list) == 0) {
+		DEBUG
+		    ("ft1000_hw:ft1000_reset_card:deleting provisioning record\n");
+		ptr = list_entry(info->prov_list.next, PROV_RECORD, list);
+		list_del(&ptr->list);
+		kfree(ptr->pprov_data);
+		kfree(ptr);
+	}

-    DEBUG("ft1000_hw:ft1000_reset_card: reset asic\n");
-    //reset ASIC
-    ft1000_reset_asic(dev);
+	DEBUG("ft1000_hw:ft1000_reset_card: reset asic\n");
+	//reset ASIC
+	ft1000_reset_asic(dev);

-    info->DSPResetNum++;
+	info->DSPResetNum++;

 #if 0
-    DEBUG("ft1000_hw:ft1000_reset_card:resetting ASIC and DSP\n");
-    ft1000_write_register (ft1000dev, (DSP_RESET_BIT |
ASIC_RESET_BIT), FT1000_REG_RESET );
-
-
-    // Copy DSP session record into info block if this is not a coldstart
-    //if (ft1000_card_present == 1) {
-        spin_lock_irqsave(&info->dpram_lock, flags);
-
-            ft1000_write_register(ft1000dev,
FT1000_DPRAM_MAG_RX_BASE, FT1000_REG_DPRAM_ADDR);
-            for (i=0;i<MAX_DSP_SESS_REC/2; i++) {
-                //info->DSPSess.MagRec[i] =
inl(dev->base_addr+FT1000_REG_MAG_DPDATA);
-                ft1000_read_dpram32(ft1000dev, FT1000_REG_MAG_DPDATA,
(PCHAR)&(info->DSPSess.MagRec[i]), 4);
-            }
-
-        spin_unlock_irqrestore(&info->dpram_lock, flags);
-    //}
-    info->squeseqnum = 0;
-
-    DEBUG("ft1000_hw:ft1000_reset_card:resetting ASIC\n");
-    mdelay(10);
-    //reset ASIC
-    ft1000_reset_asic(dev);
-
-    info->DSPResetNum++;
-
-    DEBUG("ft1000_hw:ft1000_reset_card:downloading dsp image\n");
-
-
-        // Put dsp in reset and take ASIC out of reset
-        DEBUG("ft1000_hw:ft1000_reset_card:Put DSP in reset and take
ASIC out of reset\n");
-        ft1000_write_register (ft1000dev, DSP_RESET_BIT, FT1000_REG_RESET);
-
-        // Setting MAGNEMITE ASIC to big endian mode
-        ft1000_write_register (ft1000dev, HOST_INTF_BE, FT1000_REG_SUP_CTRL);
-
-        // Take DSP out of reset
-
-           ft1000_read_register(ft1000dev, &tempword, FT1000_REG_RESET);
-           tempword |= DSP_ENCRYPTED;
-           tempword &= ~DSP_UNENCRYPTED;
-           ft1000_write_register(ft1000dev, tempword, FT1000_REG_RESET);
-           tempword &= ~EFUSE_MEM_DISABLE;
-           ft1000_write_register(ft1000dev, tempword, FT1000_REG_RESET);
-           tempword &= ~DSP_RESET_BIT;
-           ft1000_write_register(ft1000dev, tempword, FT1000_REG_RESET);
-
-
-        // FLARION_DSP_ACTIVE;
-        mdelay(10);
-        DEBUG("ft1000_hw:ft1000_reset_card:Take DSP out of reset\n");
-
-        // Wait for 0xfefe indicating dsp ready before starting download
-        for (i=0; i<50; i++) {
-            //tempword = ft1000_read_dpram_mag_16(dev,
FT1000_MAG_DPRAM_FEFE, FT1000_MAG_DPRAM_FEFE_INDX);
-            ft1000_read_dpram32 (ft1000dev,
FT1000_MAG_DPRAM_FEFE_INDX, (PUCHAR)&templong, 4);
-            if (tempword == 0xfefe) {
-                break;
-            }
-            mdelay(20);
-        }
+	DEBUG("ft1000_hw:ft1000_reset_card:resetting ASIC and DSP\n");
+	ft1000_write_register(ft1000dev, (DSP_RESET_BIT | ASIC_RESET_BIT),
+			      FT1000_REG_RESET);
+
+	// Copy DSP session record into info block if this is not a coldstart
+	//if (ft1000_card_present == 1) {
+	spin_lock_irqsave(&info->dpram_lock, flags);
+
+	ft1000_write_register(ft1000dev, FT1000_DPRAM_MAG_RX_BASE,
+			      FT1000_REG_DPRAM_ADDR);
+	for (i = 0; i < MAX_DSP_SESS_REC / 2; i++) {
+		//info->DSPSess.MagRec[i] = inl(dev->base_addr+FT1000_REG_MAG_DPDATA);
+		ft1000_read_dpram32(ft1000dev, FT1000_REG_MAG_DPDATA,
+				    (PCHAR) & (info->DSPSess.MagRec[i]), 4);
+	}

-        if (i==50) {
-            DEBUG("ft1000_hw:ft1000_reset_card:No FEFE detected from DSP\n");
-            return FALSE;
-        }
+	spin_unlock_irqrestore(&info->dpram_lock, flags);
+	//}
+	info->squeseqnum = 0;
+
+	DEBUG("ft1000_hw:ft1000_reset_card:resetting ASIC\n");
+	mdelay(10);
+	//reset ASIC
+	ft1000_reset_asic(dev);
+
+	info->DSPResetNum++;
+
+	DEBUG("ft1000_hw:ft1000_reset_card:downloading dsp image\n");
+
+	// Put dsp in reset and take ASIC out of reset
+	DEBUG
+	    ("ft1000_hw:ft1000_reset_card:Put DSP in reset and take ASIC out
of reset\n");
+	ft1000_write_register(ft1000dev, DSP_RESET_BIT, FT1000_REG_RESET);
+
+	// Setting MAGNEMITE ASIC to big endian mode
+	ft1000_write_register(ft1000dev, HOST_INTF_BE, FT1000_REG_SUP_CTRL);
+
+	// Take DSP out of reset
+
+	ft1000_read_register(ft1000dev, &tempword, FT1000_REG_RESET);
+	tempword |= DSP_ENCRYPTED;
+	tempword &= ~DSP_UNENCRYPTED;
+	ft1000_write_register(ft1000dev, tempword, FT1000_REG_RESET);
+	tempword &= ~EFUSE_MEM_DISABLE;
+	ft1000_write_register(ft1000dev, tempword, FT1000_REG_RESET);
+	tempword &= ~DSP_RESET_BIT;
+	ft1000_write_register(ft1000dev, tempword, FT1000_REG_RESET);
+
+	// FLARION_DSP_ACTIVE;
+	mdelay(10);
+	DEBUG("ft1000_hw:ft1000_reset_card:Take DSP out of reset\n");
+
+	// Wait for 0xfefe indicating dsp ready before starting download
+	for (i = 0; i < 50; i++) {
+		//tempword = ft1000_read_dpram_mag_16(dev, FT1000_MAG_DPRAM_FEFE,
FT1000_MAG_DPRAM_FEFE_INDX);
+		ft1000_read_dpram32(ft1000dev, FT1000_MAG_DPRAM_FEFE_INDX,
+				    (PUCHAR) & templong, 4);
+		if (tempword == 0xfefe) {
+			break;
+		}
+		mdelay(20);
+	}

+	if (i == 50) {
+		DEBUG
+		    ("ft1000_hw:ft1000_reset_card:No FEFE detected from DSP\n");
+		return FALSE;
+	}

 #endif

-    DEBUG("ft1000_hw:ft1000_reset_card: call dsp_reload\n");
-    dsp_reload(ft1000dev);
-
-    DEBUG("dsp reload successful\n");
+	DEBUG("ft1000_hw:ft1000_reset_card: call dsp_reload\n");
+	dsp_reload(ft1000dev);

+	DEBUG("dsp reload successful\n");

-    mdelay(10);
+	mdelay(10);

-    // Initialize DSP heartbeat area to ho
-    ft1000_write_dpram16(ft1000dev, FT1000_MAG_HI_HO, ho_mag,
FT1000_MAG_HI_HO_INDX);
-    ft1000_read_dpram16(ft1000dev, FT1000_MAG_HI_HO,
(PCHAR)&tempword, FT1000_MAG_HI_HO_INDX);
-    DEBUG("ft1000_hw:ft1000_reset_card:hi_ho value = 0x%x\n", tempword);
+	// Initialize DSP heartbeat area to ho
+	ft1000_write_dpram16(ft1000dev, FT1000_MAG_HI_HO, ho_mag,
+			     FT1000_MAG_HI_HO_INDX);
+	ft1000_read_dpram16(ft1000dev, FT1000_MAG_HI_HO, (PCHAR) & tempword,
+			    FT1000_MAG_HI_HO_INDX);
+	DEBUG("ft1000_hw:ft1000_reset_card:hi_ho value = 0x%x\n", tempword);

+	info->CardReady = 1;
+	//ft1000_enable_interrupts(dev);
+	/* Schedule heartbeat process to run every 2 seconds */
+	//poll_timer[info->CardNumber].expires = jiffies + (2*HZ);
+	//poll_timer[info->CardNumber].data = (u_long)dev;
+	//add_timer(&poll_timer[info->CardNumber]);

-
-    info->CardReady = 1;
-    //ft1000_enable_interrupts(dev);
-    /* Schedule heartbeat process to run every 2 seconds */
-    //poll_timer[info->CardNumber].expires = jiffies + (2*HZ);
-    //poll_timer[info->CardNumber].data = (u_long)dev;
-    //add_timer(&poll_timer[info->CardNumber]);
-
-    info->fCondResetPend = 0;
-    return TRUE;
+	info->fCondResetPend = 0;
+	return TRUE;

 }

-
 //mbelian
 #ifdef HAVE_NET_DEVICE_OPS
-static const struct net_device_ops ftnet_ops =
-{
-.ndo_open = &ft1000_open,
-.ndo_stop = &ft1000_close,
-.ndo_start_xmit = &ft1000_start_xmit,
-.ndo_get_stats = &ft1000_netdev_stats,
+static const struct net_device_ops ftnet_ops = {
+	.ndo_open = &ft1000_open,
+	.ndo_stop = &ft1000_close,
+	.ndo_start_xmit = &ft1000_start_xmit,
+	.ndo_get_stats = &ft1000_netdev_stats,
 };
 #endif

-
 //---------------------------------------------------------------------------
 // Function:    init_ft1000_netdev
 //
@@ -1009,132 +982,119 @@ static const struct net_device_ops ftnet_ops =
 //---------------------------------------------------------------------------
 u16 init_ft1000_netdev(struct ft1000_device *ft1000dev)
 {
-    struct net_device *netdev;
-    FT1000_INFO *pInfo = NULL;
-    PDPRAM_BLK pdpram_blk;
-    int i;
-
-	gCardIndex=0; //mbelian
-
-    DEBUG("Enter init_ft1000_netdev...\n");
-
+	struct net_device *netdev;
+	FT1000_INFO *pInfo = NULL;
+	PDPRAM_BLK pdpram_blk;
+	int i;

-    netdev = alloc_etherdev( sizeof(FT1000_INFO));
-    if (!netdev )
-    {
-        DEBUG("init_ft1000_netdev: can not allocate network device\n");
-        return STATUS_FAILURE;
-    }
-
-    //pInfo = (PFT1000_INFO)netdev->priv;
-	pInfo = (FT1000_INFO *) netdev_priv (netdev);
+	gCardIndex = 0;		//mbelian

-    //DEBUG("init_ft1000_netdev: gFt1000Info=%x, netdev=%x,
ft1000dev=%x\n", gFt1000Info, netdev, ft1000dev);
+	DEBUG("Enter init_ft1000_netdev...\n");

-    memset (pInfo, 0, sizeof(FT1000_INFO));
-
-    dev_alloc_name(netdev, netdev->name);
-
-    //for the first inserted card, decide the card index beginning
number, in case there are existing network interfaces
-    if ( gCardIndex == 0 )
-    {
-        DEBUG("init_ft1000_netdev: network device name is %s\n", netdev->name);
-
-        if ( strncmp(netdev->name,"eth", 3) == 0) {
-            //pInfo->CardNumber = atoi(&netdev->name[3]);
-            gCardIndex = atoi(&netdev->name[3]);
-            pInfo->CardNumber = gCardIndex;
-            DEBUG("card number = %d\n", pInfo->CardNumber);
-        }
-        else {
-            printk(KERN_ERR "ft1000: Invalid device name\n");
-            kfree(netdev);
-            return STATUS_FAILURE;
-        }
-    }
-    else
-    {
-        //not the first inserted card, increase card number by 1
-        /*gCardIndex ++;*/
-        pInfo->CardNumber = gCardIndex;
-        /*DEBUG("card number = %d\n", pInfo->CardNumber);*/ //mbelian
-    }
+	netdev = alloc_etherdev(sizeof(FT1000_INFO));
+	if (!netdev) {
+		DEBUG("init_ft1000_netdev: can not allocate network device\n");
+		return STATUS_FAILURE;
+	}
+	//pInfo = (PFT1000_INFO)netdev->priv;
+	pInfo = (FT1000_INFO *) netdev_priv(netdev);
+
+	//DEBUG("init_ft1000_netdev: gFt1000Info=%x, netdev=%x,
ft1000dev=%x\n", gFt1000Info, netdev, ft1000dev);
+
+	memset(pInfo, 0, sizeof(FT1000_INFO));
+
+	dev_alloc_name(netdev, netdev->name);
+
+	//for the first inserted card, decide the card index beginning
number, in case there are existing network interfaces
+	if (gCardIndex == 0) {
+		DEBUG("init_ft1000_netdev: network device name is %s\n",
+		      netdev->name);
+
+		if (strncmp(netdev->name, "eth", 3) == 0) {
+			//pInfo->CardNumber = atoi(&netdev->name[3]);
+			gCardIndex = atoi(&netdev->name[3]);
+			pInfo->CardNumber = gCardIndex;
+			DEBUG("card number = %d\n", pInfo->CardNumber);
+		} else {
+			printk(KERN_ERR "ft1000: Invalid device name\n");
+			kfree(netdev);
+			return STATUS_FAILURE;
+		}
+	} else {
+		//not the first inserted card, increase card number by 1
+		/*gCardIndex ++; */
+		pInfo->CardNumber = gCardIndex;
+		/*DEBUG("card number = %d\n", pInfo->CardNumber); *///mbelian
+	}

-    memset(&pInfo->stats, 0, sizeof(struct net_device_stats) );
-
-   spin_lock_init(&pInfo->dpram_lock);
-    pInfo->pFt1000Dev = ft1000dev;
-    pInfo->DrvErrNum = 0;
-    pInfo->ASICResetNum = 0;
-    pInfo->registered = 1;
-    pInfo->ft1000_reset = ft1000_reset;
-    pInfo->mediastate = 0;
-    pInfo->fifo_cnt = 0;
-    pInfo->DeviceCreated = FALSE;
-    pInfo->DeviceMajor = 0;
-    pInfo->CurrentInterruptEnableMask = ISR_DEFAULT_MASK;
-    pInfo->InterruptsEnabled = FALSE;
-    pInfo->CardReady = 0;
-    pInfo->DSP_loading = 0;
-    pInfo->DSP_TIME[0] = 0;
-    pInfo->DSP_TIME[1] = 0;
-    pInfo->DSP_TIME[2] = 0;
-    pInfo->DSP_TIME[3] = 0;
-    pInfo->fAppMsgPend = 0;
-    pInfo->fCondResetPend = 0;
+	memset(&pInfo->stats, 0, sizeof(struct net_device_stats));
+
+	spin_lock_init(&pInfo->dpram_lock);
+	pInfo->pFt1000Dev = ft1000dev;
+	pInfo->DrvErrNum = 0;
+	pInfo->ASICResetNum = 0;
+	pInfo->registered = 1;
+	pInfo->ft1000_reset = ft1000_reset;
+	pInfo->mediastate = 0;
+	pInfo->fifo_cnt = 0;
+	pInfo->DeviceCreated = FALSE;
+	pInfo->DeviceMajor = 0;
+	pInfo->CurrentInterruptEnableMask = ISR_DEFAULT_MASK;
+	pInfo->InterruptsEnabled = FALSE;
+	pInfo->CardReady = 0;
+	pInfo->DSP_loading = 0;
+	pInfo->DSP_TIME[0] = 0;
+	pInfo->DSP_TIME[1] = 0;
+	pInfo->DSP_TIME[2] = 0;
+	pInfo->DSP_TIME[3] = 0;
+	pInfo->fAppMsgPend = 0;
+	pInfo->fCondResetPend = 0;
 	pInfo->usbboot = 0;
 	pInfo->dspalive = 0;
-	for (i=0;i<32 ;i++ )
-	{
+	for (i = 0; i < 32; i++) {
 		pInfo->tempbuf[i] = 0;
 	}

-    INIT_LIST_HEAD(&pInfo->prov_list);
+	INIT_LIST_HEAD(&pInfo->prov_list);

 //mbelian
 #ifdef HAVE_NET_DEVICE_OPS
 	netdev->netdev_ops = &ftnet_ops;
 #else
-    netdev->hard_start_xmit = &ft1000_start_xmit;
-    netdev->get_stats = &ft1000_netdev_stats;
-    netdev->open = &ft1000_open;
-    netdev->stop = &ft1000_close;
+	netdev->hard_start_xmit = &ft1000_start_xmit;
+	netdev->get_stats = &ft1000_netdev_stats;
+	netdev->open = &ft1000_open;
+	netdev->stop = &ft1000_close;
 #endif

-    //netif_stop_queue(netdev); //mbelian
-
-
-    ft1000dev->net = netdev;
-
+	//netif_stop_queue(netdev); //mbelian

+	ft1000dev->net = netdev;

 //init free_buff_lock, freercvpool, numofmsgbuf, pdpram_blk
 //only init once per card
 //Jim
-    	  DEBUG("Initialize free_buff_lock and freercvpool\n");
-        spin_lock_init(&free_buff_lock);
-
-        // initialize a list of buffers to be use for queuing up
receive command data
-        INIT_LIST_HEAD (&freercvpool);
-
-        // create list of free buffers
-        for (i=0; i<NUM_OF_FREE_BUFFERS; i++) {
-            // Get memory for DPRAM_DATA link list
-            pdpram_blk = kmalloc ( sizeof(DPRAM_BLK), GFP_KERNEL );
-            // Get a block of memory to store command data
-            pdpram_blk->pbuffer = kmalloc ( MAX_CMD_SQSIZE, GFP_KERNEL );
-            // link provisioning data
-            list_add_tail (&pdpram_blk->list, &freercvpool);
-        }
-        numofmsgbuf = NUM_OF_FREE_BUFFERS;
-
+	DEBUG("Initialize free_buff_lock and freercvpool\n");
+	spin_lock_init(&free_buff_lock);
+
+	// initialize a list of buffers to be use for queuing up receive command data
+	INIT_LIST_HEAD(&freercvpool);
+
+	// create list of free buffers
+	for (i = 0; i < NUM_OF_FREE_BUFFERS; i++) {
+		// Get memory for DPRAM_DATA link list
+		pdpram_blk = kmalloc(sizeof(DPRAM_BLK), GFP_KERNEL);
+		// Get a block of memory to store command data
+		pdpram_blk->pbuffer = kmalloc(MAX_CMD_SQSIZE, GFP_KERNEL);
+		// link provisioning data
+		list_add_tail(&pdpram_blk->list, &freercvpool);
+	}
+	numofmsgbuf = NUM_OF_FREE_BUFFERS;

-    return STATUS_SUCCESS;
+	return STATUS_SUCCESS;

 }

-
-
 //---------------------------------------------------------------------------
 // Function:    reg_ft1000_netdev
 //
@@ -1149,42 +1109,39 @@ u16 init_ft1000_netdev(struct ft1000_device *ft1000dev)
 // Notes:
 //
 //---------------------------------------------------------------------------
-u16 reg_ft1000_netdev(struct ft1000_device *ft1000dev, struct
usb_interface *intf)
+u16 reg_ft1000_netdev(struct ft1000_device * ft1000dev,
+		      struct usb_interface * intf)
 {
-    struct net_device *netdev;
-    FT1000_INFO *pInfo;
-    int i, rc;
+	struct net_device *netdev;
+	FT1000_INFO *pInfo;
+	int i, rc;

-    netdev = ft1000dev->net;
-    pInfo = netdev_priv(ft1000dev->net);
-    DEBUG("Enter reg_ft1000_netdev...\n");
+	netdev = ft1000dev->net;
+	pInfo = netdev_priv(ft1000dev->net);
+	DEBUG("Enter reg_ft1000_netdev...\n");

+	ft1000_read_register(ft1000dev, &pInfo->AsicID, FT1000_REG_ASIC_ID);

-    ft1000_read_register(ft1000dev, &pInfo->AsicID, FT1000_REG_ASIC_ID);
+	usb_set_intfdata(intf, pInfo);
+	SET_NETDEV_DEV(netdev, &intf->dev);

-    usb_set_intfdata(intf, pInfo);
-    SET_NETDEV_DEV(netdev, &intf->dev);
-
-    rc = register_netdev(netdev);
-    if (rc)
-    {
-        DEBUG("reg_ft1000_netdev: could not register network device\n");
-        free_netdev(netdev);
-        return STATUS_FAILURE;
-    }
-
-
-    //Create character device, implemented by Jim
-    ft1000_CreateDevice(ft1000dev);
+	rc = register_netdev(netdev);
+	if (rc) {
+		DEBUG("reg_ft1000_netdev: could not register network device\n");
+		free_netdev(netdev);
+		return STATUS_FAILURE;
+	}

-    //INIT_LIST_HEAD(&pInfo->prov_list);
+	//Create character device, implemented by Jim
+	ft1000_CreateDevice(ft1000dev);

-    for (i=0; i<MAX_NUM_CARDS; i++) {
-        poll_timer[i].function = ft1000_hbchk;
-    }
+	//INIT_LIST_HEAD(&pInfo->prov_list);

+	for (i = 0; i < MAX_NUM_CARDS; i++) {
+		poll_timer[i].function = ft1000_hbchk;
+	}

-    //hard code MAC address for now
+	//hard code MAC address for now
 /**
     netdev->dev_addr[0] = 0;
     netdev->dev_addr[1] = 7;
@@ -1194,18 +1151,17 @@ u16 reg_ft1000_netdev(struct ft1000_device
*ft1000dev, struct usb_interface *int
     netdev->dev_addr[5] = 0x20 + pInfo->CardNumber;
 **/

-    DEBUG ("reg_ft1000_netdev returned\n");
+	DEBUG("reg_ft1000_netdev returned\n");

-    pInfo->CardReady = 1;
+	pInfo->CardReady = 1;

-
-   return STATUS_SUCCESS;
+	return STATUS_SUCCESS;
 }

 int ft1000_reset(struct net_device *dev)
 {
-    ft1000_reset_card(dev);
-    return 0;
+	ft1000_reset_card(dev);
+	return 0;
 }

 //---------------------------------------------------------------------------
@@ -1224,147 +1180,128 @@ int ft1000_reset(struct net_device *dev)
 static void ft1000_usb_transmit_complete(struct urb *urb)
 {

-    struct ft1000_device *ft1000dev = urb->context;
+	struct ft1000_device *ft1000dev = urb->context;

-    //DEBUG("ft1000_usb_transmit_complete entered\n");
+	//DEBUG("ft1000_usb_transmit_complete entered\n");
 // Jim   spin_lock(&ft1000dev->device_lock);

-    if (urb->status)
-        printk("%s: TX status %d\n", ft1000dev->net->name, urb->status);
+	if (urb->status)
+		printk("%s: TX status %d\n", ft1000dev->net->name, urb->status);

-    netif_wake_queue(ft1000dev->net);
+	netif_wake_queue(ft1000dev->net);

 //Jim    spin_unlock(&ft1000dev->device_lock);
-    //DEBUG("Return from ft1000_usb_transmit_complete\n");
+	//DEBUG("Return from ft1000_usb_transmit_complete\n");
 }

-
 /****************************************************************
  *     ft1000_control
  ****************************************************************/
-static int ft1000_read_fifo_reg(struct ft1000_device
*ft1000dev,unsigned int pipe,
-                          u8 request,
-                          u8 requesttype,
-                          u16 value,
-                          u16 index,
-                          void *data,
-                          u16 size,
-                          int timeout)
+static int ft1000_read_fifo_reg(struct ft1000_device *ft1000dev,
+				unsigned int pipe, u8 request, u8 requesttype,
+				u16 value, u16 index, void *data, u16 size,
+				int timeout)
 {
-    u16 ret;
-
-    DECLARE_WAITQUEUE(wait, current);
-    struct urb *urb;
-    struct usb_ctrlrequest *dr;
-    int status;
-
-    if (ft1000dev == NULL )
-    {
-        DEBUG("NULL ft1000dev, failure\n");
-        return STATUS_FAILURE;
-    }
-    else if ( ft1000dev->dev == NULL )
-    {
-        DEBUG("NULL ft1000dev->dev, failure\n");
-        return STATUS_FAILURE;
-    }
-
-    spin_lock(&ft1000dev->device_lock);
+	u16 ret;

-    /*DECLARE_WAITQUEUE(wait, current);
-    struct urb *urb;
-    struct usb_ctrlrequest *dr;
-    int status;*/
+	DECLARE_WAITQUEUE(wait, current);
+	struct urb *urb;
+	struct usb_ctrlrequest *dr;
+	int status;

-    if(in_interrupt())
-    {
-        spin_unlock(&ft1000dev->device_lock);
-        return -EBUSY;
-    }
+	if (ft1000dev == NULL) {
+		DEBUG("NULL ft1000dev, failure\n");
+		return STATUS_FAILURE;
+	} else if (ft1000dev->dev == NULL) {
+		DEBUG("NULL ft1000dev->dev, failure\n");
+		return STATUS_FAILURE;
+	}

-    urb = usb_alloc_urb(0, GFP_KERNEL);
-    dr = kmalloc(sizeof(struct usb_ctrlrequest), in_interrupt() ?
GFP_ATOMIC : GFP_KERNEL);
+	spin_lock(&ft1000dev->device_lock);

-    if(!urb || !dr)
-    {
-        if(urb) kfree(urb);
-        spin_unlock(&ft1000dev->device_lock);
-        return -ENOMEM;
-    }
+	/*DECLARE_WAITQUEUE(wait, current);
+	   struct urb *urb;
+	   struct usb_ctrlrequest *dr;
+	   int status; */

+	if (in_interrupt()) {
+		spin_unlock(&ft1000dev->device_lock);
+		return -EBUSY;
+	}

+	urb = usb_alloc_urb(0, GFP_KERNEL);
+	dr = kmalloc(sizeof(struct usb_ctrlrequest),
+		     in_interrupt()? GFP_ATOMIC : GFP_KERNEL);

-    dr->bRequestType = requesttype;
-    dr->bRequest = request;
-    dr->wValue = value;
-    dr->wIndex = index;
-    dr->wLength = size;
+	if (!urb || !dr) {
+		if (urb)
+			kfree(urb);
+		spin_unlock(&ft1000dev->device_lock);
+		return -ENOMEM;
+	}

-    usb_fill_control_urb(urb, ft1000dev->dev, pipe, (char*)dr,
(void*)data, size, (void *)ft1000_control_complete, (void*)ft1000dev);
+	dr->bRequestType = requesttype;
+	dr->bRequest = request;
+	dr->wValue = value;
+	dr->wIndex = index;
+	dr->wLength = size;

+	usb_fill_control_urb(urb, ft1000dev->dev, pipe, (char *)dr,
+			     (void *)data, size,
+			     (void *)ft1000_control_complete,
+			     (void *)ft1000dev);

-    init_waitqueue_head(&ft1000dev->control_wait);
+	init_waitqueue_head(&ft1000dev->control_wait);

-    //current->state = TASK_INTERRUPTIBLE; //mbelian
+	//current->state = TASK_INTERRUPTIBLE; //mbelian
 	set_current_state(TASK_INTERRUPTIBLE);

-    add_wait_queue(&ft1000dev->control_wait, &wait);
+	add_wait_queue(&ft1000dev->control_wait, &wait);

+	status = usb_submit_urb(urb, GFP_KERNEL);

+	if (status) {
+		usb_free_urb(urb);
+		kfree(dr);
+		remove_wait_queue(&ft1000dev->control_wait, &wait);
+		spin_unlock(&ft1000dev->device_lock);
+		return status;
+	}

+	if (urb->status == -EINPROGRESS) {
+		while (timeout && urb->status == -EINPROGRESS) {
+			status = timeout = schedule_timeout(timeout);
+		}
+	} else {
+		status = 1;
+	}

-    status = usb_submit_urb(urb, GFP_KERNEL);
-
-    if(status)
-    {
-        usb_free_urb(urb);
-        kfree(dr);
-        remove_wait_queue(&ft1000dev->control_wait, &wait);
-        spin_unlock(&ft1000dev->device_lock);
-        return status;
-    }
-
-    if(urb->status == -EINPROGRESS)
-    {
-        while(timeout && urb->status == -EINPROGRESS)
-        {
-            status = timeout = schedule_timeout(timeout);
-        }
-    }
-    else
-    {
-        status = 1;
-    }
-
-    remove_wait_queue(&ft1000dev->control_wait, &wait);
-
-    if(!status)
-    {
-        usb_unlink_urb(urb);
-        printk("ft1000 timeout\n");
-        status = -ETIMEDOUT;
-    }
-    else
-    {
-        status = urb->status;
-
-        if(urb->status)
-        {
-            printk("ft1000 control message failed (urb addr: %x) with
error number: %i\n", (int)urb, (int)status);
-
-            usb_clear_halt(ft1000dev->dev, usb_rcvctrlpipe(ft1000dev->dev, 0));
-            usb_clear_halt(ft1000dev->dev, usb_sndctrlpipe(ft1000dev->dev, 0));
-            usb_unlink_urb(urb);
-        }
-    }
-
-
-
-    usb_free_urb(urb);
-    kfree(dr);
-    spin_unlock(&ft1000dev->device_lock);
-    return ret;
+	remove_wait_queue(&ft1000dev->control_wait, &wait);
+
+	if (!status) {
+		usb_unlink_urb(urb);
+		printk("ft1000 timeout\n");
+		status = -ETIMEDOUT;
+	} else {
+		status = urb->status;
+
+		if (urb->status) {
+			printk
+			    ("ft1000 control message failed (urb addr: %x) with error number: %i\n",
+			     (int)urb, (int)status);
+
+			usb_clear_halt(ft1000dev->dev,
+				       usb_rcvctrlpipe(ft1000dev->dev, 0));
+			usb_clear_halt(ft1000dev->dev,
+				       usb_sndctrlpipe(ft1000dev->dev, 0));
+			usb_unlink_urb(urb);
+		}
+	}

+	usb_free_urb(urb);
+	kfree(dr);
+	spin_unlock(&ft1000dev->device_lock);
+	return ret;

 }

@@ -1381,42 +1318,39 @@ static int ft1000_read_fifo_reg(struct
ft1000_device *ft1000dev,unsigned int pip
 // Notes:
 //
 //---------------------------------------------------------------------------
-static inline u16 ft1000_read_fifo_len (struct net_device *dev)
+static inline u16 ft1000_read_fifo_len(struct net_device *dev)
 {
-    u16 temp;
-    u16 ret;
+	u16 temp;
+	u16 ret;

-    //FT1000_INFO *info = (PFT1000_INFO)dev->priv;
-	FT1000_INFO *info = (FT1000_INFO *) netdev_priv (dev);
-    struct ft1000_device *ft1000dev = info->pFt1000Dev;
-//    DEBUG("ft1000_read_fifo_len: enter ft1000dev %x\n",
ft1000dev);			//aelias [-] reason: warning: format ???%x??? expects
type ???unsigned int???, but argument 2 has type ???struct
ft1000_device *???
-    DEBUG("ft1000_read_fifo_len: enter ft1000dev %x\n", (unsigned
int)ft1000dev);	//aelias [+] reason: up
-    //ft1000_read_register(ft1000dev, &temp, FT1000_REG_MAG_UFSR);
+	//FT1000_INFO *info = (PFT1000_INFO)dev->priv;
+	FT1000_INFO *info = (FT1000_INFO *) netdev_priv(dev);
+	struct ft1000_device *ft1000dev = info->pFt1000Dev;
+//    DEBUG("ft1000_read_fifo_len: enter ft1000dev %x\n", ft1000dev);
                  //aelias [-] reason: warning: format ???%x???
expects type ???unsigned int???, but argument 2 has type ???struct
ft1000_device *???
+	DEBUG("ft1000_read_fifo_len: enter ft1000dev %x\n", (unsigned
int)ft1000dev);	//aelias [+] reason: up
+	//ft1000_read_register(ft1000dev, &temp, FT1000_REG_MAG_UFSR);

-    ret = STATUS_SUCCESS;
+	ret = STATUS_SUCCESS;

-    ret = ft1000_read_fifo_reg(ft1000dev,
-                          usb_rcvctrlpipe(ft1000dev->dev,0),
-                          HARLEY_READ_REGISTER,
-                          HARLEY_READ_OPERATION,
-                          0,
-                          FT1000_REG_MAG_UFSR,
-                          &temp,
-                          2,
-                          LARGE_TIMEOUT);
+	ret = ft1000_read_fifo_reg(ft1000dev,
+				   usb_rcvctrlpipe(ft1000dev->dev, 0),
+				   HARLEY_READ_REGISTER,
+				   HARLEY_READ_OPERATION,
+				   0,
+				   FT1000_REG_MAG_UFSR,
+				   &temp, 2, LARGE_TIMEOUT);

-    if (ret>0)
-        ret = STATUS_SUCCESS;
-    else
-        ret = STATUS_FAILURE;
+	if (ret > 0)
+		ret = STATUS_SUCCESS;
+	else
+		ret = STATUS_FAILURE;

-    DEBUG("ft1000_read_fifo_len: returned %d\n", temp);
+	DEBUG("ft1000_read_fifo_len: returned %d\n", temp);

-    return (temp- 16);
+	return (temp - 16);

 }

-
 //---------------------------------------------------------------------------
 //
 // Function:   ft1000_copy_down_pkt
@@ -1432,139 +1366,123 @@ static inline u16 ft1000_read_fifo_len
(struct net_device *dev)
 //              SUCCESS
 //
 //---------------------------------------------------------------------------
-int ft1000_copy_down_pkt (struct net_device *netdev, u8 *packet, u16 len)
+int ft1000_copy_down_pkt(struct net_device *netdev, u8 * packet, u16 len)
 {
-    FT1000_INFO *pInfo = netdev_priv(netdev);
-    struct ft1000_device *pFt1000Dev = pInfo->pFt1000Dev;
-
+	FT1000_INFO *pInfo = netdev_priv(netdev);
+	struct ft1000_device *pFt1000Dev = pInfo->pFt1000Dev;

-    int i, count, ret;
-    USHORT *pTemp;
-    USHORT checksum;
-    u8 *t;
-
-    if (!pInfo->CardReady)
-    {
+	int i, count, ret;
+	USHORT *pTemp;
+	USHORT checksum;
+	u8 *t;

-        DEBUG("ft1000_copy_down_pkt::Card Not Ready\n");
-    	return STATUS_FAILURE;
+	if (!pInfo->CardReady) {

-    }
+		DEBUG("ft1000_copy_down_pkt::Card Not Ready\n");
+		return STATUS_FAILURE;

+	}

-    //DEBUG("ft1000_copy_down_pkt() entered, len = %d\n", len);
+	//DEBUG("ft1000_copy_down_pkt() entered, len = %d\n", len);

 #if 0
-    // Check if there is room on the FIFO
-    if ( len > ft1000_read_fifo_len (netdev) )
-    {
-         udelay(10);
-         if ( len > ft1000_read_fifo_len (netdev) )
-         {
-             udelay(20);
-         }
-
-         if ( len > ft1000_read_fifo_len (netdev) )
-         {
-             udelay(20);
-         }
-
-         if ( len > ft1000_read_fifo_len (netdev) )
-         {
-             udelay(20);
-         }
-
-         if ( len > ft1000_read_fifo_len (netdev) )
-         {
-             udelay(20);
-         }
-
-         if ( len > ft1000_read_fifo_len (netdev) )
-         {
-             udelay(20);
-         }
-
-         if ( len > ft1000_read_fifo_len (netdev) )
-         {
-            DEBUG("ft1000_hw:ft1000_copy_down_pkt:Transmit FIFO is
fulli - pkt drop\n");
-            pInfo->stats.tx_errors++;
-            return STATUS_SUCCESS;
-         }
-    }
+	// Check if there is room on the FIFO
+	if (len > ft1000_read_fifo_len(netdev)) {
+		udelay(10);
+		if (len > ft1000_read_fifo_len(netdev)) {
+			udelay(20);
+		}
+
+		if (len > ft1000_read_fifo_len(netdev)) {
+			udelay(20);
+		}
+
+		if (len > ft1000_read_fifo_len(netdev)) {
+			udelay(20);
+		}
+
+		if (len > ft1000_read_fifo_len(netdev)) {
+			udelay(20);
+		}
+
+		if (len > ft1000_read_fifo_len(netdev)) {
+			udelay(20);
+		}
+
+		if (len > ft1000_read_fifo_len(netdev)) {
+			DEBUG
+			    ("ft1000_hw:ft1000_copy_down_pkt:Transmit FIFO is fulli - pkt drop\n");
+			pInfo->stats.tx_errors++;
+			return STATUS_SUCCESS;
+		}
+	}
 #endif

-    count = sizeof (PSEUDO_HDR) + len;
-    if(count > MAX_BUF_SIZE)
-    {
-        DEBUG("Error:ft1000_copy_down_pkt:Message Size Overflow!\n");
-    	DEBUG("size = %d\n", count);
-    	return STATUS_FAILURE;
-    }
-
-    if ( count % 4)
-        count = count + (4- (count %4) );
-
-    pTemp = (PUSHORT)&(pFt1000Dev->tx_buf[0]);
-    *pTemp ++ = ntohs(count);
-    *pTemp ++ = 0x1020;
-    *pTemp ++ = 0x2010;
-    *pTemp ++ = 0x9100;
-    *pTemp ++ = 0;
-    *pTemp ++ = 0;
-    *pTemp ++ = 0;
-    pTemp = (PUSHORT)&(pFt1000Dev->tx_buf[0]);
-    checksum = *pTemp ++;
-    for (i=1; i<7; i++)
-    {
-        checksum ^= *pTemp ++;
-    }
-    *pTemp++ = checksum;
-    memcpy (&(pFt1000Dev->tx_buf[sizeof(PSEUDO_HDR)]), packet, len);
+	count = sizeof(PSEUDO_HDR) + len;
+	if (count > MAX_BUF_SIZE) {
+		DEBUG("Error:ft1000_copy_down_pkt:Message Size Overflow!\n");
+		DEBUG("size = %d\n", count);
+		return STATUS_FAILURE;
+	}

-    //usb_init_urb(pFt1000Dev->tx_urb); //mbelian
+	if (count % 4)
+		count = count + (4 - (count % 4));
+
+	pTemp = (PUSHORT) & (pFt1000Dev->tx_buf[0]);
+	*pTemp++ = ntohs(count);
+	*pTemp++ = 0x1020;
+	*pTemp++ = 0x2010;
+	*pTemp++ = 0x9100;
+	*pTemp++ = 0;
+	*pTemp++ = 0;
+	*pTemp++ = 0;
+	pTemp = (PUSHORT) & (pFt1000Dev->tx_buf[0]);
+	checksum = *pTemp++;
+	for (i = 1; i < 7; i++) {
+		checksum ^= *pTemp++;
+	}
+	*pTemp++ = checksum;
+	memcpy(&(pFt1000Dev->tx_buf[sizeof(PSEUDO_HDR)]), packet, len);

-    netif_stop_queue(netdev);
+	//usb_init_urb(pFt1000Dev->tx_urb); //mbelian

-    //DEBUG ("ft1000_copy_down_pkt: count = %d\n", count);
+	netif_stop_queue(netdev);

-    usb_fill_bulk_urb(pFt1000Dev->tx_urb,
-                      pFt1000Dev->dev,
-                      usb_sndbulkpipe(pFt1000Dev->dev,
pFt1000Dev->bulk_out_endpointAddr),
-                      pFt1000Dev->tx_buf,
-                      count,
-                      ft1000_usb_transmit_complete,
-                      (void*)pFt1000Dev);
+	//DEBUG ("ft1000_copy_down_pkt: count = %d\n", count);

-    t = (u8 *)pFt1000Dev->tx_urb->transfer_buffer;
-    //DEBUG("transfer_length=%d\n",
pFt1000Dev->tx_urb->transfer_buffer_length);
-    /*for (i=0; i<count; i++ )
-    {
-       DEBUG("%x    ", *t++ );
-    }*/
+	usb_fill_bulk_urb(pFt1000Dev->tx_urb,
+			  pFt1000Dev->dev,
+			  usb_sndbulkpipe(pFt1000Dev->dev,
+					  pFt1000Dev->bulk_out_endpointAddr),
+			  pFt1000Dev->tx_buf, count,
+			  ft1000_usb_transmit_complete, (void *)pFt1000Dev);

+	t = (u8 *) pFt1000Dev->tx_urb->transfer_buffer;
+	//DEBUG("transfer_length=%d\n", pFt1000Dev->tx_urb->transfer_buffer_length);
+	/*for (i=0; i<count; i++ )
+	   {
+	   DEBUG("%x    ", *t++ );
+	   } */

-    ret = usb_submit_urb(pFt1000Dev->tx_urb, GFP_ATOMIC);
-    if(ret)
-    {
+	ret = usb_submit_urb(pFt1000Dev->tx_urb, GFP_ATOMIC);
+	if (ret) {
 		DEBUG("ft1000 failed tx_urb %d\n", ret);

-   /*     pInfo->stats.tx_errors++;
+		/*     pInfo->stats.tx_errors++;

-        netif_start_queue(netdev);  */  //mbelian
+		   netif_start_queue(netdev);  *///mbelian
 		return STATUS_FAILURE;

-    }
-    else
-    {
-        //DEBUG("ft1000 sucess tx_urb %d\n", ret);
+	} else {
+		//DEBUG("ft1000 sucess tx_urb %d\n", ret);

-        pInfo->stats.tx_packets++;
-        pInfo->stats.tx_bytes += (len+14);
-    }
+		pInfo->stats.tx_packets++;
+		pInfo->stats.tx_bytes += (len + 14);
+	}

-    //DEBUG("ft1000_copy_down_pkt() exit\n");
+	//DEBUG("ft1000_copy_down_pkt() exit\n");

-    return STATUS_SUCCESS;
+	return STATUS_SUCCESS;
 }

 //---------------------------------------------------------------------------
@@ -1583,66 +1501,61 @@ int ft1000_copy_down_pkt (struct net_device
*netdev, u8 *packet, u16 len)
 //---------------------------------------------------------------------------
 static int ft1000_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
-    FT1000_INFO *pInfo = netdev_priv(dev);
-    struct ft1000_device *pFt1000Dev= pInfo->pFt1000Dev;
-    u8 *pdata;
-    int maxlen, pipe;
+	FT1000_INFO *pInfo = netdev_priv(dev);
+	struct ft1000_device *pFt1000Dev = pInfo->pFt1000Dev;
+	u8 *pdata;
+	int maxlen, pipe;

+	//DEBUG(" ft1000_start_xmit() entered\n");

-    //DEBUG(" ft1000_start_xmit() entered\n");
-
-    if ( skb == NULL )
-    {
-        DEBUG ("ft1000_hw: ft1000_start_xmit:skb == NULL!!!\n" );
-        return STATUS_FAILURE;
-    }
-
-    if ( pFt1000Dev->status & FT1000_STATUS_CLOSING)
-    {
-        DEBUG("network driver is closed, return\n");
-        dev_kfree_skb(skb);
-        //usb_kill_urb(pFt1000Dev->tx_urb); //mbelian
-        return STATUS_SUCCESS;
-    }
-
-    //DEBUG("ft1000_start_xmit 1:length of packet = %d\n", skb->len);
-    pipe = usb_sndbulkpipe(pFt1000Dev->dev, pFt1000Dev->bulk_out_endpointAddr);
-    maxlen = usb_maxpacket(pFt1000Dev->dev, pipe, usb_pipeout(pipe));
-    //DEBUG("ft1000_start_xmit 2: pipe=%d dev->maxpacket  = %d\n",
pipe, maxlen);
-
-    pdata = (u8 *)skb->data;
-    /*for (i=0; i<skb->len; i++)
-        DEBUG("skb->data[%d]=%x    ", i, *(skb->data+i));
-
-    DEBUG("\n");*/
-
+	if (skb == NULL) {
+		DEBUG("ft1000_hw: ft1000_start_xmit:skb == NULL!!!\n");
+		return STATUS_FAILURE;
+	}

-    if (pInfo->mediastate == 0)
-    {
-        /* Drop packet is mediastate is down */
-        DEBUG("ft1000_hw:ft1000_start_xmit:mediastate is down\n");
-        dev_kfree_skb(skb);
-        return STATUS_SUCCESS;
-    }
+	if (pFt1000Dev->status & FT1000_STATUS_CLOSING) {
+		DEBUG("network driver is closed, return\n");
+		dev_kfree_skb(skb);
+		//usb_kill_urb(pFt1000Dev->tx_urb); //mbelian
+		return STATUS_SUCCESS;
+	}
+	//DEBUG("ft1000_start_xmit 1:length of packet = %d\n", skb->len);
+	pipe =
+	    usb_sndbulkpipe(pFt1000Dev->dev, pFt1000Dev->bulk_out_endpointAddr);
+	maxlen = usb_maxpacket(pFt1000Dev->dev, pipe, usb_pipeout(pipe));
+	//DEBUG("ft1000_start_xmit 2: pipe=%d dev->maxpacket  = %d\n", pipe, maxlen);
+
+	pdata = (u8 *) skb->data;
+	/*for (i=0; i<skb->len; i++)
+	   DEBUG("skb->data[%d]=%x    ", i, *(skb->data+i));
+
+	   DEBUG("\n"); */
+
+	if (pInfo->mediastate == 0) {
+		/* Drop packet is mediastate is down */
+		DEBUG("ft1000_hw:ft1000_start_xmit:mediastate is down\n");
+		dev_kfree_skb(skb);
+		return STATUS_SUCCESS;
+	}

-    if ( (skb->len < ENET_HEADER_SIZE) || (skb->len > ENET_MAX_SIZE) )
-    {
-        /* Drop packet which has invalid size */
-        DEBUG("ft1000_hw:ft1000_start_xmit:invalid ethernet length\n");
-        dev_kfree_skb(skb);
-        return STATUS_SUCCESS;
-    }
+	if ((skb->len < ENET_HEADER_SIZE) || (skb->len > ENET_MAX_SIZE)) {
+		/* Drop packet which has invalid size */
+		DEBUG("ft1000_hw:ft1000_start_xmit:invalid ethernet length\n");
+		dev_kfree_skb(skb);
+		return STATUS_SUCCESS;
+	}
 //mbelian
-    if(ft1000_copy_down_pkt (dev, (pdata+ENET_HEADER_SIZE-2),
skb->len - ENET_HEADER_SIZE + 2) == STATUS_FAILURE)
-	{
-    	dev_kfree_skb(skb);
+	if (ft1000_copy_down_pkt
+	    (dev, (pdata + ENET_HEADER_SIZE - 2),
+	     skb->len - ENET_HEADER_SIZE + 2) == STATUS_FAILURE) {
+		dev_kfree_skb(skb);
 		return STATUS_SUCCESS;
 	}

-    dev_kfree_skb(skb);
-    //DEBUG(" ft1000_start_xmit() exit\n");
+	dev_kfree_skb(skb);
+	//DEBUG(" ft1000_start_xmit() exit\n");

-    return 0;
+	return 0;
 }

 //---------------------------------------------------------------------------
@@ -1658,107 +1571,98 @@ static int ft1000_start_xmit(struct sk_buff
*skb, struct net_device *dev)
 //              SUCCESS
 //
 //---------------------------------------------------------------------------
-int ft1000_copy_up_pkt (struct urb *urb)
+int ft1000_copy_up_pkt(struct urb *urb)
 {
-    PFT1000_INFO info = urb->context;
-    struct ft1000_device *ft1000dev = info->pFt1000Dev;
-    struct net_device *net = ft1000dev->net;
-
-    u16 tempword;
-    u16 len;
-    u16 lena; //mbelian
-    struct sk_buff *skb;
-    u16 i;
-    u8 *pbuffer=NULL;
-    u8 *ptemp=NULL;
-    u16 *chksum;
-
-
-    //DEBUG("ft1000_copy_up_pkt entered\n");
-
-    if ( ft1000dev->status & FT1000_STATUS_CLOSING)
-    {
-        DEBUG("network driver is closed, return\n");
-        return STATUS_SUCCESS;
-    }
-
-    // Read length
-    len = urb->transfer_buffer_length;
-    lena = urb->actual_length; //mbelian
-    //DEBUG("ft1000_copy_up_pkt: transfer_buffer_length=%d,
actual_buffer_len=%d\n",
-      //       urb->transfer_buffer_length, urb->actual_length);
-
-    chksum = (PUSHORT)ft1000dev->rx_buf;
-
-    tempword = *chksum++;
-    for (i=1; i<7; i++)
-    {
-        tempword ^= *chksum++;
-    }
-
-    if  (tempword != *chksum)
-    {
-        info->stats.rx_errors ++;
-        ft1000_submit_rx_urb(info);
-        return STATUS_FAILURE;
-    }
-
-
-    //DEBUG("ft1000_copy_up_pkt: checksum is correct %x\n", *chksum);
-
-    skb = dev_alloc_skb(len+12+2);
-
-    if (skb == NULL)
-    {
-        DEBUG("ft1000_copy_up_pkt: No Network buffers available\n");
-        info->stats.rx_errors++;
-        ft1000_submit_rx_urb(info);
-        return STATUS_FAILURE;
-    }
-
-    pbuffer = (u8 *)skb_put(skb, len+12);
-
-    //subtract the number of bytes read already
-    ptemp = pbuffer;
-
-    // fake MAC address
-    *pbuffer++ = net->dev_addr[0];
-    *pbuffer++ = net->dev_addr[1];
-    *pbuffer++ = net->dev_addr[2];
-    *pbuffer++ = net->dev_addr[3];
-    *pbuffer++ = net->dev_addr[4];
-    *pbuffer++ = net->dev_addr[5];
-    *pbuffer++ = 0x00;
-    *pbuffer++ = 0x07;
-    *pbuffer++ = 0x35;
-    *pbuffer++ = 0xff;
-    *pbuffer++ = 0xff;
-    *pbuffer++ = 0xfe;
-
-
+	PFT1000_INFO info = urb->context;
+	struct ft1000_device *ft1000dev = info->pFt1000Dev;
+	struct net_device *net = ft1000dev->net;
+
+	u16 tempword;
+	u16 len;
+	u16 lena;		//mbelian
+	struct sk_buff *skb;
+	u16 i;
+	u8 *pbuffer = NULL;
+	u8 *ptemp = NULL;
+	u16 *chksum;
+
+	//DEBUG("ft1000_copy_up_pkt entered\n");
+
+	if (ft1000dev->status & FT1000_STATUS_CLOSING) {
+		DEBUG("network driver is closed, return\n");
+		return STATUS_SUCCESS;
+	}
+	// Read length
+	len = urb->transfer_buffer_length;
+	lena = urb->actual_length;	//mbelian
+	//DEBUG("ft1000_copy_up_pkt: transfer_buffer_length=%d,
actual_buffer_len=%d\n",
+	//       urb->transfer_buffer_length, urb->actual_length);

+	chksum = (PUSHORT) ft1000dev->rx_buf;

-    memcpy(pbuffer, ft1000dev->rx_buf+sizeof(PSEUDO_HDR),
len-sizeof(PSEUDO_HDR));
+	tempword = *chksum++;
+	for (i = 1; i < 7; i++) {
+		tempword ^= *chksum++;
+	}

-    //DEBUG("ft1000_copy_up_pkt: Data passed to Protocol layer\n");
-    /*for (i=0; i<len+12; i++)
-    {
-        DEBUG("ft1000_copy_up_pkt: Protocol Data: 0x%x\n ", *ptemp++);
-    }*/
+	if (tempword != *chksum) {
+		info->stats.rx_errors++;
+		ft1000_submit_rx_urb(info);
+		return STATUS_FAILURE;
+	}

-    skb->dev = net;
+	//DEBUG("ft1000_copy_up_pkt: checksum is correct %x\n", *chksum);

-    skb->protocol = eth_type_trans(skb, net);
-    skb->ip_summed = CHECKSUM_UNNECESSARY;
-    netif_rx(skb);
+	skb = dev_alloc_skb(len + 12 + 2);

-    info->stats.rx_packets++;
-    // Add on 12 bytes for MAC address which was removed
-    info->stats.rx_bytes += (lena+12); //mbelian
+	if (skb == NULL) {
+		DEBUG("ft1000_copy_up_pkt: No Network buffers available\n");
+		info->stats.rx_errors++;
+		ft1000_submit_rx_urb(info);
+		return STATUS_FAILURE;
+	}

-    ft1000_submit_rx_urb(info);
-    //DEBUG("ft1000_copy_up_pkt exited\n");
-    return SUCCESS;
+	pbuffer = (u8 *) skb_put(skb, len + 12);
+
+	//subtract the number of bytes read already
+	ptemp = pbuffer;
+
+	// fake MAC address
+	*pbuffer++ = net->dev_addr[0];
+	*pbuffer++ = net->dev_addr[1];
+	*pbuffer++ = net->dev_addr[2];
+	*pbuffer++ = net->dev_addr[3];
+	*pbuffer++ = net->dev_addr[4];
+	*pbuffer++ = net->dev_addr[5];
+	*pbuffer++ = 0x00;
+	*pbuffer++ = 0x07;
+	*pbuffer++ = 0x35;
+	*pbuffer++ = 0xff;
+	*pbuffer++ = 0xff;
+	*pbuffer++ = 0xfe;
+
+	memcpy(pbuffer, ft1000dev->rx_buf + sizeof(PSEUDO_HDR),
+	       len - sizeof(PSEUDO_HDR));
+
+	//DEBUG("ft1000_copy_up_pkt: Data passed to Protocol layer\n");
+	/*for (i=0; i<len+12; i++)
+	   {
+	   DEBUG("ft1000_copy_up_pkt: Protocol Data: 0x%x\n ", *ptemp++);
+	   } */
+
+	skb->dev = net;
+
+	skb->protocol = eth_type_trans(skb, net);
+	skb->ip_summed = CHECKSUM_UNNECESSARY;
+	netif_rx(skb);
+
+	info->stats.rx_packets++;
+	// Add on 12 bytes for MAC address which was removed
+	info->stats.rx_bytes += (lena + 12);	//mbelian
+
+	ft1000_submit_rx_urb(info);
+	//DEBUG("ft1000_copy_up_pkt exited\n");
+	return SUCCESS;
 }

 //---------------------------------------------------------------------------
@@ -1776,41 +1680,37 @@ int ft1000_copy_up_pkt (struct urb *urb)
 //---------------------------------------------------------------------------
 int ft1000_submit_rx_urb(PFT1000_INFO info)
 {
-    int result;
-    struct ft1000_device *pFt1000Dev = info->pFt1000Dev;
-
-    //netif_carrier_on(pFt1000Dev->net);
-
-    //DEBUG ("ft1000_submit_rx_urb entered: sizeof rx_urb is %d\n",
sizeof(*pFt1000Dev->rx_urb));
-    if ( pFt1000Dev->status & FT1000_STATUS_CLOSING)
-    {
-        DEBUG("network driver is closed, return\n");
-        //usb_kill_urb(pFt1000Dev->rx_urb); //mbelian
-        return STATUS_SUCCESS;
-    }
-    //memset(pFt1000Dev->rx_urb, 0, sizeof(*pFt1000Dev->rx_urb));
-    //usb_init_urb(pFt1000Dev->rx_urb);//mbelian
+	int result;
+	struct ft1000_device *pFt1000Dev = info->pFt1000Dev;

-    //spin_lock_init(&pFt1000Dev->rx_urb->lock);
+	//netif_carrier_on(pFt1000Dev->net);

-    usb_fill_bulk_urb(pFt1000Dev->rx_urb,
-            pFt1000Dev->dev,
-            usb_rcvbulkpipe(pFt1000Dev->dev, pFt1000Dev->bulk_in_endpointAddr),
-            pFt1000Dev->rx_buf,
-            MAX_BUF_SIZE,
-            (usb_complete_t)ft1000_copy_up_pkt,
-            info);
+	//DEBUG ("ft1000_submit_rx_urb entered: sizeof rx_urb is %d\n",
sizeof(*pFt1000Dev->rx_urb));
+	if (pFt1000Dev->status & FT1000_STATUS_CLOSING) {
+		DEBUG("network driver is closed, return\n");
+		//usb_kill_urb(pFt1000Dev->rx_urb); //mbelian
+		return STATUS_SUCCESS;
+	}
+	//memset(pFt1000Dev->rx_urb, 0, sizeof(*pFt1000Dev->rx_urb));
+	//usb_init_urb(pFt1000Dev->rx_urb);//mbelian

+	//spin_lock_init(&pFt1000Dev->rx_urb->lock);

-    if((result = usb_submit_urb(pFt1000Dev->rx_urb, GFP_ATOMIC)))
-    {
-        printk("ft1000_submit_rx_urb: submitting rx_urb %d failed\n", result);
-        return STATUS_FAILURE;
-    }
+	usb_fill_bulk_urb(pFt1000Dev->rx_urb,
+			  pFt1000Dev->dev,
+			  usb_rcvbulkpipe(pFt1000Dev->dev,
+					  pFt1000Dev->bulk_in_endpointAddr),
+			  pFt1000Dev->rx_buf, MAX_BUF_SIZE,
+			  (usb_complete_t) ft1000_copy_up_pkt, info);

-    //DEBUG("ft1000_submit_rx_urb exit: result=%d\n", result);
+	if ((result = usb_submit_urb(pFt1000Dev->rx_urb, GFP_ATOMIC))) {
+		printk("ft1000_submit_rx_urb: submitting rx_urb %d failed\n",
+		       result);
+		return STATUS_FAILURE;
+	}
+	//DEBUG("ft1000_submit_rx_urb exit: result=%d\n", result);

-    return STATUS_SUCCESS;
+	return STATUS_SUCCESS;
 }

 //---------------------------------------------------------------------------
@@ -1827,31 +1727,30 @@ int ft1000_submit_rx_urb(PFT1000_INFO info)
 // Notes:
 //
 //---------------------------------------------------------------------------
-static int ft1000_open (struct net_device *dev)
+static int ft1000_open(struct net_device *dev)
 {
-	FT1000_INFO *pInfo = (FT1000_INFO *)netdev_priv(dev);
-    struct timeval tv; //mbelian
+	FT1000_INFO *pInfo = (FT1000_INFO *) netdev_priv(dev);
+	struct timeval tv;	//mbelian

-    DEBUG("ft1000_open is called for card %d\n", pInfo->CardNumber);
-    //DEBUG("ft1000_open: dev->addr=%x, dev->addr_len=%d\n",
dev->addr, dev->addr_len);
+	DEBUG("ft1000_open is called for card %d\n", pInfo->CardNumber);
+	//DEBUG("ft1000_open: dev->addr=%x, dev->addr_len=%d\n", dev->addr,
dev->addr_len);

-	pInfo->stats.rx_bytes = 0; //mbelian
-	pInfo->stats.tx_bytes = 0; //mbelian
-	pInfo->stats.rx_packets = 0; //mbelian
-	pInfo->stats.tx_packets = 0; //mbelian
+	pInfo->stats.rx_bytes = 0;	//mbelian
+	pInfo->stats.tx_bytes = 0;	//mbelian
+	pInfo->stats.rx_packets = 0;	//mbelian
+	pInfo->stats.tx_packets = 0;	//mbelian
 	do_gettimeofday(&tv);
-    pInfo->ConTm = tv.tv_sec;
-	pInfo->ProgConStat = 0; //mbelian
+	pInfo->ConTm = tv.tv_sec;
+	pInfo->ProgConStat = 0;	//mbelian

+	netif_start_queue(dev);

-    netif_start_queue(dev);
+	//netif_device_attach(dev);

-    //netif_device_attach(dev);
+	netif_carrier_on(dev);	//mbelian

-    netif_carrier_on(dev); //mbelian
-
-    ft1000_submit_rx_urb(pInfo);
-    return 0;
+	ft1000_submit_rx_urb(pInfo);
+	return 0;
 }

 //---------------------------------------------------------------------------
@@ -1870,45 +1769,42 @@ static int ft1000_open (struct net_device *dev)
 //---------------------------------------------------------------------------
 int ft1000_close(struct net_device *net)
 {
-	FT1000_INFO *pInfo = (FT1000_INFO *) netdev_priv (net);
-    struct ft1000_device *ft1000dev = pInfo->pFt1000Dev;
-
-    //DEBUG ("ft1000_close: netdev->refcnt=%d\n", net->refcnt);
-
-    ft1000dev->status |= FT1000_STATUS_CLOSING;
+	FT1000_INFO *pInfo = (FT1000_INFO *) netdev_priv(net);
+	struct ft1000_device *ft1000dev = pInfo->pFt1000Dev;

-    //DEBUG("ft1000_close: calling usb_kill_urb \n");
-    //usb_kill_urb(ft1000dev->rx_urb);
-    //usb_kill_urb(ft1000dev->tx_urb);
+	//DEBUG ("ft1000_close: netdev->refcnt=%d\n", net->refcnt);

+	ft1000dev->status |= FT1000_STATUS_CLOSING;

-    DEBUG("ft1000_close: pInfo=%x, ft1000dev=%x\n", (int)pInfo,
(int)ft1000dev);
-    netif_carrier_off(net);//mbelian
-    netif_stop_queue(net);
-    //DEBUG("ft1000_close: netif_stop_queue called\n");
-    ft1000dev->status &= ~FT1000_STATUS_CLOSING;
+	//DEBUG("ft1000_close: calling usb_kill_urb \n");
+	//usb_kill_urb(ft1000dev->rx_urb);
+	//usb_kill_urb(ft1000dev->tx_urb);

-   pInfo->ProgConStat = 0xff; //mbelian
+	DEBUG("ft1000_close: pInfo=%x, ft1000dev=%x\n", (int)pInfo,
+	      (int)ft1000dev);
+	netif_carrier_off(net);	//mbelian
+	netif_stop_queue(net);
+	//DEBUG("ft1000_close: netif_stop_queue called\n");
+	ft1000dev->status &= ~FT1000_STATUS_CLOSING;

+	pInfo->ProgConStat = 0xff;	//mbelian

-    return 0;
+	return 0;
 }

 static struct net_device_stats *ft1000_netdev_stats(struct net_device *dev)
 {
-	FT1000_INFO *info = (FT1000_INFO *) netdev_priv (dev);
-    //struct ft1000_device *ft1000dev = info->pFt1000Dev;
+	FT1000_INFO *info = (FT1000_INFO *) netdev_priv(dev);
+	//struct ft1000_device *ft1000dev = info->pFt1000Dev;

-    //return &(ft1000dev->stats);//mbelian
-	return &(info->stats); //mbelian
+	//return &(ft1000dev->stats);//mbelian
+	return &(info->stats);	//mbelian
 }

-
 /*********************************************************************************
 Jim
 */

-
 //---------------------------------------------------------------------------
 //
 // Function:   ft1000_chkcard
@@ -1921,37 +1817,38 @@ Jim
 //              TRUE  (device is present)
 //
 //---------------------------------------------------------------------------
-static int ft1000_chkcard (struct ft1000_device *dev) {
-    u16 tempword;
-    u16 status;
-	FT1000_INFO *info = (FT1000_INFO *) netdev_priv (dev->net);
-
-    if (info->fCondResetPend)
-    {
-        DEBUG("ft1000_hw:ft1000_chkcard:Card is being reset, return FALSE\n");
-        return TRUE;
-    }
-
-    // Mask register is used to check for device presence since it is never
-    // set to zero.
-    status = ft1000_read_register(dev, &tempword, FT1000_REG_SUP_IMASK);
-    //DEBUG("ft1000_hw:ft1000_chkcard: read FT1000_REG_SUP_IMASK =
%x\n", tempword);
-    if (tempword == 0) {
-        DEBUG("ft1000_hw:ft1000_chkcard: IMASK = 0 Card not detected\n");
-        return FALSE;
-    }
-
-    // The system will return the value of 0xffff for the version register
-    // if the device is not present.
-    status = ft1000_read_register(dev, &tempword, FT1000_REG_ASIC_ID);
-    //DEBUG("ft1000_hw:ft1000_chkcard: read FT1000_REG_ASIC_ID =
%x\n", tempword);
-    //pxu if (tempword == 0xffff) {
-    if (tempword != 0x1b01 ){
-	dev->status |= FT1000_STATUS_CLOSING; //mbelian
-        DEBUG("ft1000_hw:ft1000_chkcard: Version = 0xffff Card not
detected\n");
-        return FALSE;
-    }
-    return TRUE;
+static int ft1000_chkcard(struct ft1000_device *dev)
+{
+	u16 tempword;
+	u16 status;
+	FT1000_INFO *info = (FT1000_INFO *) netdev_priv(dev->net);
+
+	if (info->fCondResetPend) {
+		DEBUG
+		    ("ft1000_hw:ft1000_chkcard:Card is being reset, return FALSE\n");
+		return TRUE;
+	}
+	// Mask register is used to check for device presence since it is never
+	// set to zero.
+	status = ft1000_read_register(dev, &tempword, FT1000_REG_SUP_IMASK);
+	//DEBUG("ft1000_hw:ft1000_chkcard: read FT1000_REG_SUP_IMASK =
%x\n", tempword);
+	if (tempword == 0) {
+		DEBUG
+		    ("ft1000_hw:ft1000_chkcard: IMASK = 0 Card not detected\n");
+		return FALSE;
+	}
+	// The system will return the value of 0xffff for the version register
+	// if the device is not present.
+	status = ft1000_read_register(dev, &tempword, FT1000_REG_ASIC_ID);
+	//DEBUG("ft1000_hw:ft1000_chkcard: read FT1000_REG_ASIC_ID = %x\n", tempword);
+	//pxu if (tempword == 0xffff) {
+	if (tempword != 0x1b01) {
+		dev->status |= FT1000_STATUS_CLOSING;	//mbelian
+		DEBUG
+		    ("ft1000_hw:ft1000_chkcard: Version = 0xffff Card not detected\n");
+		return FALSE;
+	}
+	return TRUE;
 }

 //---------------------------------------------------------------------------
@@ -1967,126 +1864,198 @@ static int ft1000_chkcard (struct
ft1000_device *dev) {
 //---------------------------------------------------------------------------
 static void ft1000_hbchk(u_long data)
 {
-    struct ft1000_device *dev = (struct ft1000_device *)data;
-
-    FT1000_INFO *info;
-    USHORT tempword;
-        u16 status;
-	info = (FT1000_INFO *) netdev_priv (dev->net);
-
-    DEBUG("ft1000_hbchk called for CardNumber = %d CardReady = %d\n",
info->CardNumber, info->CardReady);
-
-    if (info->fCondResetPend == 1) {
-        // Reset ASIC and DSP
-        status = ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER0,
(PUCHAR)&(info->DSP_TIME[0]), FT1000_MAG_DSP_TIMER0_INDX);
-        status = ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER1,
(PUCHAR)&(info->DSP_TIME[1]), FT1000_MAG_DSP_TIMER1_INDX);
-        status = ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER2,
(PUCHAR)&(info->DSP_TIME[2]), FT1000_MAG_DSP_TIMER2_INDX);
-        status = ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER3,
(PUCHAR)&(info->DSP_TIME[3]), FT1000_MAG_DSP_TIMER3_INDX);
-
-        info->DrvErrNum = DSP_CONDRESET_INFO;
-        DEBUG("ft1000_hw:DSP conditional reset requested\n");
-        ft1000_reset_card(dev->net);
-        info->fCondResetPend = 0;
-        /* Schedule this module to run every 2 seconds */
-
-        poll_timer[info->CardNumber].expires = jiffies + (2*HZ);
-        poll_timer[info->CardNumber].data = (u_long)dev;
-        add_timer(&poll_timer[info->CardNumber]);
-
-
-
-        return;
-    }
+	struct ft1000_device *dev = (struct ft1000_device *)data;
+
+	FT1000_INFO *info;
+	USHORT tempword;
+	u16 status;
+	info = (FT1000_INFO *) netdev_priv(dev->net);
+
+	DEBUG("ft1000_hbchk called for CardNumber = %d CardReady = %d\n",
+	      info->CardNumber, info->CardReady);
+
+	if (info->fCondResetPend == 1) {
+		// Reset ASIC and DSP
+		status =
+		    ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER0,
+					(PUCHAR) & (info->DSP_TIME[0]),
+					FT1000_MAG_DSP_TIMER0_INDX);
+		status =
+		    ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER1,
+					(PUCHAR) & (info->DSP_TIME[1]),
+					FT1000_MAG_DSP_TIMER1_INDX);
+		status =
+		    ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER2,
+					(PUCHAR) & (info->DSP_TIME[2]),
+					FT1000_MAG_DSP_TIMER2_INDX);
+		status =
+		    ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER3,
+					(PUCHAR) & (info->DSP_TIME[3]),
+					FT1000_MAG_DSP_TIMER3_INDX);
+
+		info->DrvErrNum = DSP_CONDRESET_INFO;
+		DEBUG("ft1000_hw:DSP conditional reset requested\n");
+		ft1000_reset_card(dev->net);
+		info->fCondResetPend = 0;
+		/* Schedule this module to run every 2 seconds */
+
+		poll_timer[info->CardNumber].expires = jiffies + (2 * HZ);
+		poll_timer[info->CardNumber].data = (u_long) dev;
+		add_timer(&poll_timer[info->CardNumber]);
+
+		return;
+	}

-    if (info->CardReady == 1) {
-        // Perform dsp heartbeat check
-            status = ntohs(ft1000_read_dpram16(dev, FT1000_MAG_HI_HO,
(PUCHAR)&tempword, FT1000_MAG_HI_HO_INDX));
-        DEBUG("ft1000_hw:ft1000_hbchk:hi_ho value = 0x%x\n", tempword);
-        // Let's perform another check if ho is not detected
-        if (tempword != ho) {
-              status  = ntohs(ft1000_read_dpram16(dev,
FT1000_MAG_HI_HO, (PUCHAR)&tempword,FT1000_MAG_HI_HO_INDX));
-        }
-        if (tempword != ho) {
-            printk(KERN_INFO "ft1000: heartbeat failed - no ho detected\n");
-                status = ft1000_read_dpram16(dev,
FT1000_MAG_DSP_TIMER0, (PUCHAR)&(info->DSP_TIME[0]),
FT1000_MAG_DSP_TIMER0_INDX);
-                status = ft1000_read_dpram16(dev,
FT1000_MAG_DSP_TIMER1, (PUCHAR)&(info->DSP_TIME[1]),
FT1000_MAG_DSP_TIMER1_INDX);
-                status = ft1000_read_dpram16(dev,
FT1000_MAG_DSP_TIMER2, (PUCHAR)&(info->DSP_TIME[2]),
FT1000_MAG_DSP_TIMER2_INDX);
-                status = ft1000_read_dpram16(dev,
FT1000_MAG_DSP_TIMER3, (PUCHAR)&(info->DSP_TIME[3]),
FT1000_MAG_DSP_TIMER3_INDX);
-            info->DrvErrNum = DSP_HB_INFO;
-            if (ft1000_reset_card(dev->net) == 0) {
-               printk(KERN_INFO "ft1000: Hardware Failure Detected -
PC Card disabled\n");
-               info->ProgConStat = 0xff;
-               return;
-            }
-            /* Schedule this module to run every 2 seconds */
-            poll_timer[info->CardNumber].expires = jiffies + (2*HZ);
-            poll_timer[info->CardNumber].data = (u_long)dev;
-            add_timer(&poll_timer[info->CardNumber]);
-            return;
-        }
-
-        status = ft1000_read_register(dev, &tempword, FT1000_REG_DOORBELL);
-        // Let's check doorbell again if fail
-        if (tempword & FT1000_DB_HB) {
-                status = ft1000_read_register(dev, &tempword,
FT1000_REG_DOORBELL);
-        }
-        if (tempword & FT1000_DB_HB) {
-            printk(KERN_INFO "ft1000: heartbeat doorbell not clear by
firmware\n");
-            status = ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER0,
(PUCHAR)&(info->DSP_TIME[0]), FT1000_MAG_DSP_TIMER0_INDX);
-            status = ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER1,
(PUCHAR)&(info->DSP_TIME[1]), FT1000_MAG_DSP_TIMER1_INDX);
-            status = ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER2,
(PUCHAR)&(info->DSP_TIME[2]), FT1000_MAG_DSP_TIMER2_INDX);
-            status = ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER3,
(PUCHAR)&(info->DSP_TIME[3]), FT1000_MAG_DSP_TIMER3_INDX);
-            info->DrvErrNum = DSP_HB_INFO;
-            if (ft1000_reset_card(dev->net) == 0) {
-               printk(KERN_INFO "ft1000: Hardware Failure Detected -
PC Card disabled\n");
-               info->ProgConStat = 0xff;
-               return;
-            }
-            /* Schedule this module to run every 2 seconds */
-            poll_timer[info->CardNumber].expires = jiffies + (2*HZ);
-            poll_timer[info->CardNumber].data = (u_long)dev;
-            add_timer(&poll_timer[info->CardNumber]);
-            return;
-        }
-
-        // Set dedicated area to hi and ring appropriate doorbell according
-        // to hi/ho heartbeat protocol
-        ft1000_write_dpram16(dev, FT1000_MAG_HI_HO, hi_mag,
FT1000_MAG_HI_HO_INDX);
-
-        status = ntohs(ft1000_read_dpram16(dev, FT1000_MAG_HI_HO,
(PUCHAR)&tempword, FT1000_MAG_HI_HO_INDX));
-        // Let's write hi again if fail
-        if (tempword != hi) {
-               ft1000_write_dpram16(dev, FT1000_MAG_HI_HO, hi_mag,
FT1000_MAG_HI_HO_INDX);
-                   status = ntohs(ft1000_read_dpram16(dev,
FT1000_MAG_HI_HO, (PUCHAR)&tempword, FT1000_MAG_HI_HO_INDX));
-
-        }
-        if (tempword != hi) {
-            printk(KERN_INFO "ft1000: heartbeat failed - cannot write
hi into DPRAM\n");
-            status = ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER0,
(PUCHAR)&(info->DSP_TIME[0]), FT1000_MAG_DSP_TIMER0_INDX);
-            status = ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER1,
(PUCHAR)&(info->DSP_TIME[1]), FT1000_MAG_DSP_TIMER1_INDX);
-            status = ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER2,
(PUCHAR)&(info->DSP_TIME[2]), FT1000_MAG_DSP_TIMER2_INDX);
-            status = ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER3,
(PUCHAR)&(info->DSP_TIME[3]), FT1000_MAG_DSP_TIMER3_INDX);
-
-            info->DrvErrNum = DSP_HB_INFO;
-            if (ft1000_reset_card(dev->net) == 0) {
-               printk(KERN_INFO "ft1000: Hardware Failure Detected -
PC Card disabled\n");
-               info->ProgConStat = 0xff;
-               return;
-            }
-            /* Schedule this module to run every 2 seconds */
-            poll_timer[info->CardNumber].expires = jiffies + (2*HZ);
-            poll_timer[info->CardNumber].data = (u_long)dev;
-            add_timer(&poll_timer[info->CardNumber]);
-            return;
-        }
-        ft1000_write_register(dev, FT1000_DB_HB, FT1000_REG_DOORBELL);
+	if (info->CardReady == 1) {
+		// Perform dsp heartbeat check
+		status =
+		    ntohs(ft1000_read_dpram16
+			  (dev, FT1000_MAG_HI_HO, (PUCHAR) & tempword,
+			   FT1000_MAG_HI_HO_INDX));
+		DEBUG("ft1000_hw:ft1000_hbchk:hi_ho value = 0x%x\n", tempword);
+		// Let's perform another check if ho is not detected
+		if (tempword != ho) {
+			status =
+			    ntohs(ft1000_read_dpram16
+				  (dev, FT1000_MAG_HI_HO, (PUCHAR) & tempword,
+				   FT1000_MAG_HI_HO_INDX));
+		}
+		if (tempword != ho) {
+			printk(KERN_INFO
+			       "ft1000: heartbeat failed - no ho detected\n");
+			status =
+			    ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER0,
+						(PUCHAR) & (info->DSP_TIME[0]),
+						FT1000_MAG_DSP_TIMER0_INDX);
+			status =
+			    ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER1,
+						(PUCHAR) & (info->DSP_TIME[1]),
+						FT1000_MAG_DSP_TIMER1_INDX);
+			status =
+			    ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER2,
+						(PUCHAR) & (info->DSP_TIME[2]),
+						FT1000_MAG_DSP_TIMER2_INDX);
+			status =
+			    ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER3,
+						(PUCHAR) & (info->DSP_TIME[3]),
+						FT1000_MAG_DSP_TIMER3_INDX);
+			info->DrvErrNum = DSP_HB_INFO;
+			if (ft1000_reset_card(dev->net) == 0) {
+				printk(KERN_INFO
+				       "ft1000: Hardware Failure Detected - PC Card disabled\n");
+				info->ProgConStat = 0xff;
+				return;
+			}
+			/* Schedule this module to run every 2 seconds */
+			poll_timer[info->CardNumber].expires =
+			    jiffies + (2 * HZ);
+			poll_timer[info->CardNumber].data = (u_long) dev;
+			add_timer(&poll_timer[info->CardNumber]);
+			return;
+		}
+
+		status =
+		    ft1000_read_register(dev, &tempword, FT1000_REG_DOORBELL);
+		// Let's check doorbell again if fail
+		if (tempword & FT1000_DB_HB) {
+			status =
+			    ft1000_read_register(dev, &tempword,
+						 FT1000_REG_DOORBELL);
+		}
+		if (tempword & FT1000_DB_HB) {
+			printk(KERN_INFO
+			       "ft1000: heartbeat doorbell not clear by firmware\n");
+			status =
+			    ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER0,
+						(PUCHAR) & (info->DSP_TIME[0]),
+						FT1000_MAG_DSP_TIMER0_INDX);
+			status =
+			    ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER1,
+						(PUCHAR) & (info->DSP_TIME[1]),
+						FT1000_MAG_DSP_TIMER1_INDX);
+			status =
+			    ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER2,
+						(PUCHAR) & (info->DSP_TIME[2]),
+						FT1000_MAG_DSP_TIMER2_INDX);
+			status =
+			    ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER3,
+						(PUCHAR) & (info->DSP_TIME[3]),
+						FT1000_MAG_DSP_TIMER3_INDX);
+			info->DrvErrNum = DSP_HB_INFO;
+			if (ft1000_reset_card(dev->net) == 0) {
+				printk(KERN_INFO
+				       "ft1000: Hardware Failure Detected - PC Card disabled\n");
+				info->ProgConStat = 0xff;
+				return;
+			}
+			/* Schedule this module to run every 2 seconds */
+			poll_timer[info->CardNumber].expires =
+			    jiffies + (2 * HZ);
+			poll_timer[info->CardNumber].data = (u_long) dev;
+			add_timer(&poll_timer[info->CardNumber]);
+			return;
+		}
+		// Set dedicated area to hi and ring appropriate doorbell according
+		// to hi/ho heartbeat protocol
+		ft1000_write_dpram16(dev, FT1000_MAG_HI_HO, hi_mag,
+				     FT1000_MAG_HI_HO_INDX);
+
+		status =
+		    ntohs(ft1000_read_dpram16
+			  (dev, FT1000_MAG_HI_HO, (PUCHAR) & tempword,
+			   FT1000_MAG_HI_HO_INDX));
+		// Let's write hi again if fail
+		if (tempword != hi) {
+			ft1000_write_dpram16(dev, FT1000_MAG_HI_HO, hi_mag,
+					     FT1000_MAG_HI_HO_INDX);
+			status =
+			    ntohs(ft1000_read_dpram16
+				  (dev, FT1000_MAG_HI_HO, (PUCHAR) & tempword,
+				   FT1000_MAG_HI_HO_INDX));
+
+		}
+		if (tempword != hi) {
+			printk(KERN_INFO
+			       "ft1000: heartbeat failed - cannot write hi into DPRAM\n");
+			status =
+			    ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER0,
+						(PUCHAR) & (info->DSP_TIME[0]),
+						FT1000_MAG_DSP_TIMER0_INDX);
+			status =
+			    ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER1,
+						(PUCHAR) & (info->DSP_TIME[1]),
+						FT1000_MAG_DSP_TIMER1_INDX);
+			status =
+			    ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER2,
+						(PUCHAR) & (info->DSP_TIME[2]),
+						FT1000_MAG_DSP_TIMER2_INDX);
+			status =
+			    ft1000_read_dpram16(dev, FT1000_MAG_DSP_TIMER3,
+						(PUCHAR) & (info->DSP_TIME[3]),
+						FT1000_MAG_DSP_TIMER3_INDX);
+
+			info->DrvErrNum = DSP_HB_INFO;
+			if (ft1000_reset_card(dev->net) == 0) {
+				printk(KERN_INFO
+				       "ft1000: Hardware Failure Detected - PC Card disabled\n");
+				info->ProgConStat = 0xff;
+				return;
+			}
+			/* Schedule this module to run every 2 seconds */
+			poll_timer[info->CardNumber].expires =
+			    jiffies + (2 * HZ);
+			poll_timer[info->CardNumber].data = (u_long) dev;
+			add_timer(&poll_timer[info->CardNumber]);
+			return;
+		}
+		ft1000_write_register(dev, FT1000_DB_HB, FT1000_REG_DOORBELL);

-    }
+	}

-    /* Schedule this module to run every 2 seconds */
-    poll_timer[info->CardNumber].expires = jiffies + (2*HZ);
-    poll_timer[info->CardNumber].data = (u_long)dev;
-    add_timer(&poll_timer[info->CardNumber]);
+	/* Schedule this module to run every 2 seconds */
+	poll_timer[info->CardNumber].expires = jiffies + (2 * HZ);
+	poll_timer[info->CardNumber].data = (u_long) dev;
+	add_timer(&poll_timer[info->CardNumber]);
 }

 //---------------------------------------------------------------------------
@@ -2102,660 +2071,861 @@ static void ft1000_hbchk(u_long data)
 //          = 1 (successful)
 //
 //---------------------------------------------------------------------------
-BOOLEAN ft1000_receive_cmd (struct ft1000_device *dev, u16 *pbuffer,
int maxsz, u16 *pnxtph) {
-    u16 size, ret;
-    u16 *ppseudohdr;
-    int i;
-    u16 tempword;
-
-    ret = ft1000_read_dpram16(dev, FT1000_MAG_PH_LEN, (PUCHAR)&size,
FT1000_MAG_PH_LEN_INDX);
-    size = ntohs(size) + PSEUDOSZ;
-    if (size > maxsz) {
-        DEBUG("FT1000:ft1000_receive_cmd:Invalid command length = %d\n", size);
-        return FALSE;
-    }
-    else {
-        ppseudohdr = (u16 *)pbuffer;
-        //spin_lock_irqsave (&info->dpram_lock, flags);
-        ft1000_write_register(dev, FT1000_DPRAM_MAG_RX_BASE,
FT1000_REG_DPRAM_ADDR);
-        ret = ft1000_read_register(dev, pbuffer, FT1000_REG_MAG_DPDATAH);
-        //DEBUG("ft1000_hw:received data = 0x%x\n", *pbuffer);
-        pbuffer++;
-        ft1000_write_register(dev,  FT1000_DPRAM_MAG_RX_BASE+1,
FT1000_REG_DPRAM_ADDR);
-        for (i=0; i<=(size>>2); i++) {
-            ret = ft1000_read_register(dev, pbuffer, FT1000_REG_MAG_DPDATAL);
-            pbuffer++;
-            ret = ft1000_read_register(dev, pbuffer, FT1000_REG_MAG_DPDATAH);
-            pbuffer++;
-        }
-        //copy odd aligned word
-        ret = ft1000_read_register(dev, pbuffer, FT1000_REG_MAG_DPDATAL);
-        //DEBUG("ft1000_hw:received data = 0x%x\n", *pbuffer);
-        pbuffer++;
-        ret = ft1000_read_register(dev, pbuffer, FT1000_REG_MAG_DPDATAH);
-        //DEBUG("ft1000_hw:received data = 0x%x\n", *pbuffer);
-        pbuffer++;
-        if (size & 0x0001) {
-            //copy odd byte from fifo
-            ret = ft1000_read_register(dev, &tempword, FT1000_REG_DPRAM_DATA);
-            *pbuffer = ntohs(tempword);
-        }
-        //spin_unlock_irqrestore(&info->dpram_lock, flags);
-
-        // Check if pseudo header checksum is good
-        // Calculate pseudo header checksum
-        tempword = *ppseudohdr++;
-        for (i=1; i<7; i++) {
-            tempword ^= *ppseudohdr++;
-        }
-        if ( (tempword != *ppseudohdr) ) {
-            return FALSE;
-        }
-
+BOOLEAN ft1000_receive_cmd(struct ft1000_device * dev, u16 * pbuffer,
int maxsz,
+			   u16 * pnxtph)
+{
+	u16 size, ret;
+	u16 *ppseudohdr;
+	int i;
+	u16 tempword;
+
+	ret =
+	    ft1000_read_dpram16(dev, FT1000_MAG_PH_LEN, (PUCHAR) & size,
+				FT1000_MAG_PH_LEN_INDX);
+	size = ntohs(size) + PSEUDOSZ;
+	if (size > maxsz) {
+		DEBUG("FT1000:ft1000_receive_cmd:Invalid command length = %d\n",
+		      size);
+		return FALSE;
+	} else {
+		ppseudohdr = (u16 *) pbuffer;
+		//spin_lock_irqsave (&info->dpram_lock, flags);
+		ft1000_write_register(dev, FT1000_DPRAM_MAG_RX_BASE,
+				      FT1000_REG_DPRAM_ADDR);
+		ret =
+		    ft1000_read_register(dev, pbuffer, FT1000_REG_MAG_DPDATAH);
+		//DEBUG("ft1000_hw:received data = 0x%x\n", *pbuffer);
+		pbuffer++;
+		ft1000_write_register(dev, FT1000_DPRAM_MAG_RX_BASE + 1,
+				      FT1000_REG_DPRAM_ADDR);
+		for (i = 0; i <= (size >> 2); i++) {
+			ret =
+			    ft1000_read_register(dev, pbuffer,
+						 FT1000_REG_MAG_DPDATAL);
+			pbuffer++;
+			ret =
+			    ft1000_read_register(dev, pbuffer,
+						 FT1000_REG_MAG_DPDATAH);
+			pbuffer++;
+		}
+		//copy odd aligned word
+		ret =
+		    ft1000_read_register(dev, pbuffer, FT1000_REG_MAG_DPDATAL);
+		//DEBUG("ft1000_hw:received data = 0x%x\n", *pbuffer);
+		pbuffer++;
+		ret =
+		    ft1000_read_register(dev, pbuffer, FT1000_REG_MAG_DPDATAH);
+		//DEBUG("ft1000_hw:received data = 0x%x\n", *pbuffer);
+		pbuffer++;
+		if (size & 0x0001) {
+			//copy odd byte from fifo
+			ret =
+			    ft1000_read_register(dev, &tempword,
+						 FT1000_REG_DPRAM_DATA);
+			*pbuffer = ntohs(tempword);
+		}
+		//spin_unlock_irqrestore(&info->dpram_lock, flags);
+
+		// Check if pseudo header checksum is good
+		// Calculate pseudo header checksum
+		tempword = *ppseudohdr++;
+		for (i = 1; i < 7; i++) {
+			tempword ^= *ppseudohdr++;
+		}
+		if ((tempword != *ppseudohdr)) {
+			return FALSE;
+		}

 #if 0
-        DEBUG("ft1000_receive_cmd:pbuffer\n");
-        for(i = 0; i < size; i+=5)
-        {
-            if( (i + 5) < size )
-                DEBUG("0x%x, 0x%x, 0x%x, 0x%x, 0x%x\n",
tempbuffer[i], tempbuffer[i+1], tempbuffer[i+2], tempbuffer[i+3],
tempbuffer[i+4]);
-            else
-            {
-                for (j = i; j < size; j++)
-                DEBUG("0x%x ", tempbuffer[j]);
-                DEBUG("\n");
-                break;
-            }
-        }
+		DEBUG("ft1000_receive_cmd:pbuffer\n");
+		for (i = 0; i < size; i += 5) {
+			if ((i + 5) < size)
+				DEBUG("0x%x, 0x%x, 0x%x, 0x%x, 0x%x\n",
+				      tempbuffer[i], tempbuffer[i + 1],
+				      tempbuffer[i + 2], tempbuffer[i + 3],
+				      tempbuffer[i + 4]);
+			else {
+				for (j = i; j < size; j++)
+					DEBUG("0x%x ", tempbuffer[j]);
+				DEBUG("\n");
+				break;
+			}
+		}

 #endif

-        return TRUE;
-    }
+		return TRUE;
+	}
 }

-
 int ft1000_dsp_prov(void *arg)
 {
-    struct ft1000_device *dev = (struct ft1000_device *)arg;
-	FT1000_INFO *info = (FT1000_INFO *) netdev_priv (dev->net);
-    u16 tempword;
-    u16 len;
-    u16 i=0;
-    PPROV_RECORD ptr;
-    PPSEUDO_HDR ppseudo_hdr;
-    PUSHORT pmsg;
-    u16 status;
-    USHORT TempShortBuf [256];
-
-    DEBUG("*** DspProv Entered\n");
-
-    while (         list_empty(&info->prov_list) == 0
-                   /*&&  !kthread_should_stop()  */)
-    {
-	DEBUG("DSP Provisioning List Entry\n");
-
-        // Check if doorbell is available
-        DEBUG("check if doorbell is cleared\n");
-        status = ft1000_read_register (dev, &tempword, FT1000_REG_DOORBELL);
-        if (status)
-	{
-		DEBUG("ft1000_dsp_prov::ft1000_read_register error\n");
-            break;
-        }
-
-        while (tempword & FT1000_DB_DPRAM_TX) {
-            mdelay(10);
-            i++;
-            if (i==10) {
-               DEBUG("FT1000:ft1000_dsp_prov:message drop\n");
-               return STATUS_FAILURE;
-            }
-            ft1000_read_register(dev, &tempword, FT1000_REG_DOORBELL);
-        }
-
-        if ( !(tempword & FT1000_DB_DPRAM_TX) ) {
-            DEBUG("*** Provision Data Sent to DSP\n");
-
-            // Send provisioning data
-            ptr = list_entry(info->prov_list.next, PROV_RECORD, list);
-            len = *(u16 *)ptr->pprov_data;
-            len = htons(len);
-            len += PSEUDOSZ;
-            //len = htons(len);
-
-            pmsg = (PUSHORT)ptr->pprov_data;
-            ppseudo_hdr = (PPSEUDO_HDR)pmsg;
-            // Insert slow queue sequence number
-            ppseudo_hdr->seq_num = info->squeseqnum++;
-            ppseudo_hdr->portsrc = 0;
-            // Calculate new checksum
-            ppseudo_hdr->checksum = *pmsg++;
-            //DEBUG("checksum = 0x%x\n", ppseudo_hdr->checksum);
-            for (i=1; i<7; i++) {
-                ppseudo_hdr->checksum ^= *pmsg++;
-                //DEBUG("checksum = 0x%x\n", ppseudo_hdr->checksum);
-            }
-
-            TempShortBuf[0] = 0;
-            TempShortBuf[1] = htons (len);
-            memcpy(&TempShortBuf[2], ppseudo_hdr, len);
-
-            status = ft1000_write_dpram32 (dev, 0,
(PUCHAR)&TempShortBuf[0], (unsigned short)(len+2));
-            status = ft1000_write_register (dev, FT1000_DB_DPRAM_TX,
FT1000_REG_DOORBELL);
-
-            list_del(&ptr->list);
-            kfree(ptr->pprov_data);
-            kfree(ptr);
-        }
-        msleep(10);
-    }
+	struct ft1000_device *dev = (struct ft1000_device *)arg;
+	FT1000_INFO *info = (FT1000_INFO *) netdev_priv(dev->net);
+	u16 tempword;
+	u16 len;
+	u16 i = 0;
+	PPROV_RECORD ptr;
+	PPSEUDO_HDR ppseudo_hdr;
+	PUSHORT pmsg;
+	u16 status;
+	USHORT TempShortBuf[256];
+
+	DEBUG("*** DspProv Entered\n");
+
+	while (list_empty(&info->prov_list) == 0
+	       /*&&  !kthread_should_stop()  */ ) {
+		DEBUG("DSP Provisioning List Entry\n");
+
+		// Check if doorbell is available
+		DEBUG("check if doorbell is cleared\n");
+		status =
+		    ft1000_read_register(dev, &tempword, FT1000_REG_DOORBELL);
+		if (status) {
+			DEBUG("ft1000_dsp_prov::ft1000_read_register error\n");
+			break;
+		}
+
+		while (tempword & FT1000_DB_DPRAM_TX) {
+			mdelay(10);
+			i++;
+			if (i == 10) {
+				DEBUG("FT1000:ft1000_dsp_prov:message drop\n");
+				return STATUS_FAILURE;
+			}
+			ft1000_read_register(dev, &tempword,
+					     FT1000_REG_DOORBELL);
+		}
+
+		if (!(tempword & FT1000_DB_DPRAM_TX)) {
+			DEBUG("*** Provision Data Sent to DSP\n");
+
+			// Send provisioning data
+			ptr =
+			    list_entry(info->prov_list.next, PROV_RECORD, list);
+			len = *(u16 *) ptr->pprov_data;
+			len = htons(len);
+			len += PSEUDOSZ;
+			//len = htons(len);
+
+			pmsg = (PUSHORT) ptr->pprov_data;
+			ppseudo_hdr = (PPSEUDO_HDR) pmsg;
+			// Insert slow queue sequence number
+			ppseudo_hdr->seq_num = info->squeseqnum++;
+			ppseudo_hdr->portsrc = 0;
+			// Calculate new checksum
+			ppseudo_hdr->checksum = *pmsg++;
+			//DEBUG("checksum = 0x%x\n", ppseudo_hdr->checksum);
+			for (i = 1; i < 7; i++) {
+				ppseudo_hdr->checksum ^= *pmsg++;
+				//DEBUG("checksum = 0x%x\n", ppseudo_hdr->checksum);
+			}
+
+			TempShortBuf[0] = 0;
+			TempShortBuf[1] = htons(len);
+			memcpy(&TempShortBuf[2], ppseudo_hdr, len);
+
+			status =
+			    ft1000_write_dpram32(dev, 0,
+						 (PUCHAR) & TempShortBuf[0],
+						 (unsigned short)(len + 2));
+			status =
+			    ft1000_write_register(dev, FT1000_DB_DPRAM_TX,
+						  FT1000_REG_DOORBELL);
+
+			list_del(&ptr->list);
+			kfree(ptr->pprov_data);
+			kfree(ptr);
+		}
+		msleep(10);
+	}

-    DEBUG("DSP Provisioning List Entry finished\n");
+	DEBUG("DSP Provisioning List Entry finished\n");

-    msleep(100);
+	msleep(100);

-    info->fProvComplete = 1;
-    info->CardReady = 1;
-    info->DSP_loading= 0;
-    return STATUS_SUCCESS;
+	info->fProvComplete = 1;
+	info->CardReady = 1;
+	info->DSP_loading = 0;
+	return STATUS_SUCCESS;

 }

-
-int ft1000_proc_drvmsg (struct ft1000_device *dev, u16 size) {
-	FT1000_INFO *info = (FT1000_INFO *) netdev_priv (dev->net);
-    u16 msgtype;
-    u16 tempword;
-    PMEDIAMSG pmediamsg;
-    PDSPINITMSG pdspinitmsg;
-    PDRVMSG pdrvmsg;
-    u16 i;
-    PPSEUDO_HDR ppseudo_hdr;
-    PUSHORT pmsg;
-    u16 status;
-    //struct timeval tv; //mbelian
-    union {
-        u8  byte[2];
-        u16 wrd;
-    } convert;
-
-
-    char cmdbuffer[1600];
-
-    status = ft1000_read_dpram32(dev, 0x200, (PUCHAR)&cmdbuffer[0], size);
-
-
-    //if (ft1000_receive_cmd(dev, &cmdbuffer[0], MAX_CMD_SQSIZE, &tempword))
-    {
+int ft1000_proc_drvmsg(struct ft1000_device *dev, u16 size)
+{
+	FT1000_INFO *info = (FT1000_INFO *) netdev_priv(dev->net);
+	u16 msgtype;
+	u16 tempword;
+	PMEDIAMSG pmediamsg;
+	PDSPINITMSG pdspinitmsg;
+	PDRVMSG pdrvmsg;
+	u16 i;
+	PPSEUDO_HDR ppseudo_hdr;
+	PUSHORT pmsg;
+	u16 status;
+	//struct timeval tv; //mbelian
+	union {
+		u8 byte[2];
+		u16 wrd;
+	} convert;
+
+	char cmdbuffer[1600];
+
+	status = ft1000_read_dpram32(dev, 0x200, (PUCHAR) & cmdbuffer[0], size);
+
+	//if (ft1000_receive_cmd(dev, &cmdbuffer[0], MAX_CMD_SQSIZE, &tempword))
+	{

 #ifdef JDEBUG
-        DEBUG("ft1000_proc_drvmsg:cmdbuffer\n");
-        for(i = 0; i < size; i+=5)
-        {
-            if( (i + 5) < size )
-                DEBUG("0x%x, 0x%x, 0x%x, 0x%x, 0x%x\n", cmdbuffer[i],
cmdbuffer[i+1], cmdbuffer[i+2], cmdbuffer[i+3], cmdbuffer[i+4]);
-            else
-            {
-                for (j = i; j < size; j++)
-                DEBUG("0x%x ", cmdbuffer[j]);
-                DEBUG("\n");
-                break;
-            }
-        }
+		DEBUG("ft1000_proc_drvmsg:cmdbuffer\n");
+		for (i = 0; i < size; i += 5) {
+			if ((i + 5) < size)
+				DEBUG("0x%x, 0x%x, 0x%x, 0x%x, 0x%x\n",
+				      cmdbuffer[i], cmdbuffer[i + 1],
+				      cmdbuffer[i + 2], cmdbuffer[i + 3],
+				      cmdbuffer[i + 4]);
+			else {
+				for (j = i; j < size; j++)
+					DEBUG("0x%x ", cmdbuffer[j]);
+				DEBUG("\n");
+				break;
+			}
+		}
 #endif
-        pdrvmsg = (PDRVMSG)&cmdbuffer[2];
-        msgtype = ntohs(pdrvmsg->type);
-        DEBUG("ft1000_proc_drvmsg:Command message type = 0x%x\n", msgtype);
-        switch (msgtype) {
-            case MEDIA_STATE: {
-                DEBUG("ft1000_proc_drvmsg:Command message type = MEDIA_STATE");
-
-                pmediamsg = (PMEDIAMSG)&cmdbuffer[0];
-                if (info->ProgConStat != 0xFF) {
-                    if (pmediamsg->state) {
-                        DEBUG("Media is up\n");
-                        if (info->mediastate == 0) {
-                            if ( info->NetDevRegDone )
-                            {
-                                //netif_carrier_on(dev->net);//mbelian
-                                netif_wake_queue(dev->net);
-                            }
-                            info->mediastate = 1;
-                            /*do_gettimeofday(&tv);
-                            info->ConTm = tv.tv_sec;*/ //mbelian
-                        }
-                    }
-                    else {
-                        DEBUG("Media is down\n");
-                        if (info->mediastate == 1) {
-                            info->mediastate = 0;
-                            if ( info->NetDevRegDone )
-                            {
-                                //netif_carrier_off(dev->net); mbelian
-                                //netif_stop_queue(dev->net);
-                            }
-                            info->ConTm = 0;
-                        }
-                    }
-                }
-                else {
-                    DEBUG("Media is down\n");
-                    if (info->mediastate == 1) {
-                        info->mediastate = 0;
-                        if ( info->NetDevRegDone)
-                        {
-                            //netif_carrier_off(dev->net); //mbelian
-                            //netif_stop_queue(dev->net);
-                        }
-                        info->ConTm = 0;
-                    }
-                }
-                break;
-            }
-            case DSP_INIT_MSG: {
-                DEBUG("ft1000_proc_drvmsg:Command message type =
DSP_INIT_MSG");
-
-                pdspinitmsg = (PDSPINITMSG)&cmdbuffer[2];
-                memcpy(info->DspVer, pdspinitmsg->DspVer, DSPVERSZ);
-                DEBUG("DSPVER = 0x%2x 0x%2x 0x%2x 0x%2x\n",
info->DspVer[0], info->DspVer[1], info->DspVer[2], info->DspVer[3]);
-                memcpy(info->HwSerNum, pdspinitmsg->HwSerNum, HWSERNUMSZ);
-                memcpy(info->Sku, pdspinitmsg->Sku, SKUSZ);
-                memcpy(info->eui64, pdspinitmsg->eui64, EUISZ);
-                DEBUG("EUI64=%2x.%2x.%2x.%2x.%2x.%2x.%2x.%2x\n",
info->eui64[0],info->eui64[1], info->eui64[2], info->eui64[3],
info->eui64[4], info->eui64[5],info->eui64[6], info->eui64[7]);
-                dev->net->dev_addr[0] = info->eui64[0];
-                dev->net->dev_addr[1] = info->eui64[1];
-                dev->net->dev_addr[2] = info->eui64[2];
-                dev->net->dev_addr[3] = info->eui64[5];
-                dev->net->dev_addr[4] = info->eui64[6];
-                dev->net->dev_addr[5] = info->eui64[7];
-
-                if (ntohs(pdspinitmsg->length) == (sizeof(DSPINITMSG) - 20) ) {
-                    memcpy(info->ProductMode,
pdspinitmsg->ProductMode, MODESZ);
-                    memcpy(info->RfCalVer, pdspinitmsg->RfCalVer, CALVERSZ);
-                    memcpy(info->RfCalDate, pdspinitmsg->RfCalDate, CALDATESZ);
-                    DEBUG("RFCalVer = 0x%2x 0x%2x\n",
info->RfCalVer[0], info->RfCalVer[1]);
-                }
-                break;
-            }
-            case DSP_PROVISION: {
-                DEBUG("ft1000_proc_drvmsg:Command message type =
DSP_PROVISION\n");
-
-                // kick off dspprov routine to start provisioning
-                // Send provisioning data to DSP
-                if (list_empty(&info->prov_list) == 0)
-                {
-		    info->fProvComplete = 0;
-		    status = ft1000_dsp_prov(dev);
-		    if (status != STATUS_SUCCESS)
-		        return status;
-                }
-                else {
-                    info->fProvComplete = 1;
-                    status = ft1000_write_register (dev,
FT1000_DB_HB, FT1000_REG_DOORBELL);
-                    DEBUG("FT1000:drivermsg:No more DSP provisioning
data in dsp image\n");
-                }
-                DEBUG("ft1000_proc_drvmsg:DSP PROVISION is done\n");
-                break;
-            }
-            case DSP_STORE_INFO: {
-                DEBUG("ft1000_proc_drvmsg:Command message type =
DSP_STORE_INFO");
-
-                DEBUG("FT1000:drivermsg:Got DSP_STORE_INFO\n");
-                tempword = ntohs(pdrvmsg->length);
-                info->DSPInfoBlklen = tempword;
-                if (tempword < (MAX_DSP_SESS_REC-4) ) {
-                    pmsg = (PUSHORT)&pdrvmsg->data[0];
-                    for (i=0; i<((tempword+1)/2); i++) {
-                        DEBUG("FT1000:drivermsg:dsp info data =
0x%x\n", *pmsg);
-                        info->DSPInfoBlk[i+10] = *pmsg++;
-                    }
-                }
-                else {
-                    info->DSPInfoBlklen = 0;
-                }
-                break;
-            }
-            case DSP_GET_INFO: {
-                DEBUG("FT1000:drivermsg:Got DSP_GET_INFO\n");
-                // copy dsp info block to dsp
-                info->DrvMsgPend = 1;
-                // allow any outstanding ioctl to finish
-                mdelay(10);
-                status = ft1000_read_register(dev, &tempword,
FT1000_REG_DOORBELL);
-                if (tempword & FT1000_DB_DPRAM_TX) {
-                    mdelay(10);
-                    status = ft1000_read_register(dev, &tempword,
FT1000_REG_DOORBELL);
-                    if (tempword & FT1000_DB_DPRAM_TX) {
-                        mdelay(10);
-                            status = ft1000_read_register(dev,
&tempword, FT1000_REG_DOORBELL);
-                            if (tempword & FT1000_DB_DPRAM_TX) {
-                                break;
-                            }
-                    }
-                }
-
-                // Put message into Slow Queue
-                // Form Pseudo header
-                pmsg = (PUSHORT)info->DSPInfoBlk;
-                *pmsg++ = 0;
-                *pmsg++ = htons(info->DSPInfoBlklen+20+info->DSPInfoBlklen);
-                ppseudo_hdr = (PPSEUDO_HDR)(PUSHORT)&info->DSPInfoBlk[2];
-                ppseudo_hdr->length =
htons(info->DSPInfoBlklen+4+info->DSPInfoBlklen);
-                ppseudo_hdr->source = 0x10;
-                ppseudo_hdr->destination = 0x20;
-                ppseudo_hdr->portdest = 0;
-                ppseudo_hdr->portsrc = 0;
-                ppseudo_hdr->sh_str_id = 0;
-                ppseudo_hdr->control = 0;
-                ppseudo_hdr->rsvd1 = 0;
-                ppseudo_hdr->rsvd2 = 0;
-                ppseudo_hdr->qos_class = 0;
-                // Insert slow queue sequence number
-                ppseudo_hdr->seq_num = info->squeseqnum++;
-                // Insert application id
-                ppseudo_hdr->portsrc = 0;
-                // Calculate new checksum
-                ppseudo_hdr->checksum = *pmsg++;
-                for (i=1; i<7; i++) {
-                    ppseudo_hdr->checksum ^= *pmsg++;
-                }
-                info->DSPInfoBlk[10] = 0x7200;
-                info->DSPInfoBlk[11] = htons(info->DSPInfoBlklen);
-                status = ft1000_write_dpram32 (dev, 0,
(PUCHAR)&info->DSPInfoBlk[0], (unsigned
short)(info->DSPInfoBlklen+22));
-                status = ft1000_write_register (dev,
FT1000_DB_DPRAM_TX, FT1000_REG_DOORBELL);
-                info->DrvMsgPend = 0;
-
-                break;
-            }
-
-          case GET_DRV_ERR_RPT_MSG: {
-              DEBUG("FT1000:drivermsg:Got GET_DRV_ERR_RPT_MSG\n");
-              // copy driver error message to dsp
-              info->DrvMsgPend = 1;
-              // allow any outstanding ioctl to finish
-              mdelay(10);
-              status = ft1000_read_register(dev, &tempword,
FT1000_REG_DOORBELL);
-              if (tempword & FT1000_DB_DPRAM_TX) {
-                  mdelay(10);
-                  status = ft1000_read_register(dev, &tempword,
FT1000_REG_DOORBELL);
-                  if (tempword & FT1000_DB_DPRAM_TX) {
-                      mdelay(10);
-                  }
-              }
-
-              if ( (tempword & FT1000_DB_DPRAM_TX) == 0) {
-                  // Put message into Slow Queue
-                  // Form Pseudo header
-                  pmsg = (PUSHORT)&tempbuffer[0];
-                  ppseudo_hdr = (PPSEUDO_HDR)pmsg;
-                  ppseudo_hdr->length = htons(0x0012);
-                  ppseudo_hdr->source = 0x10;
-                  ppseudo_hdr->destination = 0x20;
-                  ppseudo_hdr->portdest = 0;
-                  ppseudo_hdr->portsrc = 0;
-                  ppseudo_hdr->sh_str_id = 0;
-                  ppseudo_hdr->control = 0;
-                  ppseudo_hdr->rsvd1 = 0;
-                  ppseudo_hdr->rsvd2 = 0;
-                  ppseudo_hdr->qos_class = 0;
-                  // Insert slow queue sequence number
-                  ppseudo_hdr->seq_num = info->squeseqnum++;
-                  // Insert application id
-                  ppseudo_hdr->portsrc = 0;
-                  // Calculate new checksum
-                  ppseudo_hdr->checksum = *pmsg++;
-                  for (i=1; i<7; i++) {
-                      ppseudo_hdr->checksum ^= *pmsg++;
-                  }
-                  pmsg = (PUSHORT)&tempbuffer[16];
-                  *pmsg++ = htons(RSP_DRV_ERR_RPT_MSG);
-                  *pmsg++ = htons(0x000e);
-                  *pmsg++ = htons(info->DSP_TIME[0]);
-                  *pmsg++ = htons(info->DSP_TIME[1]);
-                  *pmsg++ = htons(info->DSP_TIME[2]);
-                  *pmsg++ = htons(info->DSP_TIME[3]);
-                  convert.byte[0] = info->DspVer[0];
-                  convert.byte[1] = info->DspVer[1];
-                  *pmsg++ = convert.wrd;
-                  convert.byte[0] = info->DspVer[2];
-                  convert.byte[1] = info->DspVer[3];
-                  *pmsg++ = convert.wrd;
-                  *pmsg++ = htons(info->DrvErrNum);
-
-                  CardSendCommand (dev, (unsigned
char*)&tempbuffer[0], (USHORT)(0x0012 + PSEUDOSZ));
-                  info->DrvErrNum = 0;
-              }
-              info->DrvMsgPend = 0;
-
-          break;
-      }
-
-      default:
-          break;
-        }
+		pdrvmsg = (PDRVMSG) & cmdbuffer[2];
+		msgtype = ntohs(pdrvmsg->type);
+		DEBUG("ft1000_proc_drvmsg:Command message type = 0x%x\n",
+		      msgtype);
+		switch (msgtype) {
+		case MEDIA_STATE:{
+				DEBUG
+				    ("ft1000_proc_drvmsg:Command message type = MEDIA_STATE");
+
+				pmediamsg = (PMEDIAMSG) & cmdbuffer[0];
+				if (info->ProgConStat != 0xFF) {
+					if (pmediamsg->state) {
+						DEBUG("Media is up\n");
+						if (info->mediastate == 0) {
+							if (info->NetDevRegDone) {
+								//netif_carrier_on(dev->net);//mbelian
+								netif_wake_queue
+								    (dev->net);
+							}
+							info->mediastate = 1;
+							/*do_gettimeofday(&tv);
+							   info->ConTm = tv.tv_sec; *///mbelian
+						}
+					} else {
+						DEBUG("Media is down\n");
+						if (info->mediastate == 1) {
+							info->mediastate = 0;
+							if (info->NetDevRegDone) {
+								//netif_carrier_off(dev->net); mbelian
+								//netif_stop_queue(dev->net);
+							}
+							info->ConTm = 0;
+						}
+					}
+				} else {
+					DEBUG("Media is down\n");
+					if (info->mediastate == 1) {
+						info->mediastate = 0;
+						if (info->NetDevRegDone) {
+							//netif_carrier_off(dev->net); //mbelian
+							//netif_stop_queue(dev->net);
+						}
+						info->ConTm = 0;
+					}
+				}
+				break;
+			}
+		case DSP_INIT_MSG:{
+				DEBUG
+				    ("ft1000_proc_drvmsg:Command message type = DSP_INIT_MSG");
+
+				pdspinitmsg = (PDSPINITMSG) & cmdbuffer[2];
+				memcpy(info->DspVer, pdspinitmsg->DspVer,
+				       DSPVERSZ);
+				DEBUG("DSPVER = 0x%2x 0x%2x 0x%2x 0x%2x\n",
+				      info->DspVer[0], info->DspVer[1],
+				      info->DspVer[2], info->DspVer[3]);
+				memcpy(info->HwSerNum, pdspinitmsg->HwSerNum,
+				       HWSERNUMSZ);
+				memcpy(info->Sku, pdspinitmsg->Sku, SKUSZ);
+				memcpy(info->eui64, pdspinitmsg->eui64, EUISZ);
+				DEBUG("EUI64=%2x.%2x.%2x.%2x.%2x.%2x.%2x.%2x\n",
+				      info->eui64[0], info->eui64[1],
+				      info->eui64[2], info->eui64[3],
+				      info->eui64[4], info->eui64[5],
+				      info->eui64[6], info->eui64[7]);
+				dev->net->dev_addr[0] = info->eui64[0];
+				dev->net->dev_addr[1] = info->eui64[1];
+				dev->net->dev_addr[2] = info->eui64[2];
+				dev->net->dev_addr[3] = info->eui64[5];
+				dev->net->dev_addr[4] = info->eui64[6];
+				dev->net->dev_addr[5] = info->eui64[7];
+
+				if (ntohs(pdspinitmsg->length) ==
+				    (sizeof(DSPINITMSG) - 20)) {
+					memcpy(info->ProductMode,
+					       pdspinitmsg->ProductMode,
+					       MODESZ);
+					memcpy(info->RfCalVer,
+					       pdspinitmsg->RfCalVer, CALVERSZ);
+					memcpy(info->RfCalDate,
+					       pdspinitmsg->RfCalDate,
+					       CALDATESZ);
+					DEBUG("RFCalVer = 0x%2x 0x%2x\n",
+					      info->RfCalVer[0],
+					      info->RfCalVer[1]);
+				}
+				break;
+			}
+		case DSP_PROVISION:{
+				DEBUG
+				    ("ft1000_proc_drvmsg:Command message type = DSP_PROVISION\n");
+
+				// kick off dspprov routine to start provisioning
+				// Send provisioning data to DSP
+				if (list_empty(&info->prov_list) == 0) {
+					info->fProvComplete = 0;
+					status = ft1000_dsp_prov(dev);
+					if (status != STATUS_SUCCESS)
+						return status;
+				} else {
+					info->fProvComplete = 1;
+					status =
+					    ft1000_write_register(dev,
+								  FT1000_DB_HB,
+								  FT1000_REG_DOORBELL);
+					DEBUG
+					    ("FT1000:drivermsg:No more DSP provisioning data in dsp image\n");
+				}
+				DEBUG
+				    ("ft1000_proc_drvmsg:DSP PROVISION is done\n");
+				break;
+			}
+		case DSP_STORE_INFO:{
+				DEBUG
+				    ("ft1000_proc_drvmsg:Command message type = DSP_STORE_INFO");
+
+				DEBUG("FT1000:drivermsg:Got DSP_STORE_INFO\n");
+				tempword = ntohs(pdrvmsg->length);
+				info->DSPInfoBlklen = tempword;
+				if (tempword < (MAX_DSP_SESS_REC - 4)) {
+					pmsg = (PUSHORT) & pdrvmsg->data[0];
+					for (i = 0; i < ((tempword + 1) / 2);
+					     i++) {
+						DEBUG
+						    ("FT1000:drivermsg:dsp info data = 0x%x\n",
+						     *pmsg);
+						info->DSPInfoBlk[i + 10] =
+						    *pmsg++;
+					}
+				} else {
+					info->DSPInfoBlklen = 0;
+				}
+				break;
+			}
+		case DSP_GET_INFO:{
+				DEBUG("FT1000:drivermsg:Got DSP_GET_INFO\n");
+				// copy dsp info block to dsp
+				info->DrvMsgPend = 1;
+				// allow any outstanding ioctl to finish
+				mdelay(10);
+				status =
+				    ft1000_read_register(dev, &tempword,
+							 FT1000_REG_DOORBELL);
+				if (tempword & FT1000_DB_DPRAM_TX) {
+					mdelay(10);
+					status =
+					    ft1000_read_register(dev, &tempword,
+								 FT1000_REG_DOORBELL);
+					if (tempword & FT1000_DB_DPRAM_TX) {
+						mdelay(10);
+						status =
+						    ft1000_read_register(dev,
+									 &tempword,
+									 FT1000_REG_DOORBELL);
+						if (tempword &
+						    FT1000_DB_DPRAM_TX) {
+							break;
+						}
+					}
+				}
+				// Put message into Slow Queue
+				// Form Pseudo header
+				pmsg = (PUSHORT) info->DSPInfoBlk;
+				*pmsg++ = 0;
+				*pmsg++ =
+				    htons(info->DSPInfoBlklen + 20 +
+					  info->DSPInfoBlklen);
+				ppseudo_hdr =
+				    (PPSEUDO_HDR) (PUSHORT) & info->
+				    DSPInfoBlk[2];
+				ppseudo_hdr->length =
+				    htons(info->DSPInfoBlklen + 4 +
+					  info->DSPInfoBlklen);
+				ppseudo_hdr->source = 0x10;
+				ppseudo_hdr->destination = 0x20;
+				ppseudo_hdr->portdest = 0;
+				ppseudo_hdr->portsrc = 0;
+				ppseudo_hdr->sh_str_id = 0;
+				ppseudo_hdr->control = 0;
+				ppseudo_hdr->rsvd1 = 0;
+				ppseudo_hdr->rsvd2 = 0;
+				ppseudo_hdr->qos_class = 0;
+				// Insert slow queue sequence number
+				ppseudo_hdr->seq_num = info->squeseqnum++;
+				// Insert application id
+				ppseudo_hdr->portsrc = 0;
+				// Calculate new checksum
+				ppseudo_hdr->checksum = *pmsg++;
+				for (i = 1; i < 7; i++) {
+					ppseudo_hdr->checksum ^= *pmsg++;
+				}
+				info->DSPInfoBlk[10] = 0x7200;
+				info->DSPInfoBlk[11] =
+				    htons(info->DSPInfoBlklen);
+				status =
+				    ft1000_write_dpram32(dev, 0,
+							 (PUCHAR) & info->
+							 DSPInfoBlk[0],
+							 (unsigned short)(info->
+									  DSPInfoBlklen
+									  +
+									  22));
+				status =
+				    ft1000_write_register(dev,
+							  FT1000_DB_DPRAM_TX,
+							  FT1000_REG_DOORBELL);
+				info->DrvMsgPend = 0;
+
+				break;
+			}
+
+		case GET_DRV_ERR_RPT_MSG:{
+				DEBUG
+				    ("FT1000:drivermsg:Got GET_DRV_ERR_RPT_MSG\n");
+				// copy driver error message to dsp
+				info->DrvMsgPend = 1;
+				// allow any outstanding ioctl to finish
+				mdelay(10);
+				status =
+				    ft1000_read_register(dev, &tempword,
+							 FT1000_REG_DOORBELL);
+				if (tempword & FT1000_DB_DPRAM_TX) {
+					mdelay(10);
+					status =
+					    ft1000_read_register(dev, &tempword,
+								 FT1000_REG_DOORBELL);
+					if (tempword & FT1000_DB_DPRAM_TX) {
+						mdelay(10);
+					}
+				}
+
+				if ((tempword & FT1000_DB_DPRAM_TX) == 0) {
+					// Put message into Slow Queue
+					// Form Pseudo header
+					pmsg = (PUSHORT) & tempbuffer[0];
+					ppseudo_hdr = (PPSEUDO_HDR) pmsg;
+					ppseudo_hdr->length = htons(0x0012);
+					ppseudo_hdr->source = 0x10;
+					ppseudo_hdr->destination = 0x20;
+					ppseudo_hdr->portdest = 0;
+					ppseudo_hdr->portsrc = 0;
+					ppseudo_hdr->sh_str_id = 0;
+					ppseudo_hdr->control = 0;
+					ppseudo_hdr->rsvd1 = 0;
+					ppseudo_hdr->rsvd2 = 0;
+					ppseudo_hdr->qos_class = 0;
+					// Insert slow queue sequence number
+					ppseudo_hdr->seq_num =
+					    info->squeseqnum++;
+					// Insert application id
+					ppseudo_hdr->portsrc = 0;
+					// Calculate new checksum
+					ppseudo_hdr->checksum = *pmsg++;
+					for (i = 1; i < 7; i++) {
+						ppseudo_hdr->checksum ^=
+						    *pmsg++;
+					}
+					pmsg = (PUSHORT) & tempbuffer[16];
+					*pmsg++ = htons(RSP_DRV_ERR_RPT_MSG);
+					*pmsg++ = htons(0x000e);
+					*pmsg++ = htons(info->DSP_TIME[0]);
+					*pmsg++ = htons(info->DSP_TIME[1]);
+					*pmsg++ = htons(info->DSP_TIME[2]);
+					*pmsg++ = htons(info->DSP_TIME[3]);
+					convert.byte[0] = info->DspVer[0];
+					convert.byte[1] = info->DspVer[1];
+					*pmsg++ = convert.wrd;
+					convert.byte[0] = info->DspVer[2];
+					convert.byte[1] = info->DspVer[3];
+					*pmsg++ = convert.wrd;
+					*pmsg++ = htons(info->DrvErrNum);
+
+					CardSendCommand(dev,
+							(unsigned char *)
+							&tempbuffer[0],
+							(USHORT) (0x0012 +
+								  PSEUDOSZ));
+					info->DrvErrNum = 0;
+				}
+				info->DrvMsgPend = 0;
+
+				break;
+			}
+
+		default:
+			break;
+		}

-    }
+	}

-    DEBUG("return from ft1000_proc_drvmsg\n");
-    return STATUS_SUCCESS;
+	DEBUG("return from ft1000_proc_drvmsg\n");
+	return STATUS_SUCCESS;
 }

+int ft1000_poll(void *dev_id)
+{

+	//FT1000_INFO *info = (PFT1000_INFO)((struct net_device *)dev_id)->priv;
+	//struct ft1000_device *dev = (struct ft1000_device *)info->pFt1000Dev;
+	struct ft1000_device *dev = (struct ft1000_device *)dev_id;
+	FT1000_INFO *info = (FT1000_INFO *) netdev_priv(dev->net);
+
+	u16 tempword;
+	u16 status;
+	u16 size;
+	int i;
+	USHORT data;
+	USHORT modulo;
+	USHORT portid;
+	u16 nxtph;
+	PDPRAM_BLK pdpram_blk;
+	PPSEUDO_HDR ppseudo_hdr;
+	unsigned long flags;
+
+	//DEBUG("Enter ft1000_poll...\n");
+	if (ft1000_chkcard(dev) == FALSE) {
+		DEBUG("ft1000_poll::ft1000_chkcard: failed\n");
+		return STATUS_FAILURE;
+	}

-int ft1000_poll(void* dev_id) {
-
-    //FT1000_INFO *info = (PFT1000_INFO)((struct net_device *)dev_id)->priv;
-    //struct ft1000_device *dev = (struct ft1000_device *)info->pFt1000Dev;
-    struct ft1000_device *dev = (struct ft1000_device *)dev_id;
-	FT1000_INFO *info = (FT1000_INFO *) netdev_priv (dev->net);
-
-    u16 tempword;
-    u16 status;
-    u16 size;
-    int i;
-    USHORT data;
-    USHORT modulo;
-    USHORT portid;
-    u16 nxtph;
-    PDPRAM_BLK pdpram_blk;
-    PPSEUDO_HDR ppseudo_hdr;
-    unsigned long flags;
-
-    //DEBUG("Enter ft1000_poll...\n");
-    if (ft1000_chkcard(dev) == FALSE) {
-        DEBUG("ft1000_poll::ft1000_chkcard: failed\n");
-        return STATUS_FAILURE;
-    }
-
-    status = ft1000_read_register (dev, &tempword, FT1000_REG_DOORBELL);
-   // DEBUG("ft1000_poll: read FT1000_REG_DOORBELL message 0x%x\n", tempword);
-
-    //while ( (tempword) && (!status) ) {
-    if ( !status )
-    {
-
-        if (tempword & FT1000_DB_DPRAM_RX) {
-            //DEBUG("ft1000_poll: FT1000_REG_DOORBELL message type:
FT1000_DB_DPRAM_RX\n");
-
-            status = ft1000_read_dpram16(dev, 0x200, (PUCHAR)&data, 0);
-            //DEBUG("ft1000_poll:FT1000_DB_DPRAM_RX:ft1000_read_dpram16:size
= 0x%x\n", data);
-            size = ntohs(data) + 16 + 2; //wai
-            if (size % 4) {
-                modulo = 4 - (size % 4);
-                size = size + modulo;
-            }
-            status = ft1000_read_dpram16(dev, 0x201, (PUCHAR)&portid, 1);
-            portid &= 0xff;
-            //DEBUG("ft1000_poll: FT1000_REG_DOORBELL message type:
FT1000_DB_DPRAM_RX : portid 0x%x\n", portid);
-
-            if (size < MAX_CMD_SQSIZE) {
-                switch (portid)
-                {
-                    case DRIVERID:
-                        DEBUG("ft1000_poll: FT1000_REG_DOORBELL
message type: FT1000_DB_DPRAM_RX : portid DRIVERID\n");
-
-                        status = ft1000_proc_drvmsg (dev, size);
-                        if (status != STATUS_SUCCESS )
-                            return status;
-                        break;
-                    case DSPBCMSGID:
-                        // This is a dsp broadcast message
-                        // Check which application has registered for
dsp broadcast messages
-                        //DEBUG("ft1000_poll: FT1000_REG_DOORBELL
message type: FT1000_DB_DPRAM_RX : portid DSPBCMSGID\n");
-
-    	    	        for (i=0; i<MAX_NUM_APP; i++) {
-        	           if ( (info->app_info[i].DspBCMsgFlag) &&
(info->app_info[i].fileobject) &&
-                                         (info->app_info[i].NumOfMsg
< MAX_MSG_LIMIT)  )
-			   {
-			       //DEBUG("Dsp broadcast message detected for app id %d\n", i);
-			       nxtph = FT1000_DPRAM_RX_BASE + 2;
-			       pdpram_blk = ft1000_get_buffer (&freercvpool);
-			       if (pdpram_blk != NULL) {
-			           if ( ft1000_receive_cmd(dev, pdpram_blk->pbuffer,
MAX_CMD_SQSIZE, &nxtph) ) {
-				       ppseudo_hdr = (PPSEUDO_HDR)pdpram_blk->pbuffer;
-				       // Put message into the appropriate application block
-				       info->app_info[i].nRxMsg++;
-				       spin_lock_irqsave(&free_buff_lock, flags);
-				       list_add_tail(&pdpram_blk->list, &info->app_info[i].app_sqlist);
-				       info->app_info[i].NumOfMsg++;
-				       spin_unlock_irqrestore(&free_buff_lock, flags);
-				       wake_up_interruptible(&info->app_info[i].wait_dpram_msg);
-                                   }
-                                   else {
-				       info->app_info[i].nRxMsgMiss++;
-				       // Put memory back to free pool
-				       ft1000_free_buffer(pdpram_blk, &freercvpool);
-				       DEBUG("pdpram_blk::ft1000_get_buffer NULL\n");
-                                   }
-                               }
-                               else {
-                                   DEBUG("Out of memory in free
receive command pool\n");
-                                   info->app_info[i].nRxMsgMiss++;
-                               }//endof if (pdpram_blk != NULL)
-                           }//endof if
-    		           //else
-    		           //    DEBUG("app_info mismatch\n");
-	                }// endof for
-                        break;
-                    default:
-                        pdpram_blk = ft1000_get_buffer (&freercvpool);
-                        //DEBUG("Memory allocated = 0x%8x\n", (u32)pdpram_blk);
-                        if (pdpram_blk != NULL) {
-                           if ( ft1000_receive_cmd(dev,
pdpram_blk->pbuffer, MAX_CMD_SQSIZE, &nxtph) ) {
-                               ppseudo_hdr = (PPSEUDO_HDR)pdpram_blk->pbuffer;
-                               // Search for correct application block
-                               for (i=0; i<MAX_NUM_APP; i++) {
-                                   if (info->app_info[i].app_id ==
ppseudo_hdr->portdest) {
-                                       break;
-                                   }
-                               }
-
-                               if (i==(MAX_NUM_APP-1)) {		// aelias
[+] reason: was out of array boundary
-                                   info->app_info[i].nRxMsgMiss++;
-
DEBUG("FT1000:ft1000_parse_dpram_msg: No application matching id =
%d\n", ppseudo_hdr->portdest);
-                                   // Put memory back to free pool
-                                   ft1000_free_buffer(pdpram_blk,
&freercvpool);
-                               }
-                               else {
-                                   if (info->app_info[i].NumOfMsg >
MAX_MSG_LIMIT) {
-	                               // Put memory back to free pool
-	                               ft1000_free_buffer(pdpram_blk, &freercvpool);
-                                   }
-                                   else {
-                                       info->app_info[i].nRxMsg++;
-                                       // Put message into the
appropriate application block
-                                       //pxu
spin_lock_irqsave(&free_buff_lock, flags);
-
list_add_tail(&pdpram_blk->list, &info->app_info[i].app_sqlist);
-            			       info->app_info[i].NumOfMsg++;
-                                       //pxu
spin_unlock_irqrestore(&free_buff_lock, flags);
-                                       //pxu
wake_up_interruptible(&info->app_info[i].wait_dpram_msg);
-                                   }
-                               }
-                           }
-                           else {
-                               // Put memory back to free pool
-                               ft1000_free_buffer(pdpram_blk, &freercvpool);
-                           }
-                        }
-                        else {
-                            DEBUG("Out of memory in free receive
command pool\n");
-                        }
-                        break;
-                } //end of switch
-            } //endof if (size < MAX_CMD_SQSIZE)
-            else {
-                DEBUG("FT1000:dpc:Invalid total length for SlowQ =
%d\n", size);
-            }
-            status = ft1000_write_register (dev, FT1000_DB_DPRAM_RX,
FT1000_REG_DOORBELL);
-        }
-        else if (tempword & FT1000_DSP_ASIC_RESET) {
-            //DEBUG("ft1000_poll: FT1000_REG_DOORBELL message type:
FT1000_DSP_ASIC_RESET\n");
-
-            // Let's reset the ASIC from the Host side as well
-            status = ft1000_write_register (dev, ASIC_RESET_BIT,
FT1000_REG_RESET);
-            status = ft1000_read_register (dev, &tempword, FT1000_REG_RESET);
-            i = 0;
-            while (tempword & ASIC_RESET_BIT) {
-                status = ft1000_read_register (dev, &tempword,
FT1000_REG_RESET);
-                msleep(10);
-                i++;
-                if (i==100)
-                    break;
-            }
-            if (i==100) {
-                DEBUG("Unable to reset ASIC\n");
-                return STATUS_SUCCESS;
-            }
-            msleep(10);
-            // Program WMARK register
-            status = ft1000_write_register (dev, 0x600,
FT1000_REG_MAG_WATERMARK);
-            // clear ASIC reset doorbell
-            status = ft1000_write_register (dev,
FT1000_DSP_ASIC_RESET, FT1000_REG_DOORBELL);
-            msleep(10);
-        }
-        else if (tempword & FT1000_ASIC_RESET_REQ) {
-            DEBUG("ft1000_poll: FT1000_REG_DOORBELL message type:
FT1000_ASIC_RESET_REQ\n");
-
-            // clear ASIC reset request from DSP
-            status = ft1000_write_register (dev,
FT1000_ASIC_RESET_REQ, FT1000_REG_DOORBELL);
-            status = ft1000_write_register (dev, HOST_INTF_BE,
FT1000_REG_SUP_CTRL);
-            // copy dsp session record from Adapter block
-            status = ft1000_write_dpram32 (dev, 0,
(PUCHAR)&info->DSPSess.Rec[0], 1024);
-            // Program WMARK register
-            status = ft1000_write_register (dev, 0x600,
FT1000_REG_MAG_WATERMARK);
-            // ring doorbell to tell DSP that ASIC is out of reset
-            status = ft1000_write_register (dev,
FT1000_ASIC_RESET_DSP, FT1000_REG_DOORBELL);
-        }
-        else if (tempword & FT1000_DB_COND_RESET) {
-            DEBUG("ft1000_poll: FT1000_REG_DOORBELL message type:
FT1000_DB_COND_RESET\n");
+	status = ft1000_read_register(dev, &tempword, FT1000_REG_DOORBELL);
+	// DEBUG("ft1000_poll: read FT1000_REG_DOORBELL message 0x%x\n", tempword);
+
+	//while ( (tempword) && (!status) ) {
+	if (!status) {
+
+		if (tempword & FT1000_DB_DPRAM_RX) {
+			//DEBUG("ft1000_poll: FT1000_REG_DOORBELL message type:
FT1000_DB_DPRAM_RX\n");
+
+			status =
+			    ft1000_read_dpram16(dev, 0x200, (PUCHAR) & data, 0);
+			//DEBUG("ft1000_poll:FT1000_DB_DPRAM_RX:ft1000_read_dpram16:size =
0x%x\n", data);
+			size = ntohs(data) + 16 + 2;	//wai
+			if (size % 4) {
+				modulo = 4 - (size % 4);
+				size = size + modulo;
+			}
+			status =
+			    ft1000_read_dpram16(dev, 0x201, (PUCHAR) & portid,
+						1);
+			portid &= 0xff;
+			//DEBUG("ft1000_poll: FT1000_REG_DOORBELL message type:
FT1000_DB_DPRAM_RX : portid 0x%x\n", portid);
+
+			if (size < MAX_CMD_SQSIZE) {
+				switch (portid) {
+				case DRIVERID:
+					DEBUG
+					    ("ft1000_poll: FT1000_REG_DOORBELL message type:
FT1000_DB_DPRAM_RX : portid DRIVERID\n");
+
+					status = ft1000_proc_drvmsg(dev, size);
+					if (status != STATUS_SUCCESS)
+						return status;
+					break;
+				case DSPBCMSGID:
+					// This is a dsp broadcast message
+					// Check which application has registered for dsp broadcast messages
+					//DEBUG("ft1000_poll: FT1000_REG_DOORBELL message type:
FT1000_DB_DPRAM_RX : portid DSPBCMSGID\n");
+
+					for (i = 0; i < MAX_NUM_APP; i++) {
+						if ((info->app_info[i].
+						     DspBCMsgFlag)
+						    && (info->app_info[i].
+							fileobject)
+						    && (info->app_info[i].
+							NumOfMsg <
+							MAX_MSG_LIMIT)) {
+							//DEBUG("Dsp broadcast message detected for app id %d\n", i);
+							nxtph =
+							    FT1000_DPRAM_RX_BASE
+							    + 2;
+							pdpram_blk =
+							    ft1000_get_buffer
+							    (&freercvpool);
+							if (pdpram_blk != NULL) {
+								if (ft1000_receive_cmd(dev, pdpram_blk->pbuffer,
MAX_CMD_SQSIZE, &nxtph)) {
+									ppseudo_hdr
+									    =
+									    (PPSEUDO_HDR)
+									    pdpram_blk->
+									    pbuffer;
+									// Put message into the appropriate application block
+									info->
+									    app_info
+									    [i].
+									    nRxMsg++;
+									spin_lock_irqsave
+									    (&free_buff_lock,
+									     flags);
+									list_add_tail
+									    (&pdpram_blk->
+									     list,
+									     &info->
+									     app_info
+									     [i].
+									     app_sqlist);
+									info->
+									    app_info
+									    [i].
+									    NumOfMsg++;
+									spin_unlock_irqrestore
+									    (&free_buff_lock,
+									     flags);
+									wake_up_interruptible
+									    (&info->
+									     app_info
+									     [i].
+									     wait_dpram_msg);
+								} else {
+									info->
+									    app_info
+									    [i].
+									    nRxMsgMiss++;
+									// Put memory back to free pool
+									ft1000_free_buffer
+									    (pdpram_blk,
+									     &freercvpool);
+									DEBUG
+									    ("pdpram_blk::ft1000_get_buffer NULL\n");
+								}
+							} else {
+								DEBUG
+								    ("Out of memory in free receive command pool\n");
+								info->
+								    app_info[i].
+								    nRxMsgMiss++;
+							}	//endof if (pdpram_blk != NULL)
+						}	//endof if
+						//else
+						//    DEBUG("app_info mismatch\n");
+					}	// endof for
+					break;
+				default:
+					pdpram_blk =
+					    ft1000_get_buffer(&freercvpool);
+					//DEBUG("Memory allocated = 0x%8x\n", (u32)pdpram_blk);
+					if (pdpram_blk != NULL) {
+						if (ft1000_receive_cmd
+						    (dev, pdpram_blk->pbuffer,
+						     MAX_CMD_SQSIZE, &nxtph)) {
+							ppseudo_hdr =
+							    (PPSEUDO_HDR)
+							    pdpram_blk->pbuffer;
+							// Search for correct application block
+							for (i = 0;
+							     i < MAX_NUM_APP;
+							     i++) {
+								if (info->
+								    app_info[i].
+								    app_id ==
+								    ppseudo_hdr->
+								    portdest) {
+									break;
+								}
+							}
+
+							if (i == (MAX_NUM_APP - 1)) {	// aelias [+] reason: was out of
array boundary
+								info->
+								    app_info[i].
+								    nRxMsgMiss++;
+								DEBUG
+								    ("FT1000:ft1000_parse_dpram_msg: No application matching
id = %d\n",
+								     ppseudo_hdr->
+								     portdest);
+								// Put memory back to free pool
+								ft1000_free_buffer
+								    (pdpram_blk,
+								     &freercvpool);
+							} else {
+								if (info->
+								    app_info[i].
+								    NumOfMsg >
+								    MAX_MSG_LIMIT)
+								{
+									// Put memory back to free pool
+									ft1000_free_buffer
+									    (pdpram_blk,
+									     &freercvpool);
+								} else {
+									info->
+									    app_info
+									    [i].
+									    nRxMsg++;
+									// Put message into the appropriate application block
+									//pxu spin_lock_irqsave(&free_buff_lock, flags);
+									list_add_tail
+									    (&pdpram_blk->
+									     list,
+									     &info->
+									     app_info
+									     [i].
+									     app_sqlist);
+									info->
+									    app_info
+									    [i].
+									    NumOfMsg++;
+									//pxu spin_unlock_irqrestore(&free_buff_lock, flags);
+									//pxu wake_up_interruptible(&info->app_info[i].wait_dpram_msg);
+								}
+							}
+						} else {
+							// Put memory back to free pool
+							ft1000_free_buffer
+							    (pdpram_blk,
+							     &freercvpool);
+						}
+					} else {
+						DEBUG
+						    ("Out of memory in free receive command pool\n");
+					}
+					break;
+				}	//end of switch
+			}	//endof if (size < MAX_CMD_SQSIZE)
+			else {
+				DEBUG
+				    ("FT1000:dpc:Invalid total length for SlowQ = %d\n",
+				     size);
+			}
+			status =
+			    ft1000_write_register(dev, FT1000_DB_DPRAM_RX,
+						  FT1000_REG_DOORBELL);
+		} else if (tempword & FT1000_DSP_ASIC_RESET) {
+			//DEBUG("ft1000_poll: FT1000_REG_DOORBELL message type:
FT1000_DSP_ASIC_RESET\n");
+
+			// Let's reset the ASIC from the Host side as well
+			status =
+			    ft1000_write_register(dev, ASIC_RESET_BIT,
+						  FT1000_REG_RESET);
+			status =
+			    ft1000_read_register(dev, &tempword,
+						 FT1000_REG_RESET);
+			i = 0;
+			while (tempword & ASIC_RESET_BIT) {
+				status =
+				    ft1000_read_register(dev, &tempword,
+							 FT1000_REG_RESET);
+				msleep(10);
+				i++;
+				if (i == 100)
+					break;
+			}
+			if (i == 100) {
+				DEBUG("Unable to reset ASIC\n");
+				return STATUS_SUCCESS;
+			}
+			msleep(10);
+			// Program WMARK register
+			status =
+			    ft1000_write_register(dev, 0x600,
+						  FT1000_REG_MAG_WATERMARK);
+			// clear ASIC reset doorbell
+			status =
+			    ft1000_write_register(dev, FT1000_DSP_ASIC_RESET,
+						  FT1000_REG_DOORBELL);
+			msleep(10);
+		} else if (tempword & FT1000_ASIC_RESET_REQ) {
+			DEBUG
+			    ("ft1000_poll: FT1000_REG_DOORBELL message type:
FT1000_ASIC_RESET_REQ\n");
+
+			// clear ASIC reset request from DSP
+			status =
+			    ft1000_write_register(dev, FT1000_ASIC_RESET_REQ,
+						  FT1000_REG_DOORBELL);
+			status =
+			    ft1000_write_register(dev, HOST_INTF_BE,
+						  FT1000_REG_SUP_CTRL);
+			// copy dsp session record from Adapter block
+			status =
+			    ft1000_write_dpram32(dev, 0,
+						 (PUCHAR) & info->DSPSess.
+						 Rec[0], 1024);
+			// Program WMARK register
+			status =
+			    ft1000_write_register(dev, 0x600,
+						  FT1000_REG_MAG_WATERMARK);
+			// ring doorbell to tell DSP that ASIC is out of reset
+			status =
+			    ft1000_write_register(dev, FT1000_ASIC_RESET_DSP,
+						  FT1000_REG_DOORBELL);
+		} else if (tempword & FT1000_DB_COND_RESET) {
+			DEBUG
+			    ("ft1000_poll: FT1000_REG_DOORBELL message type:
FT1000_DB_COND_RESET\n");
 //By Jim
 // Reset ASIC and DSP
 //MAG
-            if (info->fAppMsgPend == 0) {
-               // Reset ASIC and DSP
-
-                status    = ft1000_read_dpram16(dev,
FT1000_MAG_DSP_TIMER0, (PUCHAR)&(info->DSP_TIME[0]),
FT1000_MAG_DSP_TIMER0_INDX);
-                status    = ft1000_read_dpram16(dev,
FT1000_MAG_DSP_TIMER1, (PUCHAR)&(info->DSP_TIME[1]),
FT1000_MAG_DSP_TIMER1_INDX);
-                status    = ft1000_read_dpram16(dev,
FT1000_MAG_DSP_TIMER2, (PUCHAR)&(info->DSP_TIME[2]),
FT1000_MAG_DSP_TIMER2_INDX);
-                status    = ft1000_read_dpram16(dev,
FT1000_MAG_DSP_TIMER3, (PUCHAR)&(info->DSP_TIME[3]),
FT1000_MAG_DSP_TIMER3_INDX);
-                info->CardReady = 0;
-                info->DrvErrNum = DSP_CONDRESET_INFO;
-                DEBUG("ft1000_hw:DSP conditional reset requested\n");
-                info->ft1000_reset(dev->net);
-            }
-            else {
-                info->fProvComplete = 0;
-                info->fCondResetPend = 1;
-            }
-
-            ft1000_write_register(dev, FT1000_DB_COND_RESET,
FT1000_REG_DOORBELL);
-        }
-
-    }//endof if ( !status )
-
-    //DEBUG("return from ft1000_poll.\n");
-    return STATUS_SUCCESS;
+			if (info->fAppMsgPend == 0) {
+				// Reset ASIC and DSP
+
+				status =
+				    ft1000_read_dpram16(dev,
+							FT1000_MAG_DSP_TIMER0,
+							(PUCHAR) & (info->
+								    DSP_TIME
+								    [0]),
+							FT1000_MAG_DSP_TIMER0_INDX);
+				status =
+				    ft1000_read_dpram16(dev,
+							FT1000_MAG_DSP_TIMER1,
+							(PUCHAR) & (info->
+								    DSP_TIME
+								    [1]),
+							FT1000_MAG_DSP_TIMER1_INDX);
+				status =
+				    ft1000_read_dpram16(dev,
+							FT1000_MAG_DSP_TIMER2,
+							(PUCHAR) & (info->
+								    DSP_TIME
+								    [2]),
+							FT1000_MAG_DSP_TIMER2_INDX);
+				status =
+				    ft1000_read_dpram16(dev,
+							FT1000_MAG_DSP_TIMER3,
+							(PUCHAR) & (info->
+								    DSP_TIME
+								    [3]),
+							FT1000_MAG_DSP_TIMER3_INDX);
+				info->CardReady = 0;
+				info->DrvErrNum = DSP_CONDRESET_INFO;
+				DEBUG
+				    ("ft1000_hw:DSP conditional reset requested\n");
+				info->ft1000_reset(dev->net);
+			} else {
+				info->fProvComplete = 0;
+				info->fCondResetPend = 1;
+			}
+
+			ft1000_write_register(dev, FT1000_DB_COND_RESET,
+					      FT1000_REG_DOORBELL);
+		}
+
+	}			//endof if ( !status )
+
+	//DEBUG("return from ft1000_poll.\n");
+	return STATUS_SUCCESS;

 }

diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_hw.h
b/drivers/staging/ft1000/ft1000-usb/ft1000_hw.h
index c580741..8382167 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_hw.h
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_hw.h
@@ -4,7 +4,9 @@

 #include "ft1000_usb.h"

-extern u16 ft1000_read_register(struct usb_device *dev, PUSHORT Data,
u8 nRegIndx);
-extern u16 ft1000_write_register(struct usb_device *dev, USHORT
value, u8 nRegIndx);
+extern u16 ft1000_read_register(struct usb_device *dev, PUSHORT Data,
+				u8 nRegIndx);
+extern u16 ft1000_write_register(struct usb_device *dev, USHORT value,
+				 u8 nRegIndx);

 #endif
diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_ioctl.h
b/drivers/staging/ft1000/ft1000-usb/ft1000_ioctl.h
index e7d3ec8..a1cb4aa 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_ioctl.h
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_ioctl.h
@@ -36,84 +36,79 @@
 #define MAX_DNLD_BLKSZ          1024

 // Standard Flarion Pseudo header
-typedef struct _PSEUDO_HDR
-{
-   unsigned short    length;           //length of msg body
-   unsigned char     source;           //source address (0x10=Host 0x20=DSP)
-   unsigned char     destination;      //destination address (refer
to source address)
-   unsigned char     portdest;         //destination port id
-                                       //    0x00=Driver
-                                       //    0x10=Application Broadcast
-                                       //    0x20=Network Stack
-                                       //    0x80=Dsp OAM
-                                       //    0x90=Dsp Airlink
-                                       //    0xa0=Dsp Loader
-                                       //    0xb0=Dsp MIP
-   unsigned char     portsrc;          //source port id (refer to portdest)
-   unsigned short    sh_str_id;        //stream id (Not applicable on Mobile)
-   unsigned char     control;          //stream id (Not applicable on Mobile)
-   unsigned char     rsvd1;            //reserved
-   unsigned char     seq_num;          //sequence number
-   unsigned char     rsvd2;            //reserved
-   unsigned short    qos_class;        //Quality of Service class
(Not applicable on Mobile)
-   unsigned short    checksum;         //Psuedo header checksum
+typedef struct _PSEUDO_HDR {
+	unsigned short length;	//length of msg body
+	unsigned char source;	//source address (0x10=Host 0x20=DSP)
+	unsigned char destination;	//destination address (refer to source address)
+	unsigned char portdest;	//destination port id
+	//    0x00=Driver
+	//    0x10=Application Broadcast
+	//    0x20=Network Stack
+	//    0x80=Dsp OAM
+	//    0x90=Dsp Airlink
+	//    0xa0=Dsp Loader
+	//    0xb0=Dsp MIP
+	unsigned char portsrc;	//source port id (refer to portdest)
+	unsigned short sh_str_id;	//stream id (Not applicable on Mobile)
+	unsigned char control;	//stream id (Not applicable on Mobile)
+	unsigned char rsvd1;	//reserved
+	unsigned char seq_num;	//sequence number
+	unsigned char rsvd2;	//reserved
+	unsigned short qos_class;	//Quality of Service class (Not applicable
on Mobile)
+	unsigned short checksum;	//Psuedo header checksum
 } __attribute__ ((packed)) PSEUDO_HDR, *PPSEUDO_HDR;

-typedef struct _IOCTL_GET_VER
-{
-    unsigned long drv_ver;
+typedef struct _IOCTL_GET_VER {
+	unsigned long drv_ver;
 } __attribute__ ((packed)) IOCTL_GET_VER, *PIOCTL_GET_VER;

 //Data structure for Dsp statistics
-typedef struct _IOCTL_GET_DSP_STAT
-{
-    unsigned char DspVer[DSPVERSZ];        // DSP version number
-    unsigned char HwSerNum[HWSERNUMSZ];    // Hardware Serial Number
-    unsigned char Sku[SKUSZ];              // SKU
-    unsigned char eui64[EUISZ];            // EUI64
-    unsigned short ConStat;                // Connection Status
-                                //    Bits 0-3 = Connection Status Field
-                                //               0000=Idle (Disconnect)
-                                //               0001=Searching
-                                //               0010=Active (Connected)
-                                //               0011=Waiting for L2 down
-                                //               0100=Sleep
-    unsigned short LedStat;                // Led Status
-                                //    Bits 0-3   = Signal Strength Field
-                                //                 0000 = -105dBm to -92dBm
-                                //                 0001 = -92dBm to -85dBm
-                                //                 0011 = -85dBm to -75dBm
-                                //                 0111 = -75dBm to -50dBm
-                                //                 1111 = -50dBm to 0dBm
-                                //    Bits 4-7   = Reserved
-                                //    Bits 8-11  = SNR Field
-                                //                 0000 = <2dB
-                                //                 0001 = 2dB to 8dB
-                                //                 0011 = 8dB to 15dB
-                                //                 0111 = 15dB to 22dB
-                                //                 1111 = >22dB
-                                //    Bits 12-15 = Reserved
-    unsigned long nTxPkts;                // Number of packets
transmitted from host to dsp
-    unsigned long nRxPkts;                // Number of packets
received from dsp to host
-    unsigned long nTxBytes;               // Number of bytes
transmitted from host to dsp
-    unsigned long nRxBytes;               // Number of bytes received
from dsp to host
-    unsigned long ConTm;                  // Current session
connection time in seconds
-    unsigned char CalVer[CALVERSZ];       // Proprietary Calibration Version
-    unsigned char CalDate[CALDATESZ];     // Proprietary Calibration Date
+typedef struct _IOCTL_GET_DSP_STAT {
+	unsigned char DspVer[DSPVERSZ];	// DSP version number
+	unsigned char HwSerNum[HWSERNUMSZ];	// Hardware Serial Number
+	unsigned char Sku[SKUSZ];	// SKU
+	unsigned char eui64[EUISZ];	// EUI64
+	unsigned short ConStat;	// Connection Status
+	//    Bits 0-3 = Connection Status Field
+	//               0000=Idle (Disconnect)
+	//               0001=Searching
+	//               0010=Active (Connected)
+	//               0011=Waiting for L2 down
+	//               0100=Sleep
+	unsigned short LedStat;	// Led Status
+	//    Bits 0-3   = Signal Strength Field
+	//                 0000 = -105dBm to -92dBm
+	//                 0001 = -92dBm to -85dBm
+	//                 0011 = -85dBm to -75dBm
+	//                 0111 = -75dBm to -50dBm
+	//                 1111 = -50dBm to 0dBm
+	//    Bits 4-7   = Reserved
+	//    Bits 8-11  = SNR Field
+	//                 0000 = <2dB
+	//                 0001 = 2dB to 8dB
+	//                 0011 = 8dB to 15dB
+	//                 0111 = 15dB to 22dB
+	//                 1111 = >22dB
+	//    Bits 12-15 = Reserved
+	unsigned long nTxPkts;	// Number of packets transmitted from host to dsp
+	unsigned long nRxPkts;	// Number of packets received from dsp to host
+	unsigned long nTxBytes;	// Number of bytes transmitted from host to dsp
+	unsigned long nRxBytes;	// Number of bytes received from dsp to host
+	unsigned long ConTm;	// Current session connection time in seconds
+	unsigned char CalVer[CALVERSZ];	// Proprietary Calibration Version
+	unsigned char CalDate[CALDATESZ];	// Proprietary Calibration Date
 } __attribute__ ((packed)) IOCTL_GET_DSP_STAT, *PIOCTL_GET_DSP_STAT;

 //Data structure for Dual Ported RAM messaging between Host and Dsp
-typedef struct _IOCTL_DPRAM_BLK
-{
-    unsigned short total_len;
-    PSEUDO_HDR pseudohdr;
-    unsigned char buffer[1780];
+typedef struct _IOCTL_DPRAM_BLK {
+	unsigned short total_len;
+	PSEUDO_HDR pseudohdr;
+	unsigned char buffer[1780];
 } __attribute__ ((packed)) IOCTL_DPRAM_BLK, *PIOCTL_DPRAM_BLK;

-typedef struct _IOCTL_DPRAM_COMMAND
-{
-    unsigned short extra;
-    IOCTL_DPRAM_BLK dpram_blk;
+typedef struct _IOCTL_DPRAM_COMMAND {
+	unsigned short extra;
+	IOCTL_DPRAM_BLK dpram_blk;
 } __attribute__ ((packed)) IOCTL_DPRAM_COMMAND, *PIOCTL_DPRAM_COMMAND;

 //
@@ -137,4 +132,3 @@ typedef struct _IOCTL_DPRAM_COMMAND
 #define IOCTL_FT1000_GET_DPRAM _IOR (FT1000_MAGIC_CODE,
IOCTL_GET_DPRAM_CMD, sizeof(IOCTL_DPRAM_BLK) )
 #define IOCTL_FT1000_REGISTER  _IOW (FT1000_MAGIC_CODE,
IOCTL_REGISTER_CMD, sizeof(unsigned short *) )
 #endif // _FT1000IOCTLH_
-
diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_proc.c
b/drivers/staging/ft1000/ft1000-usb/ft1000_proc.c
index 80faba5..4fc926d 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_proc.c
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_proc.c
@@ -3,12 +3,10 @@
 #include <linux/proc_fs.h>
 #include <linux/netdevice.h>

-
 #include "ft1000_usb.h"

 #define FT1000_PROC_DIR "ft1000"

-
 #define PUTM_TO_PAGE(len,page,args...) \
 	len += snprintf(page+len, PAGE_SIZE - len, args)

@@ -28,205 +26,182 @@
 	} \
 	len += snprintf(page+len, PAGE_SIZE - len, "%d\n", var[i])

-
-
-
 //#ifdef INIT_NET_NS
 #define FTNET_PROC init_net.proc_net
 //#else
 //#define FTNET_PROC proc_net
 //#endif

-
-u16 ft1000_read_dpram16 (struct ft1000_device *ft1000dev, USHORT indx,
-			 PUCHAR buffer, u8 highlow);
-
+u16 ft1000_read_dpram16(struct ft1000_device *ft1000dev, USHORT indx,
+			PUCHAR buffer, u8 highlow);

 int
-ft1000ReadProc (char *page, char **start, off_t off, int count, int *eof,
-		void *data)
+ft1000ReadProc(char *page, char **start, off_t off, int count, int *eof,
+	       void *data)
 {
-  struct net_device *dev;
-  int len;
-  int i;
-  unsigned short ledStat;
-  unsigned short conStat;
-
-  FT1000_INFO *info;
-
-  char *status[] = { "Idle (Disconnect)", "Searching", "Active (Connected)",
-    "Waiting for L2", "Sleep", "No Coverage", "", ""
-  };
-
-  char *signal[] = { "", "*", "**", "***", "****" };
-  int strength;
-  int quality;
-  struct timeval tv;
-  time_t delta;
-
-  dev = (struct net_device *) data;
-  info = (FT1000_INFO *) netdev_priv (dev);
-
-  if (off > 0)
-    {
-      *eof = 1;
-      return 0;
-    }
-
-
-  if (info->ProgConStat != 0xFF)
-    {
-      ft1000_read_dpram16 (info->pFt1000Dev, FT1000_MAG_DSP_LED,
-			   (PUCHAR) & ledStat, FT1000_MAG_DSP_LED_INDX);
-      info->LedStat = ntohs (ledStat);
-
-      ft1000_read_dpram16 (info->pFt1000Dev, FT1000_MAG_DSP_CON_STATE,
-			   (PUCHAR) & conStat, FT1000_MAG_DSP_CON_STATE_INDX);
-      info->ConStat = ntohs (conStat);
-      do_gettimeofday (&tv);
-      delta = (tv.tv_sec - info->ConTm);
-    }
-  else
-    {
-      info->ConStat = 0xf;
-      delta = 0;
-    }
-
-
-
-  i = (info->LedStat) & 0xf;
-  switch (i)
-    {
-    case 0x1:
-      strength = 1;
-      break;
-    case 0x3:
-      strength = 2;
-      break;
-    case 0x7:
-      strength = 3;
-      break;
-    case 0xf:
-      strength = 4;
-      break;
-    default:
-      strength = 0;
-    }
-
-  i = (info->LedStat >> 8) & 0xf;
-  switch (i)
-    {
-    case 0x1:
-      quality = 1;
-      break;
-    case 0x3:
-      quality = 2;
-      break;
-    case 0x7:
-      quality = 3;
-      break;
-    case 0xf:
-      quality = 4;
-      break;
-    default:
-      quality = 0;
-    }
-
-
-  len = 0;
-  PUTM_TO_PAGE (len, page, "Connection Time: %02ld:%02ld:%02ld\n",
-		((delta / 3600) % 24), ((delta / 60) % 60), (delta % 60));
-  PUTM_TO_PAGE (len, page, "Connection Time[s]: %ld\n", delta);
-  PUTM_TO_PAGE (len, page, "Asic ID: %s\n",
-		(info->AsicID) ==
-		ELECTRABUZZ_ID ? "ELECTRABUZZ ASIC" : "MAGNEMITE ASIC");
-  PUTX_TO_PAGE (len, page, "SKU: ", SKUSZ, info->Sku);
-  PUTX_TO_PAGE (len, page, "EUI64: ", EUISZ, info->eui64);
-  PUTD_TO_PAGE (len, page, "DSP version number: ", DSPVERSZ, info->DspVer);
-  PUTX_TO_PAGE (len, page, "Hardware Serial Number: ", HWSERNUMSZ,
-		info->HwSerNum);
-  PUTX_TO_PAGE (len, page, "Caliberation Version: ", CALVERSZ,
-		info->RfCalVer);
-  PUTD_TO_PAGE (len, page, "Caliberation Date: ", CALDATESZ, info->RfCalDate);
-  PUTM_TO_PAGE (len, page, "Media State: %s\n",
-		(info->mediastate) ? "link" : "no link");
-  PUTM_TO_PAGE (len, page, "Connection Status: %s\n",
-		status[((info->ConStat) & 0x7)]);
-  PUTM_TO_PAGE (len, page, "RX packets: %ld\n", info->stats.rx_packets);
-  PUTM_TO_PAGE (len, page, "TX packets: %ld\n", info->stats.tx_packets);
-  PUTM_TO_PAGE (len, page, "RX bytes: %ld\n", info->stats.rx_bytes);
-  PUTM_TO_PAGE (len, page, "TX bytes: %ld\n", info->stats.tx_bytes);
-  PUTM_TO_PAGE (len, page, "Signal Strength: %s\n", signal[strength]);
-  PUTM_TO_PAGE (len, page, "Signal Quality: %s\n", signal[quality]);
-
-
-
-
-  return len;
+	struct net_device *dev;
+	int len;
+	int i;
+	unsigned short ledStat;
+	unsigned short conStat;
+
+	FT1000_INFO *info;
+
+	char *status[] =
+	    { "Idle (Disconnect)", "Searching", "Active (Connected)",
+		"Waiting for L2", "Sleep", "No Coverage", "", ""
+	};
+
+	char *signal[] = { "", "*", "**", "***", "****" };
+	int strength;
+	int quality;
+	struct timeval tv;
+	time_t delta;
+
+	dev = (struct net_device *)data;
+	info = (FT1000_INFO *) netdev_priv(dev);
+
+	if (off > 0) {
+		*eof = 1;
+		return 0;
+	}
+
+	if (info->ProgConStat != 0xFF) {
+		ft1000_read_dpram16(info->pFt1000Dev, FT1000_MAG_DSP_LED,
+				    (PUCHAR) & ledStat,
+				    FT1000_MAG_DSP_LED_INDX);
+		info->LedStat = ntohs(ledStat);
+
+		ft1000_read_dpram16(info->pFt1000Dev, FT1000_MAG_DSP_CON_STATE,
+				    (PUCHAR) & conStat,
+				    FT1000_MAG_DSP_CON_STATE_INDX);
+		info->ConStat = ntohs(conStat);
+		do_gettimeofday(&tv);
+		delta = (tv.tv_sec - info->ConTm);
+	} else {
+		info->ConStat = 0xf;
+		delta = 0;
+	}
+
+	i = (info->LedStat) & 0xf;
+	switch (i) {
+	case 0x1:
+		strength = 1;
+		break;
+	case 0x3:
+		strength = 2;
+		break;
+	case 0x7:
+		strength = 3;
+		break;
+	case 0xf:
+		strength = 4;
+		break;
+	default:
+		strength = 0;
+	}
+
+	i = (info->LedStat >> 8) & 0xf;
+	switch (i) {
+	case 0x1:
+		quality = 1;
+		break;
+	case 0x3:
+		quality = 2;
+		break;
+	case 0x7:
+		quality = 3;
+		break;
+	case 0xf:
+		quality = 4;
+		break;
+	default:
+		quality = 0;
+	}
+
+	len = 0;
+	PUTM_TO_PAGE(len, page, "Connection Time: %02ld:%02ld:%02ld\n",
+		     ((delta / 3600) % 24), ((delta / 60) % 60), (delta % 60));
+	PUTM_TO_PAGE(len, page, "Connection Time[s]: %ld\n", delta);
+	PUTM_TO_PAGE(len, page, "Asic ID: %s\n",
+		     (info->AsicID) ==
+		     ELECTRABUZZ_ID ? "ELECTRABUZZ ASIC" : "MAGNEMITE ASIC");
+	PUTX_TO_PAGE(len, page, "SKU: ", SKUSZ, info->Sku);
+	PUTX_TO_PAGE(len, page, "EUI64: ", EUISZ, info->eui64);
+	PUTD_TO_PAGE(len, page, "DSP version number: ", DSPVERSZ, info->DspVer);
+	PUTX_TO_PAGE(len, page, "Hardware Serial Number: ", HWSERNUMSZ,
+		     info->HwSerNum);
+	PUTX_TO_PAGE(len, page, "Caliberation Version: ", CALVERSZ,
+		     info->RfCalVer);
+	PUTD_TO_PAGE(len, page, "Caliberation Date: ", CALDATESZ,
+		     info->RfCalDate);
+	PUTM_TO_PAGE(len, page, "Media State: %s\n",
+		     (info->mediastate) ? "link" : "no link");
+	PUTM_TO_PAGE(len, page, "Connection Status: %s\n",
+		     status[((info->ConStat) & 0x7)]);
+	PUTM_TO_PAGE(len, page, "RX packets: %ld\n", info->stats.rx_packets);
+	PUTM_TO_PAGE(len, page, "TX packets: %ld\n", info->stats.tx_packets);
+	PUTM_TO_PAGE(len, page, "RX bytes: %ld\n", info->stats.rx_bytes);
+	PUTM_TO_PAGE(len, page, "TX bytes: %ld\n", info->stats.tx_bytes);
+	PUTM_TO_PAGE(len, page, "Signal Strength: %s\n", signal[strength]);
+	PUTM_TO_PAGE(len, page, "Signal Quality: %s\n", signal[quality]);
+
+	return len;
 }

 static int
-ft1000NotifyProc (struct notifier_block *this, unsigned long event, void *ptr)
+ft1000NotifyProc(struct notifier_block *this, unsigned long event, void *ptr)
 {
-  struct net_device *dev = ptr;
-  FT1000_INFO *info;
-  struct proc_dir_entry *ft1000_proc_file;
-
-  info = (FT1000_INFO *) netdev_priv (dev);
-
-
-  switch (event)
-    {
-    case NETDEV_CHANGENAME:
-      remove_proc_entry (info->netdevname, info->ft1000_proc_dir);
-      ft1000_proc_file = create_proc_read_entry (dev->name, 0644,
-						 info->ft1000_proc_dir,
-						 ft1000ReadProc, dev);
-      snprintf (info->netdevname, IFNAMSIZ, "%s", dev->name);
-      break;
-    }
-  return NOTIFY_DONE;
+	struct net_device *dev = ptr;
+	FT1000_INFO *info;
+	struct proc_dir_entry *ft1000_proc_file;
+
+	info = (FT1000_INFO *) netdev_priv(dev);
+
+	switch (event) {
+	case NETDEV_CHANGENAME:
+		remove_proc_entry(info->netdevname, info->ft1000_proc_dir);
+		ft1000_proc_file = create_proc_read_entry(dev->name, 0644,
+							  info->ft1000_proc_dir,
+							  ft1000ReadProc, dev);
+		snprintf(info->netdevname, IFNAMSIZ, "%s", dev->name);
+		break;
+	}
+	return NOTIFY_DONE;
 }

 static struct notifier_block ft1000_netdev_notifier = {
-  .notifier_call = ft1000NotifyProc
+	.notifier_call = ft1000NotifyProc
 };

-
-void
-ft1000InitProc (struct net_device *dev)
+void ft1000InitProc(struct net_device *dev)
 {
-  FT1000_INFO *info;
-  struct proc_dir_entry *ft1000_proc_file;
-  info = (FT1000_INFO *) netdev_priv (dev);
-
-
-  info->ft1000_proc_dir = proc_mkdir (FT1000_PROC_DIR, FTNET_PROC);
-  if (info->ft1000_proc_dir == NULL)
-    {
-      remove_proc_entry (FT1000_PROC_DIR, FTNET_PROC);
-    }
-
-
-  ft1000_proc_file =
-    create_proc_read_entry (dev->name, 0644, info->ft1000_proc_dir,
-			    ft1000ReadProc, dev);
-  if (ft1000_proc_file == NULL)
-    {
-      remove_proc_entry (info->netdevname, info->ft1000_proc_dir);
-    }
-
-  snprintf (info->netdevname, IFNAMSIZ, "%s", dev->name);
-  register_netdevice_notifier (&ft1000_netdev_notifier);
-  return;
+	FT1000_INFO *info;
+	struct proc_dir_entry *ft1000_proc_file;
+	info = (FT1000_INFO *) netdev_priv(dev);
+
+	info->ft1000_proc_dir = proc_mkdir(FT1000_PROC_DIR, FTNET_PROC);
+	if (info->ft1000_proc_dir == NULL) {
+		remove_proc_entry(FT1000_PROC_DIR, FTNET_PROC);
+	}
+
+	ft1000_proc_file =
+	    create_proc_read_entry(dev->name, 0644, info->ft1000_proc_dir,
+				   ft1000ReadProc, dev);
+	if (ft1000_proc_file == NULL) {
+		remove_proc_entry(info->netdevname, info->ft1000_proc_dir);
+	}
+
+	snprintf(info->netdevname, IFNAMSIZ, "%s", dev->name);
+	register_netdevice_notifier(&ft1000_netdev_notifier);
+	return;
 }

-void
-ft1000CleanupProc (FT1000_INFO * info)
+void ft1000CleanupProc(FT1000_INFO * info)
 {
-  remove_proc_entry (info->netdevname, info->ft1000_proc_dir);
-  remove_proc_entry (FT1000_PROC_DIR, FTNET_PROC);
-  unregister_netdevice_notifier (&ft1000_netdev_notifier);
+	remove_proc_entry(info->netdevname, info->ft1000_proc_dir);
+	remove_proc_entry(FT1000_PROC_DIR, FTNET_PROC);
+	unregister_netdevice_notifier(&ft1000_netdev_notifier);

-  return;
+	return;
 }
diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
index 4dbc98b..ee6e1a8 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
@@ -31,62 +31,59 @@ MODULE_DESCRIPTION("FT1000 EXPRESS CARD DRIVER");
 MODULE_LICENSE("Dual MPL/GPL");
 MODULE_SUPPORTED_DEVICE("QFT FT1000 Express Cards");

-
 void *pFileStart;
 ULONG FileLength;

-#define VENDOR_ID 0x1291   /* Qualcomm vendor id */
-#define PRODUCT_ID 0x11    /* fake product id */
+#define VENDOR_ID 0x1291	/* Qualcomm vendor id */
+#define PRODUCT_ID 0x11		/* fake product id */

 /* table of devices that work with this driver */
 static struct usb_device_id id_table[] = {
-    {USB_DEVICE(VENDOR_ID, PRODUCT_ID) },
-    { },
+	{USB_DEVICE(VENDOR_ID, PRODUCT_ID)},
+	{},
 };

-MODULE_DEVICE_TABLE (usb, id_table);
+MODULE_DEVICE_TABLE(usb, id_table);

-extern  struct ft1000_device *pdevobj[MAX_NUM_CARDS+2];
+extern struct ft1000_device *pdevobj[MAX_NUM_CARDS + 2];

-char *getfw (char *fn, int *pimgsz);
+char *getfw(char *fn, int *pimgsz);

 int ft1000_close(struct net_device *net);
-void dsp_reload (struct ft1000_device *ft1000dev);
+void dsp_reload(struct ft1000_device *ft1000dev);
 u16 init_ft1000_netdev(struct ft1000_device *ft1000dev);
-u16 reg_ft1000_netdev(struct ft1000_device *ft1000dev, struct
usb_interface *intf);
-int ft1000_poll(void* dev_id);
+u16 reg_ft1000_netdev(struct ft1000_device *ft1000dev,
+		      struct usb_interface *intf);
+int ft1000_poll(void *dev_id);
 void ft1000_DestroyDevice(struct net_device *dev);
-u16 ft1000_read_dpram16(struct ft1000_device *ft1000dev, USHORT indx,
PUCHAR buffer, u8 highlow);
-u16 ft1000_read_register(struct ft1000_device *ft1000dev, short*
Data, u16 nRegIndx);
+u16 ft1000_read_dpram16(struct ft1000_device *ft1000dev, USHORT indx,
+			PUCHAR buffer, u8 highlow);
+u16 ft1000_read_register(struct ft1000_device *ft1000dev, short *Data,
+			 u16 nRegIndx);
 BOOLEAN gPollingfailed = FALSE;

 void ft1000InitProc(struct net_device *dev);
-void ft1000CleanupProc(FT1000_INFO *info);
+void ft1000CleanupProc(FT1000_INFO * info);
 int ft1000_poll_thread(void *arg);

 int ft1000_poll_thread(void *arg)
 {
-    int ret = STATUS_SUCCESS;
-
-    while(!kthread_should_stop() )
-    {
-        msleep(10);
-        if ( ! gPollingfailed )
-        {
-            ret = ft1000_poll(arg);
-            if ( ret != STATUS_SUCCESS )
-            {
-                DEBUG("ft1000_poll_thread: polling failed\n");
-                gPollingfailed = TRUE;
-            }
-        }
-    }
-    //DEBUG("returned from polling thread\n");
-    return STATUS_SUCCESS;
+	int ret = STATUS_SUCCESS;
+
+	while (!kthread_should_stop()) {
+		msleep(10);
+		if (!gPollingfailed) {
+			ret = ft1000_poll(arg);
+			if (ret != STATUS_SUCCESS) {
+				DEBUG("ft1000_poll_thread: polling failed\n");
+				gPollingfailed = TRUE;
+			}
+		}
+	}
+	//DEBUG("returned from polling thread\n");
+	return STATUS_SUCCESS;
 }

-
-
 //---------------------------------------------------------------------------
 // Function:    ft1000_probe
 //
@@ -99,29 +96,30 @@ int ft1000_poll_thread(void *arg)
 // Notes:
 //
 //---------------------------------------------------------------------------
-static int ft1000_probe(struct usb_interface *interface, const struct
usb_device_id *id)
+static int ft1000_probe(struct usb_interface *interface,
+			const struct usb_device_id *id)
 {
-    struct usb_host_interface *iface_desc;
-    struct usb_endpoint_descriptor *endpoint;
-    struct usb_device *dev;
-    unsigned numaltsetting;
-    int i;
+	struct usb_host_interface *iface_desc;
+	struct usb_endpoint_descriptor *endpoint;
+	struct usb_device *dev;
+	unsigned numaltsetting;
+	int i;

-    struct ft1000_device *ft1000dev;
-    FT1000_INFO *pft1000info;
+	struct ft1000_device *ft1000dev;
+	FT1000_INFO *pft1000info;

-    if(!(ft1000dev = kmalloc(sizeof(struct ft1000_device), GFP_KERNEL)))
-    {
-        printk("out of memory allocating device structure\n");
-	return 0;
-    }
+	if (!(ft1000dev = kmalloc(sizeof(struct ft1000_device), GFP_KERNEL))) {
+		printk("out of memory allocating device structure\n");
+		return 0;
+	}

-    memset(ft1000dev, 0, sizeof(*ft1000dev));
+	memset(ft1000dev, 0, sizeof(*ft1000dev));

 	//get usb device
-    dev = interface_to_usbdev(interface);
-    DEBUG("ft1000_probe: usb device descriptor info:\n");
-    DEBUG("ft1000_probe: number of configuration is %d\n",
dev->descriptor.bNumConfigurations);
+	dev = interface_to_usbdev(interface);
+	DEBUG("ft1000_probe: usb device descriptor info:\n");
+	DEBUG("ft1000_probe: number of configuration is %d\n",
+	      dev->descriptor.bNumConfigurations);

 	ft1000dev->dev = dev;
 	ft1000dev->status = 0;
@@ -131,98 +129,108 @@ static int ft1000_probe(struct usb_interface
*interface, const struct usb_device
 	ft1000dev->tx_urb = usb_alloc_urb(0, GFP_ATOMIC);
 	ft1000dev->rx_urb = usb_alloc_urb(0, GFP_ATOMIC);

-
-    DEBUG("ft1000_probe is called\n");
-    numaltsetting = interface->num_altsetting;
-    DEBUG("ft1000_probe: number of alt settings is :%d\n",numaltsetting);
-    iface_desc = interface->cur_altsetting;
-    DEBUG("ft1000_probe: number of endpoints is %d\n",
iface_desc->desc.bNumEndpoints);
-    DEBUG("ft1000_probe: descriptor type is %d\n",
iface_desc->desc.bDescriptorType);
-    DEBUG("ft1000_probe: interface number is %d\n",
iface_desc->desc.bInterfaceNumber);
-    DEBUG("ft1000_probe: alternatesetting is %d\n",
iface_desc->desc.bAlternateSetting);
-    DEBUG("ft1000_probe: interface class is %d\n",
iface_desc->desc.bInterfaceClass);
-    DEBUG("ft1000_probe: control endpoint info:\n");
-    DEBUG("ft1000_probe: descriptor0 type -- %d\n",
iface_desc->endpoint[0].desc.bmAttributes);
-    DEBUG("ft1000_probe: descriptor1 type -- %d\n",
iface_desc->endpoint[1].desc.bmAttributes);
-    DEBUG("ft1000_probe: descriptor2 type -- %d\n",
iface_desc->endpoint[2].desc.bmAttributes);
-
-    for (i=0; i< iface_desc->desc.bNumEndpoints;i++ )
-    {
-		endpoint = (struct usb_endpoint_descriptor *)&iface_desc->endpoint[i].desc;
-                DEBUG("endpoint %d\n", i);
-                DEBUG("bEndpointAddress=%x, bmAttributes=%x\n",
endpoint->bEndpointAddress, endpoint->bmAttributes);
-		if ( (endpoint->bEndpointAddress & USB_DIR_IN) &&
((endpoint->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
USB_ENDPOINT_XFER_BULK))
-		{
-			ft1000dev->bulk_in_endpointAddr = endpoint->bEndpointAddress;
-			DEBUG("ft1000_probe: in: %d\n", endpoint->bEndpointAddress);
+	DEBUG("ft1000_probe is called\n");
+	numaltsetting = interface->num_altsetting;
+	DEBUG("ft1000_probe: number of alt settings is :%d\n", numaltsetting);
+	iface_desc = interface->cur_altsetting;
+	DEBUG("ft1000_probe: number of endpoints is %d\n",
+	      iface_desc->desc.bNumEndpoints);
+	DEBUG("ft1000_probe: descriptor type is %d\n",
+	      iface_desc->desc.bDescriptorType);
+	DEBUG("ft1000_probe: interface number is %d\n",
+	      iface_desc->desc.bInterfaceNumber);
+	DEBUG("ft1000_probe: alternatesetting is %d\n",
+	      iface_desc->desc.bAlternateSetting);
+	DEBUG("ft1000_probe: interface class is %d\n",
+	      iface_desc->desc.bInterfaceClass);
+	DEBUG("ft1000_probe: control endpoint info:\n");
+	DEBUG("ft1000_probe: descriptor0 type -- %d\n",
+	      iface_desc->endpoint[0].desc.bmAttributes);
+	DEBUG("ft1000_probe: descriptor1 type -- %d\n",
+	      iface_desc->endpoint[1].desc.bmAttributes);
+	DEBUG("ft1000_probe: descriptor2 type -- %d\n",
+	      iface_desc->endpoint[2].desc.bmAttributes);
+
+	for (i = 0; i < iface_desc->desc.bNumEndpoints; i++) {
+		endpoint =
+		    (struct usb_endpoint_descriptor *)&iface_desc->
+		    endpoint[i].desc;
+		DEBUG("endpoint %d\n", i);
+		DEBUG("bEndpointAddress=%x, bmAttributes=%x\n",
+		      endpoint->bEndpointAddress, endpoint->bmAttributes);
+		if ((endpoint->bEndpointAddress & USB_DIR_IN)
+		    && ((endpoint->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
+			USB_ENDPOINT_XFER_BULK)) {
+			ft1000dev->bulk_in_endpointAddr =
+			    endpoint->bEndpointAddress;
+			DEBUG("ft1000_probe: in: %d\n",
+			      endpoint->bEndpointAddress);
 		}

-		if (!(endpoint->bEndpointAddress & USB_DIR_IN) &&
((endpoint->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
USB_ENDPOINT_XFER_BULK))
-		{
-			ft1000dev->bulk_out_endpointAddr = endpoint->bEndpointAddress;
-			DEBUG("ft1000_probe: out: %d\n", endpoint->bEndpointAddress);
+		if (!(endpoint->bEndpointAddress & USB_DIR_IN)
+		    && ((endpoint->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
+			USB_ENDPOINT_XFER_BULK)) {
+			ft1000dev->bulk_out_endpointAddr =
+			    endpoint->bEndpointAddress;
+			DEBUG("ft1000_probe: out: %d\n",
+			      endpoint->bEndpointAddress);
 		}
-    }
-
-    DEBUG("bulk_in=%d, bulk_out=%d\n",
ft1000dev->bulk_in_endpointAddr, ft1000dev->bulk_out_endpointAddr);
-
-    //read DSP image
-    pFileStart = (void*)getfw("/etc/flarion/ft3000.img", &FileLength);
-
-    if (pFileStart == NULL )
-    {
-        DEBUG ("ft1000_probe: Read DSP image failed\n");
-        return 0;
-    }
-
-    //for ( i=0; i< MAX_NUM_CARDS+2; i++)
-    //    pdevobj[i] = NULL;
-
-    //download dsp image
-    DEBUG("ft1000_probe: start downloading dsp image...\n");
-    init_ft1000_netdev(ft1000dev);
-    pft1000info = (FT1000_INFO *) netdev_priv (ft1000dev->net);
-
-//    DEBUG("In probe: pft1000info=%x\n", pft1000info);				// aelias
[-] reason: warning: format ???%x??? expects type ???unsigned int???,
but argument 2 has type ???struct FT1000_INFO *???
-    DEBUG("In probe: pft1000info=%x\n", (unsigned
int)pft1000info);		// aelias [+] reason: up
-
-    dsp_reload(ft1000dev);
-    gPollingfailed = FALSE;  //mbelian
-    pft1000info->pPollThread = kthread_run(ft1000_poll_thread,
ft1000dev, "ft1000_poll");
-	msleep(500); //mbelian
-
-
-    if ( pft1000info->DSP_loading )
-    {
-        DEBUG("ERROR!!!! RETURN FROM ft1000_probe **********************\n");
-        return 0;
-    }
-
-    while (!pft1000info->CardReady)
-    {
-        if ( gPollingfailed )
-        {
-            if ( pft1000info->pPollThread )
-            {
-                kthread_stop(pft1000info->pPollThread );
-            }
-            return 0;
-        }
-        msleep(100);
-        DEBUG("ft1000_probe::Waiting for Card Ready\n");
-    }
-
+	}
+
+	DEBUG("bulk_in=%d, bulk_out=%d\n", ft1000dev->bulk_in_endpointAddr,
+	      ft1000dev->bulk_out_endpointAddr);
+
+	//read DSP image
+	pFileStart = (void *)getfw("/etc/flarion/ft3000.img", &FileLength);
+
+	if (pFileStart == NULL) {
+		DEBUG("ft1000_probe: Read DSP image failed\n");
+		return 0;
+	}
+	//for ( i=0; i< MAX_NUM_CARDS+2; i++)
+	//    pdevobj[i] = NULL;
+
+	//download dsp image
+	DEBUG("ft1000_probe: start downloading dsp image...\n");
+	init_ft1000_netdev(ft1000dev);
+	pft1000info = (FT1000_INFO *) netdev_priv(ft1000dev->net);
+
+//    DEBUG("In probe: pft1000info=%x\n", pft1000info);
          // aelias [-] reason: warning: format ???%x??? expects type
???unsigned int???, but argument 2 has type ???struct FT1000_INFO *???
+	DEBUG("In probe: pft1000info=%x\n", (unsigned int)pft1000info);	//
aelias [+] reason: up
+
+	dsp_reload(ft1000dev);
+	gPollingfailed = FALSE;	//mbelian
+	pft1000info->pPollThread =
+	    kthread_run(ft1000_poll_thread, ft1000dev, "ft1000_poll");
+	msleep(500);		//mbelian
+
+	if (pft1000info->DSP_loading) {
+		DEBUG
+		    ("ERROR!!!! RETURN FROM ft1000_probe **********************\n");
+		return 0;
+	}
+
+	while (!pft1000info->CardReady) {
+		if (gPollingfailed) {
+			if (pft1000info->pPollThread) {
+				kthread_stop(pft1000info->pPollThread);
+			}
+			return 0;
+		}
+		msleep(100);
+		DEBUG("ft1000_probe::Waiting for Card Ready\n");
+	}

-    //initialize network device
-    DEBUG("ft1000_probe::Card Ready!!!! Registering network device\n");
+	//initialize network device
+	DEBUG("ft1000_probe::Card Ready!!!! Registering network device\n");

-    reg_ft1000_netdev(ft1000dev, interface);
+	reg_ft1000_netdev(ft1000dev, interface);

-    pft1000info->NetDevRegDone = 1;
+	pft1000info->NetDevRegDone = 1;

-		ft1000InitProc(ft1000dev->net);// +mbelian
+	ft1000InitProc(ft1000dev->net);	// +mbelian

-       return 0;
+	return 0;
 }

 //---------------------------------------------------------------------------
@@ -239,65 +247,60 @@ static int ft1000_probe(struct usb_interface
*interface, const struct usb_device
 //---------------------------------------------------------------------------
 static void ft1000_disconnect(struct usb_interface *interface)
 {
-    FT1000_INFO *pft1000info;
+	FT1000_INFO *pft1000info;

-    DEBUG("ft1000_disconnect is called\n");
+	DEBUG("ft1000_disconnect is called\n");

-    pft1000info = (PFT1000_INFO)usb_get_intfdata(interface);
-//    DEBUG("In disconnect pft1000info=%x\n", pft1000info);	// aelias
[-] reason: warning: format ???%x??? expects type ???unsigned int???,
but argument 2 has type ???struct FT1000_INFO *???
-    DEBUG("In disconnect pft1000info=%x\n", (unsigned int)
pft1000info);	// aelias [+] reason: up
+	pft1000info = (PFT1000_INFO) usb_get_intfdata(interface);
+//    DEBUG("In disconnect pft1000info=%x\n", pft1000info);     //
aelias [-] reason: warning: format ???%x??? expects type ???unsigned
int???, but argument 2 has type ???struct FT1000_INFO *???
+	DEBUG("In disconnect pft1000info=%x\n", (unsigned
int)pft1000info);	// aelias [+] reason: up

-
-
-    if (pft1000info)
-    {
+	if (pft1000info) {
 		ft1000CleanupProc(pft1000info);	//+mbelian
-        if ( pft1000info->pPollThread )
-        {
-            kthread_stop(pft1000info->pPollThread );
-        }
-
-        DEBUG("ft1000_disconnect: threads are terminated\n");
+		if (pft1000info->pPollThread) {
+			kthread_stop(pft1000info->pPollThread);
+		}

-        if (pft1000info->pFt1000Dev->net)
-        {
-            DEBUG("ft1000_disconnect: destroy char driver\n");
-            ft1000_DestroyDevice(pft1000info->pFt1000Dev->net);
-            //DEBUG("ft1000_disconnect: calling ft1000_close\n");
-            //ft1000_close(pft1000info->pFt1000Dev->net);
-            //DEBUG("ft1000_disconnect: ft1000_close is called\n");
-            unregister_netdev(pft1000info->pFt1000Dev->net);
-            DEBUG("ft1000_disconnect: network device unregisterd\n");
-            free_netdev(pft1000info->pFt1000Dev->net);
+		DEBUG("ft1000_disconnect: threads are terminated\n");

-        }
+		if (pft1000info->pFt1000Dev->net) {
+			DEBUG("ft1000_disconnect: destroy char driver\n");
+			ft1000_DestroyDevice(pft1000info->pFt1000Dev->net);
+			//DEBUG("ft1000_disconnect: calling ft1000_close\n");
+			//ft1000_close(pft1000info->pFt1000Dev->net);
+			//DEBUG("ft1000_disconnect: ft1000_close is called\n");
+			unregister_netdev(pft1000info->pFt1000Dev->net);
+			DEBUG
+			    ("ft1000_disconnect: network device unregisterd\n");
+			free_netdev(pft1000info->pFt1000Dev->net);

-        usb_free_urb(pft1000info->pFt1000Dev->rx_urb);
-        usb_free_urb(pft1000info->pFt1000Dev->tx_urb);
+		}

-        DEBUG("ft1000_disconnect: urb freed\n");
+		usb_free_urb(pft1000info->pFt1000Dev->rx_urb);
+		usb_free_urb(pft1000info->pFt1000Dev->tx_urb);

-		kfree(pft1000info->pFt1000Dev); //+mbelian
-    }
+		DEBUG("ft1000_disconnect: urb freed\n");

-    //terminate other kernel threads
-    //in multiple instances case, first find the device
-    //in the link list
+		kfree(pft1000info->pFt1000Dev);	//+mbelian
+	}
+	//terminate other kernel threads
+	//in multiple instances case, first find the device
+	//in the link list
     /**if (pPollThread)
     {
         kthread_stop(pPollThread);
         DEBUG("Polling thread is killed \n");
     }**/

-    return;
+	return;
 }

 static struct usb_driver ft1000_usb_driver = {
-    //.owner =    THIS_MODULE,
-    .name  =    "ft1000usb",
-    .probe =    ft1000_probe,
-    .disconnect = ft1000_disconnect,
-    .id_table = id_table,
+	//.owner =    THIS_MODULE,
+	.name = "ft1000usb",
+	.probe = ft1000_probe,
+	.disconnect = ft1000_disconnect,
+	.id_table = id_table,
 };

 //---------------------------------------------------------------------------
@@ -314,15 +317,15 @@ static struct usb_driver ft1000_usb_driver = {
 //---------------------------------------------------------------------------
 static int __init usb_ft1000_init(void)
 {
-    int ret = 0;
+	int ret = 0;

-    DEBUG("Initialize and register the driver\n");
+	DEBUG("Initialize and register the driver\n");

-    ret = usb_register(&ft1000_usb_driver);
-    if (ret)
-        err("usb_register failed. Error number %d", ret);
+	ret = usb_register(&ft1000_usb_driver);
+	if (ret)
+		err("usb_register failed. Error number %d", ret);

-    return ret;
+	return ret;
 }

 //---------------------------------------------------------------------------
@@ -339,11 +342,9 @@ static int __init usb_ft1000_init(void)
 //---------------------------------------------------------------------------
 static void __exit usb_ft1000_exit(void)
 {
-    DEBUG("Deregister the driver\n");
-    usb_deregister(&ft1000_usb_driver);
+	DEBUG("Deregister the driver\n");
+	usb_deregister(&ft1000_usb_driver);
 }

-module_init (usb_ft1000_init);
-module_exit (usb_ft1000_exit);
-
-
+module_init(usb_ft1000_init);
+module_exit(usb_ft1000_exit);
diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.h
b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.h
index b0c611b..bea6e95 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.h
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.h
@@ -19,26 +19,23 @@
 #define GET_DRV_ERR_RPT_MSG  0x0073
 #define RSP_DRV_ERR_RPT_MSG  0x0074

-
 // Size of DPRAM Command
 #define MAX_CMD_SQSIZE          1780
 #define SLOWQ_TYPE              0
 #define PSEUDOSZ                16
 #define DSP_QID_OFFSET          4

-
 // MEMORY MAP FOR ELECTRABUZZ ASIC
 #define	FT1000_REG_DFIFO_STAT	0x0008	// Downlink FIFO status register
 #define	FT1000_REG_DPRAM_DATA	0x000C	// DPRAM VALUE in DPRAM ADDR

-#define FT1000_DSP_LED          0xFFA  // dsp led status for PAD device
+#define FT1000_DSP_LED          0xFFA	// dsp led status for PAD device

-#define FT1000_MAG_DSP_LED               0x3FE   // dsp led status
for PAD device
-#define FT1000_MAG_DSP_LED_INDX          0x1     // dsp led status
for PAD device
+#define FT1000_MAG_DSP_LED               0x3FE	// dsp led status for PAD device
+#define FT1000_MAG_DSP_LED_INDX          0x1	// dsp led status for PAD device

 #define  SUCCESS             0x00

-
 #define DRIVERID                0x00

 // Driver Error Messages for DSP
@@ -46,10 +43,8 @@
 #define DSP_HB_INFO          0x7ef0

 // Magnemite specific defines
-#define hi_mag                  0x6968  // Byte swap hi to avoid
additional system call
-#define ho_mag                  0x6f68  // Byte swap ho to avoid
additional system call
-
-
+#define hi_mag                  0x6968	// Byte swap hi to avoid
additional system call
+#define ho_mag                  0x6f68	// Byte swap ho to avoid
additional system call

 typedef struct _MEDIAMSG {
 	PSEUDO_HDR pseudo;
@@ -57,43 +52,41 @@ typedef struct _MEDIAMSG {
 	u16 length;
 	u16 state;
 	u32 ip_addr;
-        u32 net_mask;
+	u32 net_mask;
 	u32 gateway;
 	u32 dns_1;
 	u32 dns_2;
 } __attribute__ ((packed)) MEDIAMSG, *PMEDIAMSG;

 typedef struct _DSPINITMSG {
-    PSEUDO_HDR pseudo;
-    u16 type;
-    u16 length;
-    u8 DspVer[DSPVERSZ];        // DSP version number
-    u8 HwSerNum[HWSERNUMSZ];    // Hardware Serial Number
-    u8 Sku[SKUSZ];              // SKU
-    u8 eui64[EUISZ];            // EUI64
-    u8 ProductMode[MODESZ];     // Product Mode (Market/Production)
-    u8 RfCalVer[CALVERSZ];      // Rf Calibration version
-    u8 RfCalDate[CALDATESZ];    // Rf Calibration date
+	PSEUDO_HDR pseudo;
+	u16 type;
+	u16 length;
+	u8 DspVer[DSPVERSZ];	// DSP version number
+	u8 HwSerNum[HWSERNUMSZ];	// Hardware Serial Number
+	u8 Sku[SKUSZ];		// SKU
+	u8 eui64[EUISZ];	// EUI64
+	u8 ProductMode[MODESZ];	// Product Mode (Market/Production)
+	u8 RfCalVer[CALVERSZ];	// Rf Calibration version
+	u8 RfCalDate[CALDATESZ];	// Rf Calibration date
 } __attribute__ ((packed)) DSPINITMSG, *PDSPINITMSG;

-
-typedef struct _APP_INFO_BLOCK
-{
-    u32 nTxMsg;                    // DPRAM msg sent to DSP with app_id
-    u32 nRxMsg;                    // DPRAM msg rcv from dsp with app_id
-    u32 nTxMsgReject;              // DPRAM msg rejected due to DSP
doorbell set
-    u32 nRxMsgMiss;                // DPRAM msg dropped due to overflow
-    u32 fileobject;                // Application's file object
-    u16 app_id;                    // Application id
-    int DspBCMsgFlag;
-    int NumOfMsg;                   // number of messages queued up
-    wait_queue_head_t	wait_dpram_msg;
-    struct list_head app_sqlist;   // link list of msgs for
applicaton on slow queue
+typedef struct _APP_INFO_BLOCK {
+	u32 nTxMsg;		// DPRAM msg sent to DSP with app_id
+	u32 nRxMsg;		// DPRAM msg rcv from dsp with app_id
+	u32 nTxMsgReject;	// DPRAM msg rejected due to DSP doorbell set
+	u32 nRxMsgMiss;		// DPRAM msg dropped due to overflow
+	u32 fileobject;		// Application's file object
+	u16 app_id;		// Application id
+	int DspBCMsgFlag;
+	int NumOfMsg;		// number of messages queued up
+	wait_queue_head_t wait_dpram_msg;
+	struct list_head app_sqlist;	// link list of msgs for applicaton on slow queue
 } APP_INFO_BLOCK, *PAPP_INFO_BLOCK;

 typedef struct _PROV_RECORD {
-    struct list_head list;
-    u8 *pprov_data;
+	struct list_head list;
+	u8 *pprov_data;
 } PROV_RECORD, *PPROV_RECORD;

 /*end of Jim*/
@@ -149,7 +142,6 @@ typedef struct _PROV_RECORD {
 #define ENET_MAX_SIZE           1514
 #define ENET_HEADER_SIZE        14

-
 #define CIS_NET_ADDR_OFFSET 0xff0

 #define MEM_TAG 'FLRN'
@@ -159,122 +151,104 @@ typedef struct _PROV_RECORD {

 #define FT1000_REG_MAG_UFDRL		0x0000	// Uplink FIFO Data Register low-word.

-#define FT1000_REG_MAG_UFDRH		0x0002  // Uplink FIFO Data Register high-word.
+#define FT1000_REG_MAG_UFDRH		0x0002	// Uplink FIFO Data Register high-word.

-#define FT1000_REG_MAG_UFER			0x0004  // Uplink FIFO End Register
+#define FT1000_REG_MAG_UFER			0x0004	// Uplink FIFO End Register

-#define FT1000_REG_MAG_UFSR			0x0006  // Uplink FIFO Status Register
+#define FT1000_REG_MAG_UFSR			0x0006	// Uplink FIFO Status Register

 #define FT1000_REG_MAG_DFR			0x0008	// Downlink FIFO Register

 #define FT1000_REG_MAG_DFRL			0x0008	// Downlink FIFO Register low-word

-#define FT1000_REG_MAG_DFRH			0x000a  // Downlink FIFO Register high-word
+#define FT1000_REG_MAG_DFRH			0x000a	// Downlink FIFO Register high-word

-#define FT1000_REG_MAG_DFSR			0x000c  // Downlink FIFO Status Register
+#define FT1000_REG_MAG_DFSR			0x000c	// Downlink FIFO Status Register

-#define FT1000_REG_MAG_DPDATA		0x0010  // Dual Port RAM Indirect Data Register
+#define FT1000_REG_MAG_DPDATA		0x0010	// Dual Port RAM Indirect Data Register

-#define FT1000_REG_MAG_DPDATAL		0x0010  // Dual Port RAM Indirect
Data Register low-word
+#define FT1000_REG_MAG_DPDATAL		0x0010	// Dual Port RAM Indirect Data
Register low-word

-#define FT1000_REG_MAG_DPDATAH		0x0012  // Dual Port RAM Indirect
Data Register high-word
-
-#define	FT1000_REG_MAG_WATERMARK	0x002c	// Supv. Control Reg.			LLC register
-
-#define FT1000_REG_MAG_VERSION		0x0030	// LLC Version					LLC register
+#define FT1000_REG_MAG_DPDATAH		0x0012	// Dual Port RAM Indirect Data
Register high-word

+#define	FT1000_REG_MAG_WATERMARK	0x002c	// Supv. Control Reg.
          LLC register

+#define FT1000_REG_MAG_VERSION		0x0030	// LLC Version
                 LLC register

 // Common

 #define	FT1000_REG_DPRAM_ADDR	0x000E	// DPRAM ADDRESS when card in IO mode

-#define	FT1000_REG_SUP_CTRL		0x0020	// Supv. Control Reg.			LLC register
+#define	FT1000_REG_SUP_CTRL		0x0020	// Supv. Control Reg.
      LLC register

-#define	FT1000_REG_SUP_STAT		0x0022	// Supv. Status Reg				LLC register
+#define	FT1000_REG_SUP_STAT		0x0022	// Supv. Status Reg
              LLC register

-#define	FT1000_REG_RESET		0x0024	// Reset Reg					LLC register
+#define	FT1000_REG_RESET		0x0024	// Reset Reg
           LLC register

-#define	FT1000_REG_SUP_ISR		0x0026	// Supv ISR						LLC register
+#define	FT1000_REG_SUP_ISR		0x0026	// Supv ISR
                     LLC register

-#define	FT1000_REG_SUP_IMASK	0x0028	// Supervisor Interrupt Mask	LLC register
+#define	FT1000_REG_SUP_IMASK	0x0028	// Supervisor Interrupt Mask
LLC register

-#define	FT1000_REG_DOORBELL		0x002a	// Door Bell Reg				LLC register
+#define	FT1000_REG_DOORBELL		0x002a	// Door Bell Reg
              LLC register

-#define FT1000_REG_ASIC_ID      0x002e  // ASIC Identification Number
+#define FT1000_REG_ASIC_ID      0x002e	// ASIC Identification Number

 										// (Electrabuzz=0 Magnemite=TBD)

-
-
 // DSP doorbells

 #define FT1000_DB_DPRAM_RX		0x0001	// this value indicates that DSP has

-                                        //      data for host in DPRAM SlowQ
+					//      data for host in DPRAM SlowQ

-#define FT1000_DB_DNLD_RX       0x0002  // Downloader handshake doorbell
+#define FT1000_DB_DNLD_RX       0x0002	// Downloader handshake doorbell

 #define FT1000_ASIC_RESET_REQ   0x0004

 #define FT1000_DSP_ASIC_RESET   0x0008

-
-
 #define FT1000_DB_COND_RESET    0x0010

-
-
 // Host doorbells

 #define FT1000_DB_DPRAM_TX		0x0100	// this value indicates that host has

-                                        //      data for DSP in DPRAM.
+					//      data for DSP in DPRAM.

-#define FT1000_DB_DNLD_TX       0x0200  // Downloader handshake doorbell
+#define FT1000_DB_DNLD_TX       0x0200	// Downloader handshake doorbell

 #define FT1000_ASIC_RESET_DSP   0x0400

-#define FT1000_DB_HB            0x1000  // this value indicates that supervisor
-
-
+#define FT1000_DB_HB            0x1000	// this value indicates that supervisor

 // Electrabuzz specific DPRAM mapping
       //      has a heartbeat message for DSP.

-#define FT1000_DPRAM_BASE		0x1000	//  0x0000 to 0x07FF	DPRAM	2Kx16 -
R/W from PCMCIA or DSP
+#define FT1000_DPRAM_BASE		0x1000	//  0x0000 to 0x07FF    DPRAM
2Kx16 - R/W from PCMCIA or DSP

 #define FT1000_DPRAM_TX_BASE	0x1002	//  TX AREA (SlowQ)

 #define FT1000_DPRAM_RX_BASE	0x1800	//  RX AREA (SlowQ)

-#define FT1000_DPRAM_SIZE       0x1000  //  4K bytes
+#define FT1000_DPRAM_SIZE       0x1000	//  4K bytes

+#define FT1000_DRV_DEBUG        0x17E0	// Debug area for driver

+#define FT1000_FIFO_LEN         0x17FC	// total length for DSP FIFO tracking

-#define FT1000_DRV_DEBUG        0x17E0  // Debug area for driver
+#define FT1000_HI_HO            0x17FE	// heartbeat with HI/HO

-#define FT1000_FIFO_LEN         0x17FC  // total length for DSP FIFO tracking
+#define FT1000_DSP_STATUS       0x1FFE	// dsp status - non-zero is a
request to reset dsp

-#define FT1000_HI_HO            0x17FE  // heartbeat with HI/HO
+#define FT1000_DSP_CON_STATE    0x1FF8	// DSP Connection Status Info

-#define FT1000_DSP_STATUS       0x1FFE  // dsp status - non-zero is a
request to reset dsp
-
-
-
-#define FT1000_DSP_CON_STATE    0x1FF8  // DSP Connection Status Info
-
-#define FT1000_DSP_LEDS         0x1FFA  // DSP LEDS for rcv pwr
strength, Rx data, Tx data
-
-#define DSP_TIMESTAMP           0x1FFC  // dsp timestamp
-
-#define DSP_TIMESTAMP_DIFF      0x1FFA  // difference of dsp
timestamp in DPRAM and Pseudo header.
+#define FT1000_DSP_LEDS         0x1FFA	// DSP LEDS for rcv pwr
strength, Rx data, Tx data

+#define DSP_TIMESTAMP           0x1FFC	// dsp timestamp

+#define DSP_TIMESTAMP_DIFF      0x1FFA	// difference of dsp timestamp
in DPRAM and Pseudo header.

 #define FT1000_DPRAM_FEFE    	0x1002	// Dsp Downloader handshake location

-
-
 #define FT1000_DSP_TIMER0       0x1FF0

 #define FT1000_DSP_TIMER1       0x1FF2
@@ -283,84 +257,60 @@ typedef struct _PROV_RECORD {

 #define FT1000_DSP_TIMER3       0x1FF6

-
-
 // MEMORY MAP FOR MAGNEMITE

-#define FT1000_DPRAM_MAG_TX_BASE	 	 0x0000	 //  TX AREA (SlowQ)
-
-#define FT1000_DPRAM_MAG_RX_BASE		 0x0200	 //  RX AREA (SlowQ)
+#define FT1000_DPRAM_MAG_TX_BASE	 	 0x0000	//  TX AREA (SlowQ)

+#define FT1000_DPRAM_MAG_RX_BASE		 0x0200	//  RX AREA (SlowQ)

+#define FT1000_MAG_FIFO_LEN              0x1FF	// total length for
DSP FIFO tracking

-#define FT1000_MAG_FIFO_LEN              0x1FF   // total length for
DSP FIFO tracking
+#define FT1000_MAG_FIFO_LEN_INDX         0x1	// low-word index

-#define FT1000_MAG_FIFO_LEN_INDX         0x1     // low-word index
+#define FT1000_MAG_HI_HO                 0x1FF	// heartbeat with HI/HO

-#define FT1000_MAG_HI_HO                 0x1FF   // heartbeat with HI/HO
+#define FT1000_MAG_HI_HO_INDX            0x0	// high-word index

-#define FT1000_MAG_HI_HO_INDX            0x0     // high-word index
+#define FT1000_MAG_DSP_LEDS              0x3FE	// dsp led status for PAD device

-#define FT1000_MAG_DSP_LEDS              0x3FE   // dsp led status
for PAD device
+#define FT1000_MAG_DSP_LEDS_INDX         0x1	// dsp led status for PAD device

-#define FT1000_MAG_DSP_LEDS_INDX         0x1     // dsp led status
for PAD device
+#define FT1000_MAG_DSP_CON_STATE         0x3FE	// DSP Connection Status Info

+#define FT1000_MAG_DSP_CON_STATE_INDX    0x0	// DSP Connection Status Info

+#define FT1000_MAG_DPRAM_FEFE            0x000	// location for dsp
ready indicator

-#define FT1000_MAG_DSP_CON_STATE         0x3FE   // DSP Connection Status Info
-
-#define FT1000_MAG_DSP_CON_STATE_INDX    0x0     // DSP Connection Status Info
-
-
-
-#define FT1000_MAG_DPRAM_FEFE            0x000   // location for dsp
ready indicator
-
-#define FT1000_MAG_DPRAM_FEFE_INDX       0x0     // location for dsp
ready indicator
-
-
+#define FT1000_MAG_DPRAM_FEFE_INDX       0x0	// location for dsp
ready indicator

 #define FT1000_MAG_DSP_TIMER0            0x3FC

 #define FT1000_MAG_DSP_TIMER0_INDX       0x1

-
-
 #define FT1000_MAG_DSP_TIMER1            0x3FC

 #define FT1000_MAG_DSP_TIMER1_INDX       0x0

-
-
 #define FT1000_MAG_DSP_TIMER2            0x3FD

 #define FT1000_MAG_DSP_TIMER2_INDX       0x1

-
-
 #define FT1000_MAG_DSP_TIMER3            0x3FD

 #define FT1000_MAG_DSP_TIMER3_INDX       0x0

-
-
 #define FT1000_MAG_TOTAL_LEN             0x200

 #define FT1000_MAG_TOTAL_LEN_INDX        0x1

-
-
 #define FT1000_MAG_PH_LEN                0x200

 #define FT1000_MAG_PH_LEN_INDX           0x0

-
-
 #define FT1000_MAG_PORT_ID               0x201

 #define FT1000_MAG_PORT_ID_INDX          0x0

-
-
 //

 // Constants for the FT1000_REG_SUP_ISR
@@ -373,19 +323,15 @@ typedef struct _PROV_RECORD {

 // SUPERVISOR ISR BIT MAPS

+#define ISR_EMPTY			(UCHAR)0x00	// no bits set in ISR

+#define ISR_DOORBELL_ACK	(UCHAR)0x01	//  the doorbell i sent has been recieved.

-#define ISR_EMPTY			(UCHAR)0x00 	 // no bits set in ISR
-
-#define ISR_DOORBELL_ACK	(UCHAR)0x01		 //  the doorbell i sent has
been recieved.
-
-#define ISR_DOORBELL_PEND	(UCHAR)0x02 	 //  doorbell for me
-
-#define ISR_RCV				(UCHAR)0x04 	 // packet received with no errors
-
-#define ISR_WATERMARK		(UCHAR)0x08 	 //
+#define ISR_DOORBELL_PEND	(UCHAR)0x02	//  doorbell for me

+#define ISR_RCV				(UCHAR)0x04	// packet received with no errors

+#define ISR_WATERMARK		(UCHAR)0x08	//

 // Interrupt mask register defines

@@ -399,52 +345,36 @@ typedef struct _PROV_RECORD {

 #define ISR_MASK_RCV			0x0004

-#define ISR_MASK_WATERMARK		0x0008 	  // Normally we will only mask
the watermark interrupt when we want to enable interrupts.
+#define ISR_MASK_WATERMARK		0x0008	// Normally we will only mask the
watermark interrupt when we want to enable interrupts.

 #define ISR_MASK_ALL			0xffff

+#define HOST_INTF_LE            0x0000	// Host interface little endian

-
-#define HOST_INTF_LE            0x0000    // Host interface little endian
-
-#define HOST_INTF_BE            0x0001    // Host interface big endian
-
-
+#define HOST_INTF_BE            0x0001	// Host interface big endian

 #define ISR_DEFAULT_MASK		0x7ff9

-
-
 #define hi                      0x6869

 #define ho                      0x686f

+#define FT1000_ASIC_RESET       0x80	// COR value for soft reset to PCMCIA core

+#define FT1000_ASIC_BITS        0x51	// Bits set in COR register
under normal operation

-#define FT1000_ASIC_RESET       0x80     // COR value for soft reset
to PCMCIA core
-
-#define FT1000_ASIC_BITS        0x51     // Bits set in COR register
under normal operation
-
-#define FT1000_ASIC_MAG_BITS    0x55     // Bits set in COR register
under normal operation
-
-
+#define FT1000_ASIC_MAG_BITS    0x55	// Bits set in COR register
under normal operation

 #define FT1000_COR_OFFSET       0x100

+#define ELECTRABUZZ_ID			0	// ASIC ID for ELECTRABUZZ

-
-#define ELECTRABUZZ_ID			0        // ASIC ID for ELECTRABUZZ
-
-#define MAGNEMITE_ID			0x1a01   // ASIC ID for MAGNEMITE
-
-
+#define MAGNEMITE_ID			0x1a01	// ASIC ID for MAGNEMITE

 // Maximum times trying to get ASIC out of reset

 #define MAX_ASIC_RESET_CNT      20

-
-
 #define DSP_RESET_BIT           0x1

 #define ASIC_RESET_BIT          0x2
@@ -455,53 +385,47 @@ typedef struct _PROV_RECORD {

 #define EFUSE_MEM_DISABLE       0x0040

-
 #define MAX_BUF_SIZE            4096

-
-#if 0 //Removed by Jim
+#if 0				//Removed by Jim
 typedef struct _PSEUDO_HDR
-
 {

-   unsigned short    length;
-
-   unsigned char     source;
+	unsigned short length;

-   unsigned char     destination;
+	unsigned char source;

-   unsigned char     portdest;
+	unsigned char destination;

-   unsigned char     portsrc;
+	unsigned char portdest;

-   unsigned short    sh_str_id;
+	unsigned char portsrc;

-   unsigned char     control;
+	unsigned short sh_str_id;

-   unsigned char     rsvd1;
+	unsigned char control;

-   unsigned char     seq_num;
+	unsigned char rsvd1;

-   unsigned char     rsvd2;
+	unsigned char seq_num;

-   unsigned short    qos_class;
-
-   unsigned short    checksum;
+	unsigned char rsvd2;

+	unsigned short qos_class;

+	unsigned short checksum;

 } PSEUDO_HDR, *PPSEUDO_HDR;
 #endif //end of Jim

 typedef struct _DRVMSG {
-        PSEUDO_HDR pseudo;
-        u16 type;
-        u16 length;
-        u8  data[0];
+	PSEUDO_HDR pseudo;
+	u16 type;
+	u16 length;
+	u8 data[0];
 } __attribute__ ((packed)) DRVMSG, *PDRVMSG;

-struct ft1000_device
-{
+struct ft1000_device {
 	struct usb_device *dev;
 	struct net_device *net;
 	spinlock_t device_lock;
@@ -521,89 +445,87 @@ struct ft1000_device

 	//struct ft1000_ethernet_configuration configuration;

-//	struct net_device_stats stats; //mbelian
+//      struct net_device_stats stats; //mbelian
 } __attribute__ ((packed));

 typedef struct _FT1000_INFO {
-    struct ft1000_device *pFt1000Dev;
-    struct net_device_stats stats;
+	struct ft1000_device *pFt1000Dev;
+	struct net_device_stats stats;

-    struct task_struct *pPollThread;
+	struct task_struct *pPollThread;

-    unsigned char fcodeldr;
-    unsigned char bootmode;
+	unsigned char fcodeldr;
+	unsigned char bootmode;
 	unsigned char usbboot;
-    unsigned short dspalive;
-    u16 ASIC_ID;
-    BOOLEAN fProvComplete;
-    BOOLEAN fCondResetPend;
-    BOOLEAN fAppMsgPend;
-    char *pfwimg;
-    int fwimgsz;
-    u16 DrvErrNum;
-    u8  *pTestImage;
-    u16 AsicID;
-    unsigned long TestImageIndx;
-    unsigned long TestImageSz;
-    u8  TestImageEnable;
-    u8  TestImageReady;
-    int ASICResetNum;
-    int DspAsicReset;
-    int PktIntfErr;
-    int DSPResetNum;
-    int NumIOCTLBufs;
-    int IOCTLBufLvl;
-    int DeviceCreated;
-    int CardReady;
-    int DSP_loading;
-    int NetDevRegDone;
-    u8 CardNumber;
-    u8 DeviceName[15];
-    int DeviceMajor;
-    int registered;
-    int mediastate;
-    int dhcpflg;
-    u16 packetseqnum;
-    u8 squeseqnum;                 // sequence number on slow queue
-    spinlock_t dpram_lock;
-    spinlock_t fifo_lock;
-    u16 CurrentInterruptEnableMask;
-    int InterruptsEnabled;
-    u16 fifo_cnt;
-    u8 DspVer[DSPVERSZ];        // DSP version number
-    u8 HwSerNum[HWSERNUMSZ];    // Hardware Serial Number
-    u8 Sku[SKUSZ];              // SKU
-    u8 eui64[EUISZ];            // EUI64
-    time_t ConTm;               // Connection Time
-    u8 ProductMode[MODESZ];
-    u8 RfCalVer[CALVERSZ];
-    u8 RfCalDate[CALDATESZ];
-    u16 DSP_TIME[4];
-    u16 ProgSnr;
-    u16 LedStat;	//mbelian
-    u16 ConStat;	//mbelian
-    u16 ProgConStat;
-    struct list_head prov_list;
-    int appcnt;
-    APP_INFO_BLOCK app_info[MAX_NUM_APP]; //Added by Jim
-    u16 DSPInfoBlklen;
-    u16 DrvMsgPend;
-    int (*ft1000_reset)(struct net_device *dev);
-    u16 DSPInfoBlk[MAX_DSP_SESS_REC];
-    union {
-        u16 Rec[MAX_DSP_SESS_REC];
-        u32 MagRec[MAX_DSP_SESS_REC/2];
-    } DSPSess;
+	unsigned short dspalive;
+	u16 ASIC_ID;
+	BOOLEAN fProvComplete;
+	BOOLEAN fCondResetPend;
+	BOOLEAN fAppMsgPend;
+	char *pfwimg;
+	int fwimgsz;
+	u16 DrvErrNum;
+	u8 *pTestImage;
+	u16 AsicID;
+	unsigned long TestImageIndx;
+	unsigned long TestImageSz;
+	u8 TestImageEnable;
+	u8 TestImageReady;
+	int ASICResetNum;
+	int DspAsicReset;
+	int PktIntfErr;
+	int DSPResetNum;
+	int NumIOCTLBufs;
+	int IOCTLBufLvl;
+	int DeviceCreated;
+	int CardReady;
+	int DSP_loading;
+	int NetDevRegDone;
+	u8 CardNumber;
+	u8 DeviceName[15];
+	int DeviceMajor;
+	int registered;
+	int mediastate;
+	int dhcpflg;
+	u16 packetseqnum;
+	u8 squeseqnum;		// sequence number on slow queue
+	spinlock_t dpram_lock;
+	spinlock_t fifo_lock;
+	u16 CurrentInterruptEnableMask;
+	int InterruptsEnabled;
+	u16 fifo_cnt;
+	u8 DspVer[DSPVERSZ];	// DSP version number
+	u8 HwSerNum[HWSERNUMSZ];	// Hardware Serial Number
+	u8 Sku[SKUSZ];		// SKU
+	u8 eui64[EUISZ];	// EUI64
+	time_t ConTm;		// Connection Time
+	u8 ProductMode[MODESZ];
+	u8 RfCalVer[CALVERSZ];
+	u8 RfCalDate[CALDATESZ];
+	u16 DSP_TIME[4];
+	u16 ProgSnr;
+	u16 LedStat;		//mbelian
+	u16 ConStat;		//mbelian
+	u16 ProgConStat;
+	struct list_head prov_list;
+	int appcnt;
+	APP_INFO_BLOCK app_info[MAX_NUM_APP];	//Added by Jim
+	u16 DSPInfoBlklen;
+	u16 DrvMsgPend;
+	int (*ft1000_reset) (struct net_device * dev);
+	u16 DSPInfoBlk[MAX_DSP_SESS_REC];
+	union {
+		u16 Rec[MAX_DSP_SESS_REC];
+		u32 MagRec[MAX_DSP_SESS_REC / 2];
+	} DSPSess;
 	unsigned short tempbuf[32];
 	char netdevname[IFNAMSIZ];
-	struct proc_dir_entry *ft1000_proc_dir; //mbelian
+	struct proc_dir_entry *ft1000_proc_dir;	//mbelian
 } FT1000_INFO, *PFT1000_INFO;

-
 typedef struct _DPRAM_BLK {
-    struct list_head list;
-    u16 *pbuffer;
+	struct list_head list;
+	u16 *pbuffer;
 } __attribute__ ((packed)) DPRAM_BLK, *PDPRAM_BLK;

-
 #endif
-- 
1.7.1



More information about the devel mailing list