mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 0/4] staging ft1000-usb code cleanup patches.
@ 2010-10-12  8:26 Marek Belisko
  2010-10-12  8:26 ` [PATCH 1/4] staging: ft1000-usb: Remove global flag DSP_loading Marek Belisko
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Marek Belisko @ 2010-10-12  8:26 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Marek Belisko, Arnd Bergmann,
	Vasiliy Kulikov, devel, linux-kernel


This set of patches clean ft1000-usb driver from various problems like
typedef usage, memory leaks and unused comments.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/4] staging: ft1000-usb: Remove global flag DSP_loading.
  2010-10-12  8:26 [PATCH 0/4] staging ft1000-usb code cleanup patches Marek Belisko
@ 2010-10-12  8:26 ` Marek Belisko
  2010-10-12  8:26 ` [PATCH 2/4] staging: ft1000: Fix memory leak when polling fail Marek Belisko
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Marek Belisko @ 2010-10-12  8:26 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Marek Belisko, Arnd Bergmann,
	Vasiliy Kulikov, devel, linux-kernel
  Cc: Marek Belisko

This patch remove global flag DSP_loading which was checked
only on one place. Instead check return value for dsp_reload() function.

Signed-off-by: Marek Belisko <marek.belisko@gmail.com>
---
 drivers/staging/ft1000/ft1000-usb/ft1000_hw.c  |   12 ++++--------
 drivers/staging/ft1000/ft1000-usb/ft1000_usb.c |   16 ++++++++--------
 drivers/staging/ft1000/ft1000-usb/ft1000_usb.h |    3 +--
 3 files changed, 13 insertions(+), 18 deletions(-)

diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c b/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
index 1f3317c..d0637c3 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
@@ -685,7 +685,7 @@ void CardSendCommand(struct ft1000_device *ft1000dev, void *ptempbuffer, int siz
 //
 //  Returns:    None
 //-----------------------------------------------------------------------
-void dsp_reload (struct ft1000_device *ft1000dev)
+int dsp_reload(struct ft1000_device *ft1000dev)
 {
     u16 status;
     USHORT tempword;
@@ -696,7 +696,6 @@ void dsp_reload (struct ft1000_device *ft1000dev)
     pft1000info = netdev_priv(ft1000dev->net);
 
     pft1000info->CardReady = 0;
-    pft1000info->DSP_loading= 1;
 
     // Program Interrupt Mask register
     status = ft1000_write_register (ft1000dev, 0xffff, FT1000_REG_SUP_IMASK);
@@ -723,14 +722,13 @@ void dsp_reload (struct ft1000_device *ft1000dev)
     // call codeloader
     status = scram_dnldr(ft1000dev, pFileStart, FileLength);
 
-    if ( status != STATUS_SUCCESS)
-       return;
+	if (status != STATUS_SUCCESS)
+		return -EIO;
 
     msleep(1000);
-    pft1000info->DSP_loading= 0;
 
     DEBUG("dsp_reload returned\n");
-
+	return 0;
 
 }
 
@@ -1054,7 +1052,6 @@ u16 init_ft1000_netdev(struct ft1000_device *ft1000dev)
     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;
@@ -2252,7 +2249,6 @@ static int ft1000_dsp_prov(void *arg)
 
     info->fProvComplete = 1;
     info->CardReady = 1;
-    info->DSP_loading= 0;
     return STATUS_SUCCESS;
 
 }
diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
index 3c9bb6d..cf041f3 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
@@ -182,18 +182,16 @@ static int ft1000_probe(struct usb_interface *interface, const struct usb_device
 //    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=%p\n", pft1000info);		// aelias [+] reason: up
 
-    dsp_reload(ft1000dev);
+	ret = dsp_reload(ft1000dev);
+	if (ret) {
+		printk(KERN_ERR "Problem with DSP image loading\n");
+		goto err_load;
+	}
+
     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 )
@@ -220,6 +218,8 @@ static int ft1000_probe(struct usb_interface *interface, const struct usb_device
 
        return 0;
 
+err_load:
+	kfree(pFileStart);
 err_fw:
 	kfree(ft1000dev);
 	return ret;
diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.h b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.h
index b0ab918..764e9f2 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.h
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.h
@@ -554,7 +554,6 @@ typedef struct _FT1000_INFO {
     int IOCTLBufLvl;
     int DeviceCreated;
     int CardReady;
-    int DSP_loading;
     int NetDevRegDone;
     u8 CardNumber;
     u8 DeviceName[15];
@@ -632,7 +631,7 @@ void ft1000_free_buffer (PDPRAM_BLK pdpram_blk, struct list_head *plist);
 
 char *getfw (char *fn, size_t *pimgsz);
 
-void dsp_reload(struct ft1000_device *ft1000dev);
+int dsp_reload(struct ft1000_device *ft1000dev);
 u16 init_ft1000_netdev(struct ft1000_device *ft1000dev);
 struct usb_interface;
 u16 reg_ft1000_netdev(struct ft1000_device *ft1000dev, struct usb_interface *intf);
-- 
1.7.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 2/4] staging: ft1000: Fix memory leak when polling fail.
  2010-10-12  8:26 [PATCH 0/4] staging ft1000-usb code cleanup patches Marek Belisko
  2010-10-12  8:26 ` [PATCH 1/4] staging: ft1000-usb: Remove global flag DSP_loading Marek Belisko
@ 2010-10-12  8:26 ` Marek Belisko
  2010-10-12  8:26 ` [PATCH 3/4] staging: ft1000: Remove unused/unnecessary comments Marek Belisko
  2010-10-12  8:26 ` [PATCH 4/4] staging:ft1000: get rid of typedef usage Marek Belisko
  3 siblings, 0 replies; 5+ messages in thread
From: Marek Belisko @ 2010-10-12  8:26 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Marek Belisko, Arnd Bergmann,
	Vasiliy Kulikov, devel, linux-kernel
  Cc: Marek Belisko

Signed-off-by: Marek Belisko <marek.belisko@gmail.com>
---
 drivers/staging/ft1000/ft1000-usb/ft1000_usb.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
index cf041f3..dc2ef98 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
@@ -200,7 +200,8 @@ static int ft1000_probe(struct usb_interface *interface, const struct usb_device
             {
                 kthread_stop(pft1000info->pPollThread );
             }
-            return 0;
+		ret = -EIO;
+		goto err_load;
         }
         msleep(100);
         DEBUG("ft1000_probe::Waiting for Card Ready\n");
-- 
1.7.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 3/4] staging: ft1000: Remove unused/unnecessary comments.
  2010-10-12  8:26 [PATCH 0/4] staging ft1000-usb code cleanup patches Marek Belisko
  2010-10-12  8:26 ` [PATCH 1/4] staging: ft1000-usb: Remove global flag DSP_loading Marek Belisko
  2010-10-12  8:26 ` [PATCH 2/4] staging: ft1000: Fix memory leak when polling fail Marek Belisko
@ 2010-10-12  8:26 ` Marek Belisko
  2010-10-12  8:26 ` [PATCH 4/4] staging:ft1000: get rid of typedef usage Marek Belisko
  3 siblings, 0 replies; 5+ messages in thread
From: Marek Belisko @ 2010-10-12  8:26 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Marek Belisko, Arnd Bergmann,
	Vasiliy Kulikov, devel, linux-kernel
  Cc: Marek Belisko

Signed-off-by: Marek Belisko <marek.belisko@gmail.com>
---
 drivers/staging/ft1000/ft1000-usb/ft1000_usb.c |   50 ++++--------------------
 1 files changed, 8 insertions(+), 42 deletions(-)

diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
index dc2ef98..1a05148 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
@@ -6,7 +6,6 @@
 //
 // $Id:
 //====================================================
-// 20090926; aelias; removed all compiler warnings; ubuntu 9.04; 2.6.28-15-generic
 #include <linux/init.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
@@ -16,16 +15,6 @@
 #include <linux/firmware.h>
 #include "ft1000_usb.h"
 
-//#include <linux/sched.h>
-//#include <linux/ptrace.h>
-//#include <linux/slab.h>
-//#include <linux/string.h>
-//#include <linux/timer.h>
-//#include <linux/netdevice.h>
-//#include <linux/ioport.h>
-//#include <linux/delay.h>
-//#include <asm/io.h>
-//#include <asm/system.h>
 #include <linux/kthread.h>
 
 MODULE_DESCRIPTION("FT1000 EXPRESS CARD DRIVER");
@@ -65,8 +54,7 @@ int ft1000_poll_thread(void *arg)
             }
         }
     }
-    //DEBUG("returned from polling thread\n");
-    return STATUS_SUCCESS;
+	return STATUS_SUCCESS;
 }
 
 
@@ -104,7 +92,6 @@ static int ft1000_probe(struct usb_interface *interface, const struct usb_device
 
     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);
@@ -112,7 +99,6 @@ static int ft1000_probe(struct usb_interface *interface, const struct usb_device
 	ft1000dev->dev = dev;
 	ft1000dev->status = 0;
 	ft1000dev->net = NULL;
-	//ft1000dev->device_lock = SPIN_LOCK_UNLOCKED;
 	spin_lock_init(&ft1000dev->device_lock);
 	ft1000dev->tx_urb = usb_alloc_urb(0, GFP_ATOMIC);
 	ft1000dev->rx_urb = usb_alloc_urb(0, GFP_ATOMIC);
@@ -171,26 +157,20 @@ static int ft1000_probe(struct usb_interface *interface, const struct usb_device
 	FileLength = dsp_fw->size;
 	release_firmware(dsp_fw);
 
-    //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=%p\n", pft1000info);		// aelias [+] reason: up
-
+	DEBUG("In probe: pft1000info=%p\n", pft1000info);
 	ret = dsp_reload(ft1000dev);
 	if (ret) {
 		printk(KERN_ERR "Problem with DSP image loading\n");
 		goto err_load;
 	}
 
-    gPollingfailed = FALSE;  //mbelian
+	gPollingfailed = FALSE;
     pft1000info->pPollThread = kthread_run(ft1000_poll_thread, ft1000dev, "ft1000_poll");
-	msleep(500); //mbelian
+	msleep(500);
 
     while (!pft1000info->CardReady)
     {
@@ -208,14 +188,13 @@ static int ft1000_probe(struct usb_interface *interface, const struct usb_device
     }
 
 
-    //initialize network device
     DEBUG("ft1000_probe::Card Ready!!!! Registering network device\n");
 
     reg_ft1000_netdev(ft1000dev, interface);
 
     pft1000info->NetDevRegDone = 1;
 
-		ft1000InitProc(ft1000dev->net);// +mbelian
+		ft1000InitProc(ft1000dev->net);
 
        return 0;
 
@@ -245,14 +224,13 @@ static void ft1000_disconnect(struct usb_interface *interface)
     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=%p\n", pft1000info);	// aelias [+] reason: up
+	DEBUG("In disconnect pft1000info=%p\n", pft1000info);
 
 
 
     if (pft1000info)
     {
-		ft1000CleanupProc(pft1000info);	//+mbelian
+		ft1000CleanupProc(pft1000info);
         if ( pft1000info->pPollThread )
         {
             kthread_stop(pft1000info->pPollThread );
@@ -264,9 +242,6 @@ static void ft1000_disconnect(struct usb_interface *interface)
         {
             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);
@@ -278,23 +253,14 @@ static void ft1000_disconnect(struct usb_interface *interface)
 
         DEBUG("ft1000_disconnect: urb freed\n");
 
-		kfree(pft1000info->pFt1000Dev); //+mbelian
+		kfree(pft1000info->pFt1000Dev);
     }
 	kfree(pFileStart);
-    //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;
 }
 
 static struct usb_driver ft1000_usb_driver = {
-    //.owner =    THIS_MODULE,
     .name  =    "ft1000usb",
     .probe =    ft1000_probe,
     .disconnect = ft1000_disconnect,
-- 
1.7.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 4/4] staging:ft1000: get rid of typedef usage.
  2010-10-12  8:26 [PATCH 0/4] staging ft1000-usb code cleanup patches Marek Belisko
                   ` (2 preceding siblings ...)
  2010-10-12  8:26 ` [PATCH 3/4] staging: ft1000: Remove unused/unnecessary comments Marek Belisko
@ 2010-10-12  8:26 ` Marek Belisko
  3 siblings, 0 replies; 5+ messages in thread
From: Marek Belisko @ 2010-10-12  8:26 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Marek Belisko, Arnd Bergmann,
	Vasiliy Kulikov, devel, linux-kernel
  Cc: Marek Belisko

Signed-off-by: Marek Belisko <marek.belisko@gmail.com>
---
 .../staging/ft1000/ft1000-usb/ft1000_download.c    |   42 +++++---------------
 1 files changed, 10 insertions(+), 32 deletions(-)

diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_download.c b/drivers/staging/ft1000/ft1000-usb/ft1000_download.c
index 1f7c7a6..bbb2430 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_download.c
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_download.c
@@ -85,20 +85,7 @@
 #define  DWNLD_MAG1_SIZE_LOC          0x02
 #define  DWNLD_MAG1_PS_HDR_LOC        0x03
 
-#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];
-} DSP_FILE_HDR, *PDSP_FILE_HDR;
-
-typedef struct _DSP_FILE_HDR_5 {
+struct dsp_file_hdr {
    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.
@@ -110,18 +97,10 @@ typedef struct _DSP_FILE_HDR_5 {
    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.
-} DSP_IMAGE_INFO, *PDSP_IMAGE_INFO;
-
-typedef struct _DSP_IMAGE_INFO_V6 {
+#pragma pack(1)
+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.
@@ -130,7 +109,8 @@ typedef struct _DSP_IMAGE_INFO_V6 {
    long              version;             // Embedded version # of DSP code.
    unsigned short    checksum;            // DSP File checksum
    unsigned short    pad1;
-} DSP_IMAGE_INFO_V6, *PDSP_IMAGE_INFO_V6;
+};
+
 
 //---------------------------------------------------------------------------
 // Function:    check_usb_db
@@ -867,14 +847,13 @@ u16 scram_dnldr(struct ft1000_device *ft1000dev, void *pFileStart, ULONG  FileLe
    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;
+	struct dsp_file_hdr *pFileHdr5;
+	struct dsp_image_info *pDspImageInfoV6 = NULL;
    long                    requested_version;
    BOOLEAN                 bGoodVersion;
    PDRVMSG                 pMailBoxData;
@@ -907,8 +886,7 @@ u16 scram_dnldr(struct ft1000_device *ft1000dev, void *pFileStart, ULONG  FileLe
 
    uiState = STATE_START_DWNLD;
 
-   pFileHdr = (PDSP_FILE_HDR)pFileStart;
-   pFileHdr5 = (PDSP_FILE_HDR_5)pFileStart;
+   pFileHdr5 = (struct dsp_file_hdr *)pFileStart;
 
    ft1000_write_register (ft1000dev, 0x800, FT1000_REG_MAG_WATERMARK);
 
@@ -1203,7 +1181,7 @@ u16 scram_dnldr(struct ft1000_device *ft1000dev, void *pFileStart, ULONG  FileLe
                bGoodVersion = FALSE;
                requested_version = get_request_value(ft1000dev);
 
-                   pDspImageInfoV6 = (PDSP_IMAGE_INFO_V6)(pFileStart + sizeof(DSP_FILE_HDR_5));
+                   pDspImageInfoV6 = (struct dsp_image_info *)(pFileStart + sizeof(struct dsp_file_hdr ));
 
                for (imageN = 0; imageN < pFileHdr5->nDspImages; imageN++)
                {
-- 
1.7.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2010-10-12  8:25 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-10-12  8:26 [PATCH 0/4] staging ft1000-usb code cleanup patches Marek Belisko
2010-10-12  8:26 ` [PATCH 1/4] staging: ft1000-usb: Remove global flag DSP_loading Marek Belisko
2010-10-12  8:26 ` [PATCH 2/4] staging: ft1000: Fix memory leak when polling fail Marek Belisko
2010-10-12  8:26 ` [PATCH 3/4] staging: ft1000: Remove unused/unnecessary comments Marek Belisko
2010-10-12  8:26 ` [PATCH 4/4] staging:ft1000: get rid of typedef usage Marek Belisko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®