staging: ft1000: unify struct ft1000_info between USB and PCMCIA drivers
PATCH v2 1/1 staging: ft1000: unify struct ft1000_info between USB and PCMCIA drivers
Unify struct ft1000_info between ft1000-usb and ft1000-pcmcia and move it to common ft1000.h.
Signed-off-by Ondrej Zary <[email protected]>
--- drivers/staging/ft1000/ft1000-pcmcia/ft1000.h | 33 +----- drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c | 21 ++- drivers/staging/ft1000/ft1000-pcmcia/ft1000_proc.c | 10 +- drivers/staging/ft1000/ft1000-usb/ft1000_debug.c | 147 ++++++++++---------- .../staging/ft1000/ft1000-usb/ft1000_download.c | 70 +++++----- drivers/staging/ft1000/ft1000-usb/ft1000_hw.c | 100 +++++++------- drivers/staging/ft1000/ft1000-usb/ft1000_proc.c | 4 +- drivers/staging/ft1000/ft1000-usb/ft1000_usb.c | 30 ++-- drivers/staging/ft1000/ft1000-usb/ft1000_usb.h | 54 +------ drivers/staging/ft1000/ft1000.h | 35 +++++ 10 files changed, 238 insertions(+), 266 deletions(-)
drivers/staging/ft1000/ft1000-pcmcia/ft1000.h +1 -32
@@ -31,41 +31,10 @@#define SUCCESS 0x00#define FAILURE 0x01 -struct ft1000_info { -struct net_device_stats stats; -u16 DrvErrNum; -u16 AsicID; +struct ft1000_pcmcia {int PktIntfErr; -int CardReady; -int registered; -int mediastate;u16 packetseqnum; -u8 squeseqnum;/* sequence number on slow queue */ -spinlock_t dpram_lock; -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 */ -u16 LedStat; -u16 ConStat; -u16 ProgConStat; -u8 ProductMode[MODESZ ]; -u8 RfCalVer[CALVERSZ ]; -u8 RfCalDate[CALDATESZ ]; -u16 DSP_TIME[4 ]; -struct list_head prov_list; -u16 DSPInfoBlklen; -int (*ft1000_reset)(void *);void *link; -u16 DSPInfoBlk[MAX_DSP_SESS_REC ]; -union { -u16 Rec[MAX_DSP_SESS_REC ]; -u32 MagRec[MAX_DSP_SESS_REC /2 ]; - } DSPSess; -struct proc_dir_entry *proc_ft1000; -char netdevname[IFNAMSIZ ]; };struct pcmcia_device ;
drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c +15 -6
@@ -328,11 +328,12 @@ static void ft1000_disable_interrupts(struct net_device *dev)static void ft1000_reset_asic (struct net_device *dev) {struct ft1000_info *info =netdev_priv (dev); +struct ft1000_pcmcia *pcmcia = info->priv;u16 tempword;DEBUG (1 ,"ft1000_hw:ft1000_reset_asic called\n" ); - (*info->ft1000_reset) (info->link); + (*info->ft1000_reset) (pcmcia->link);// Let's use the register provided by the Magnemite ASIC to reset the // ASIC and DSP.
@@ -1397,12 +1398,13 @@ static int ft1000_parse_dpram_msg(struct net_device *dev)static void ft1000_flush_fifo (struct net_device *dev,u16 DrvErrNum) {struct ft1000_info *info =netdev_priv (dev); +struct ft1000_pcmcia *pcmcia = info->priv;u16 i;u32 templong;u16 tempword;DEBUG (1 ,"ft1000:ft1000_hw:ft1000_flush_fifo called\n" ); -if (info->PktIntfErr >MAX_PH_ERR ) { +if (pcmcia->PktIntfErr >MAX_PH_ERR ) {if (info->AsicID ==ELECTRABUZZ_ID ) { info->DSP_TIME[0 ] =ft1000_read_dpram (dev,FT1000_DSP_TIMER0 );
@@ -1491,7 +1493,7 @@ static void ft1000_flush_fifo(struct net_device *dev, u16 DrvErrNum)FIFO_FLUSH_BADCNT ; }else {// Let's assume that we really flush the FIFO - info->PktIntfErr++; + pcmcia->PktIntfErr++;return ; } }else {
@@ -1522,7 +1524,7 @@ static void ft1000_flush_fifo(struct net_device *dev, u16 DrvErrNum)DEBUG (0 ,"FT1000_REG_MAG_DFSR = 0x%x\n" , tempword); }if (DrvErrNum) { - info->PktIntfErr++; + pcmcia->PktIntfErr++; } } }
@@ -1731,6 +1733,7 @@ static int ft1000_copy_up_pkt(struct net_device *dev)static int ft1000_copy_down_pkt (struct net_device *dev,u16 * packet,u16 len) {struct ft1000_info *info =netdev_priv (dev); +struct ft1000_pcmcia *pcmcia = info->priv;union {struct pseudo_hdr blk;u16 buff[sizeof (struct pseudo_hdr ) >>1 ];
@@ -1780,7 +1783,7 @@ static int ft1000_copy_down_pkt(struct net_device *dev, u16 * packet, u16 len) pseudo.blk.control =0 ; pseudo.blk.rsvd1 =0 ; pseudo.blk.seq_num =0 ; - pseudo.blk.rsvd2 = info->packetseqnum++; + pseudo.blk.rsvd2 = pcmcia->packetseqnum++; pseudo.blk.qos_class =0 ;/* Calculate pseudo header checksum */ pseudo.blk.checksum = pseudo.buff[0 ];
@@ -2058,6 +2061,8 @@ void stop_ft1000_card(struct net_device *dev)kfree (ptr); } +kfree (info->priv); +if (info->registered) {unregister_netdev (dev); info->registered =0 ;
@@ -2100,6 +2105,7 @@ struct net_device *init_ft1000_card(struct pcmcia_device *link, void *ft1000_reset) {struct ft1000_info *info; +struct ft1000_pcmcia *pcmcia;struct net_device *dev; static const struct net_device_ops ft1000ops = // Slavius 21.10.2009 due to kernel changes
@@ -2141,10 +2147,13 @@ struct net_device *init_ft1000_card(struct pcmcia_device *link,memset (&info->stats,0 ,sizeof (struct net_device_stats )); + info->priv =kzalloc (sizeof (struct ft1000_pcmcia ),GFP_KERNEL ); + pcmcia = info->priv; + pcmcia->link = link; +spin_lock_init (&info->dpram_lock); info->DrvErrNum =0 ; info->registered =1 ; - info->link = link; info->ft1000_reset = ft1000_reset; info->mediastate =0 ; info->fifo_cnt =0 ;
drivers/staging/ft1000/ft1000-pcmcia/ft1000_proc.c +5 -5
@@ -175,8 +175,8 @@ static int ft1000NotifyProc(struct notifier_block *this, unsigned long event,switch (event) {case NETDEV_CHANGENAME : -remove_proc_entry (info->netdevname, info->proc_ft1000); -create_proc_read_entry (dev->name,0644 , info->proc_ft1000, +remove_proc_entry (info->netdevname, info->ft1000_proc_dir); +create_proc_read_entry (dev->name,0644 , info->ft1000_proc_dir, ft1000ReadProc, dev);snprintf (info->netdevname,IFNAMSIZ ,"%s" , dev->name);break ;
@@ -194,8 +194,8 @@ void ft1000InitProc(struct net_device *dev) info =netdev_priv (dev); - info->proc_ft1000 =proc_mkdir (FT1000_PROC , init_net.proc_net); -create_proc_read_entry (dev->name,0644 , info->proc_ft1000, + info->ft1000_proc_dir =proc_mkdir (FT1000_PROC , init_net.proc_net); +create_proc_read_entry (dev->name,0644 , info->ft1000_proc_dir, ft1000ReadProc, dev);snprintf (info->netdevname,IFNAMSIZ ,"%s" , dev->name);register_netdevice_notifier (&ft1000_netdev_notifier);
@@ -207,7 +207,7 @@ void ft1000CleanupProc(struct net_device *dev) info =netdev_priv (dev); -remove_proc_entry (dev->name, info->proc_ft1000); +remove_proc_entry (dev->name, info->ft1000_proc_dir);remove_proc_entry (FT1000_PROC , init_net.proc_net);unregister_netdevice_notifier (&ft1000_netdev_notifier); }
drivers/staging/ft1000/ft1000-usb/ft1000_debug.c +74 -73
359 lines not on this page · raw message
drivers/staging/ft1000/ft1000-usb/ft1000_download.c +32 -38
201 lines not on this page · raw message
drivers/staging/ft1000/ft1000-usb/ft1000_hw.c +50 -50
309 lines not on this page · raw message
drivers/staging/ft1000/ft1000-usb/ft1000_proc.c +2 -2
@@ -94,11 +94,11 @@ ft1000ReadProc(char *page, char **start, off_t off, int count, int *eof,if (info->ProgConStat !=0xFF ) { -ft1000_read_dpram16 (info->pFt1000Dev,FT1000_MAG_DSP_LED , +ft1000_read_dpram16 (info->priv,FT1000_MAG_DSP_LED , (u8 *)&ledStat,FT1000_MAG_DSP_LED_INDX ); info->LedStat =ntohs (ledStat); -ft1000_read_dpram16 (info->pFt1000Dev,FT1000_MAG_DSP_CON_STATE , +ft1000_read_dpram16 (info->priv,FT1000_MAG_DSP_CON_STATE , (u8 *)&conStat,FT1000_MAG_DSP_CON_STATE_INDX ); info->ConStat =ntohs (conStat);do_gettimeofday (&tv);
drivers/staging/ft1000/ft1000-usb/ft1000_usb.c +16 -14
@@ -171,11 +171,11 @@ static int ft1000_probe(struct usb_interface *interface, } gPollingfailed = FALSE; - pft1000info->pPollThread = + ft1000dev->pPollThread =kthread_run (ft1000_poll_thread, ft1000dev,"ft1000_poll" ); -if (IS_ERR (pft1000info->pPollThread)) { - ret =PTR_ERR (pft1000info->pPollThread); +if (IS_ERR (ft1000dev->pPollThread)) { + ret =PTR_ERR (ft1000dev->pPollThread); goto err_load; }
@@ -200,7 +200,7 @@ static int ft1000_probe(struct usb_interface *interface,if (ret) goto err_proc; - pft1000info->NetDevRegDone =1 ; + ft1000dev->NetDevRegDone =1 ;return 0 ;
@@ -208,7 +208,7 @@ err_proc:unregister_netdev (ft1000dev->net);free_netdev (ft1000dev->net); err_thread: -kthread_stop (pft1000info->pPollThread); +kthread_stop (ft1000dev->pPollThread); err_load:kfree (pFileStart); err_fw:
@@ -219,6 +219,7 @@ err_fw:static void ft1000_disconnect (struct usb_interface *interface) {struct ft1000_info *pft1000info; +struct ft1000_device *ft1000dev;DEBUG ("ft1000_disconnect is called\n" );
@@ -226,28 +227,29 @@ static void ft1000_disconnect(struct usb_interface *interface)DEBUG ("In disconnect pft1000info=%p\n" , pft1000info);if (pft1000info) { + ft1000dev = pft1000info->priv;ft1000_cleanup_proc (pft1000info); -if (pft1000info->pPollThread) -kthread_stop (pft1000info->pPollThread); +if (ft1000dev->pPollThread) +kthread_stop (ft1000dev->pPollThread);DEBUG ("ft1000_disconnect: threads are terminated\n" ); -if (pft1000info->pFt1000Dev->net) { +if (ft1000dev->net) {DEBUG ("ft1000_disconnect: destroy char driver\n" ); -ft1000_destroy_dev (pft1000info->pFt1000Dev->net); -unregister_netdev (pft1000info->pFt1000Dev->net); +ft1000_destroy_dev (ft1000dev->net); +unregister_netdev (ft1000dev->net);DEBUG ("ft1000_disconnect: network device unregistered\n" ); -free_netdev (pft1000info->pFt1000Dev->net); +free_netdev (ft1000dev->net); } -usb_free_urb (pft1000info->pFt1000Dev->rx_urb); -usb_free_urb (pft1000info->pFt1000Dev->tx_urb); +usb_free_urb (ft1000dev->rx_urb); +usb_free_urb (ft1000dev->tx_urb);DEBUG ("ft1000_disconnect: urb freed\n" ); -kfree (pft1000info->pFt1000Dev); +kfree (ft1000dev); }kfree (pFileStart);
drivers/staging/ft1000/ft1000-usb/ft1000_usb.h +8 -46
85 lines not on this page · raw message
drivers/staging/ft1000/ft1000.h +35 -0
@@ -250,3 +250,38 @@ struct prov_record {struct list_head list;u8 *pprov_data; }; + +struct ft1000_info { +void *priv; +struct net_device_stats stats; +u16 DrvErrNum; +u16 AsicID; +int CardReady; +int registered; +int mediastate; +u8 squeseqnum;/* sequence number on slow queue */ +spinlock_t dpram_lock; +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 LedStat; +u16 ConStat; +u16 ProgConStat; +struct list_head prov_list; +u16 DSPInfoBlklen; +int (*ft1000_reset)(void *); +u16 DSPInfoBlk[MAX_DSP_SESS_REC ]; +union { +u16 Rec[MAX_DSP_SESS_REC ]; +u32 MagRec[MAX_DSP_SESS_REC /2 ]; + } DSPSess; +struct proc_dir_entry *ft1000_proc_dir; +char netdevname[IFNAMSIZ ]; +};
Signature · 1 line
Ondrej Zary
Quoted 4 lines · Ondrej Zary
Unify struct
ft1000_infobetween ft1000-usb and ft1000-pcmcia and move it to commonft1000.h.Signed-off-by Ondrej Zary <[email protected]>
Greg you can add my:
Tested-by Marek Belisko <[email protected]>
Review-by Marek Belisko <[email protected]>
Quoted 1,384 lines
--- drivers/staging/ft1000/ft1000-pcmcia/ft1000.h | 33 +----- drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c | 21 ++- drivers/staging/ft1000/ft1000-pcmcia/ft1000_proc.c | 10 +- drivers/staging/ft1000/ft1000-usb/ft1000_debug.c | 147 ++++++++++---------- .../staging/ft1000/ft1000-usb/ft1000_download.c | 70 +++++----- drivers/staging/ft1000/ft1000-usb/ft1000_hw.c | 100 +++++++------- drivers/staging/ft1000/ft1000-usb/ft1000_proc.c | 4 +- drivers/staging/ft1000/ft1000-usb/ft1000_usb.c | 30 ++-- drivers/staging/ft1000/ft1000-usb/ft1000_usb.h | 54 +------ drivers/staging/ft1000/ft1000.h | 35 +++++ 10 files changed, 238 insertions(+), 266 deletions(-)drivers/staging/ft1000/ft1000-pcmcia/ft1000.h +1
-32@@ -31,41 +31,10 @@#define SUCCESS 0x00#define FAILURE 0x01 -struct ft1000_info { -struct net_device_stats stats; -u16 DrvErrNum; -u16 AsicID; +struct ft1000_pcmcia {int PktIntfErr; -int CardReady; -int registered; -int mediastate;u16 packetseqnum; -u8 squeseqnum;/* sequence number on slow queue */ -spinlock_t dpram_lock; -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 */ -u16 LedStat; -u16 ConStat; -u16 ProgConStat; -u8 ProductMode[MODESZ ]; -u8 RfCalVer[CALVERSZ ]; -u8 RfCalDate[CALDATESZ ]; -u16 DSP_TIME[4 ]; -struct list_head prov_list; -u16 DSPInfoBlklen; -int (*ft1000_reset)(void *);void *link; -u16 DSPInfoBlk[MAX_DSP_SESS_REC ]; -union { -u16 Rec[MAX_DSP_SESS_REC ]; -u32 MagRec[MAX_DSP_SESS_REC /2 ]; - } DSPSess; -struct proc_dir_entry *proc_ft1000; -char netdevname[IFNAMSIZ ]; };struct pcmcia_device ;drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c +15
-6@@ -328,11 +328,12 @@ static void ft1000_disable_interrupts(struct net_device *dev)static void ft1000_reset_asic (struct net_device *dev) {struct ft1000_info *info =netdev_priv (dev); +struct ft1000_pcmcia *pcmcia = info->priv;u16 tempword;DEBUG (1 ,"ft1000_hw:ft1000_reset_asic called\n" ); - (*info->ft1000_reset) (info->link); + (*info->ft1000_reset) (pcmcia->link);// Let's use the register provided by the Magnemite ASIC to reset the // ASIC and DSP. @@ -1397,12 +1398,13 @@ static int ft1000_parse_dpram_msg(struct net_device *dev)static void ft1000_flush_fifo (struct net_device *dev,u16 DrvErrNum) {struct ft1000_info *info =netdev_priv (dev); +struct ft1000_pcmcia *pcmcia = info->priv;u16 i;u32 templong;u16 tempword;DEBUG (1 ,"ft1000:ft1000_hw:ft1000_flush_fifo called\n" ); -if (info->PktIntfErr >MAX_PH_ERR ) { +if (pcmcia->PktIntfErr >MAX_PH_ERR ) {if (info->AsicID ==ELECTRABUZZ_ID ) { info->DSP_TIME[0 ] =ft1000_read_dpram (dev,FT1000_DSP_TIMER0 );@@ -1491,7 +1493,7 @@ static void ft1000_flush_fifo(struct net_device *dev, u16 DrvErrNum)FIFO_FLUSH_BADCNT ; }else {// Let's assume that we really flush the FIFO - info->PktIntfErr++; + pcmcia->PktIntfErr++;return ; } }else {@@ -1522,7 +1524,7 @@ static void ft1000_flush_fifo(struct net_device *dev, u16 DrvErrNum)DEBUG (0 ,"FT1000_REG_MAG_DFSR = 0x%x\n" , tempword); }if (DrvErrNum) { - info->PktIntfErr++; + pcmcia->PktIntfErr++; } } }@@ -1731,6 +1733,7 @@ static int ft1000_copy_up_pkt(struct net_device *dev)static int ft1000_copy_down_pkt (struct net_device *dev,u16 * packet,u16 len) {struct ft1000_info *info =netdev_priv (dev); +struct ft1000_pcmcia *pcmcia = info->priv;union {struct pseudo_hdr blk;u16 buff[sizeof (struct pseudo_hdr ) >>1 ];@@ -1780,7 +1783,7 @@ static int ft1000_copy_down_pkt(struct net_device *dev, u16 * packet, u16 len) pseudo.blk.control =0 ; pseudo.blk.rsvd1 =0 ; pseudo.blk.seq_num =0 ; - pseudo.blk.rsvd2 = info->packetseqnum++; + pseudo.blk.rsvd2 = pcmcia->packetseqnum++; pseudo.blk.qos_class =0 ;/* Calculate pseudo header checksum */ pseudo.blk.checksum = pseudo.buff[0 ];@@ -2058,6 +2061,8 @@ void stop_ft1000_card(struct net_device *dev)kfree (ptr); } +kfree (info->priv); +if (info->registered) {unregister_netdev (dev); info->registered =0 ;@@ -2100,6 +2105,7 @@ struct net_device *init_ft1000_card(struct pcmcia_device *link, void *ft1000_reset) {struct ft1000_info *info; +struct ft1000_pcmcia *pcmcia;struct net_device *dev; static const struct net_device_ops ft1000ops = // Slavius 21.10.2009 due to kernel changes@@ -2141,10 +2147,13 @@ struct net_device *init_ft1000_card(struct pcmcia_device *link,memset (&info->stats,0 ,sizeof (struct net_device_stats )); + info->priv =kzalloc (sizeof (struct ft1000_pcmcia ),GFP_KERNEL ); + pcmcia = info->priv; + pcmcia->link = link; +spin_lock_init (&info->dpram_lock); info->DrvErrNum =0 ; info->registered =1 ; - info->link = link; info->ft1000_reset = ft1000_reset; info->mediastate =0 ; info->fifo_cnt =0 ;drivers/staging/ft1000/ft1000-pcmcia/ft1000_proc.c +5
-5@@ -175,8 +175,8 @@ static int ft1000NotifyProc(struct notifier_block *this, unsigned long event,switch (event) {case NETDEV_CHANGENAME : -remove_proc_entry (info->netdevname, info->proc_ft1000); -create_proc_read_entry (dev->name,0644 , info->proc_ft1000, +remove_proc_entry (info->netdevname, info->ft1000_proc_dir); +create_proc_read_entry (dev->name,0644 , info->ft1000_proc_dir, ft1000ReadProc, dev);snprintf (info->netdevname,IFNAMSIZ ,"%s" , dev->name);break ;@@ -194,8 +194,8 @@ void ft1000InitProc(struct net_device *dev) info =netdev_priv (dev); - info->proc_ft1000 =proc_mkdir (FT1000_PROC , init_net.proc_net); -create_proc_read_entry (dev->name,0644 , info->proc_ft1000, + info->ft1000_proc_dir =proc_mkdir (FT1000_PROC , init_net.proc_net); +create_proc_read_entry (dev->name,0644 , info->ft1000_proc_dir, ft1000ReadProc, dev);snprintf (info->netdevname,IFNAMSIZ ,"%s" , dev->name);register_netdevice_notifier (&ft1000_netdev_notifier);@@ -207,7 +207,7 @@ void ft1000CleanupProc(struct net_device *dev) info =netdev_priv (dev); -remove_proc_entry (dev->name, info->proc_ft1000); +remove_proc_entry (dev->name, info->ft1000_proc_dir);remove_proc_entry (FT1000_PROC , init_net.proc_net);unregister_netdevice_notifier (&ft1000_netdev_notifier); }drivers/staging/ft1000/ft1000-usb/ft1000_debug.c +74
-73@@ -139,27 +139,26 @@ void ft1000_free_buffer(struct dpram_blk *pdpram_blk, struct list_head *plist)//--------------------------------------------------------------------------- int ft1000_create_dev (struct ft1000_device *dev) { -struct ft1000_info *info =netdev_priv (dev->net);int result;int i;struct dentry *dir, *file;struct ft1000_debug_dirs *tmp;// make a new device name -sprintf (info->DeviceName,"%s%d" ,"FT1000_" , info->CardNumber); +sprintf (dev->DeviceName,"%s%d" ,"FT1000_" , dev->CardNumber);DEBUG ("%s: number of instance = %d\n" , __func__, ft1000_flarion_cnt); -DEBUG ("DeviceCreated = %x\n" , info->DeviceCreated); +DEBUG ("DeviceCreated = %x\n" , dev->DeviceCreated); -if (info->DeviceCreated) +if (dev->DeviceCreated) { -DEBUG ("%s: \"%s\" already registered\n" , __func__, info->DeviceName); +DEBUG ("%s: \"%s\" already registered\n" , __func__, dev->DeviceName);return -EIO ; }// register the device -DEBUG ("%s: \"%s\" debugfs device registration\n" , __func__, info->DeviceName); +DEBUG ("%s: \"%s\" debugfs device registration\n" , __func__, dev->DeviceName); tmp =kmalloc (sizeof (struct ft1000_debug_dirs ),GFP_KERNEL );if (tmp ==NULL ) {@@ -167,7 +166,7 @@ int ft1000_create_dev(struct ft1000_device *dev) goto fail; } - dir =debugfs_create_dir (info->DeviceName,NULL ); + dir =debugfs_create_dir (dev->DeviceName,NULL );if (IS_ERR (dir)) { result =PTR_ERR (dir); goto debug_dir_fail;@@ -182,27 +181,27 @@ int ft1000_create_dev(struct ft1000_device *dev) tmp->dent = dir; tmp->file = file; - tmp->int_number = info->CardNumber; -list_add (&(tmp->list), &(info->nodes.list)); + tmp->int_number = dev->CardNumber; +list_add (&(tmp->list), &(dev->nodes.list)); -DEBUG ("%s: registered debugfs directory \"%s\"\n" , __func__, info->DeviceName); +DEBUG ("%s: registered debugfs directory \"%s\"\n" , __func__, dev->DeviceName);// initialize application information - info->appcnt =0 ; + dev->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 =NULL ; - 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); + dev->app_info[i].nTxMsg =0 ; + dev->app_info[i].nRxMsg =0 ; + dev->app_info[i].nTxMsgReject =0 ; + dev->app_info[i].nRxMsgMiss =0 ; + dev->app_info[i].fileobject =NULL ; + dev->app_info[i].app_id = i+1 ; + dev->app_info[i].DspBCMsgFlag =0 ; + dev->app_info[i].NumOfMsg =0 ; +init_waitqueue_head (&dev->app_info[i].wait_dpram_msg); +INIT_LIST_HEAD (&dev->app_info[i].app_sqlist); } - info->DeviceCreated = TRUE; + dev->DeviceCreated = TRUE; ft1000_flarion_cnt++;return 0 ;@@ -225,9 +224,10 @@ fail:// Notes: Only called by cleanup_module(). // //--------------------------------------------------------------------------- -void ft1000_destroy_dev (struct net_device *dev) +void ft1000_destroy_dev (struct net_device *netdev) { -struct ft1000_info *info =netdev_priv (dev); +struct ft1000_info *info =netdev_priv (netdev); +struct ft1000_device *dev = info->priv;int i;struct dpram_blk *pdpram_blk;struct dpram_blk *ptr;@@ -238,12 +238,12 @@ void ft1000_destroy_dev(struct net_device *dev) -if (info->DeviceCreated) +if (dev->DeviceCreated) { ft1000_flarion_cnt--; -list_for_each_safe (pos, q, &info->nodes.list) { +list_for_each_safe (pos, q, &dev->nodes.list) { dir = list_entry(pos, struct ft1000_debug_dirs, list); -if (dir->int_number == info->CardNumber) { +if (dir->int_number == dev->CardNumber) {debugfs_remove (dir->file);debugfs_remove (dir->dent);list_del (pos);@@ -251,17 +251,17 @@ void ft1000_destroy_dev(struct net_device *dev) } }DEBUG ("%s: unregistered device \"%s\"\n" , __func__, - info->DeviceName); + dev->DeviceName);// 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, struct dpram_blk, list); +while (list_empty (&dev->app_info[i].app_sqlist) ==0 ) { + pdpram_blk = list_entry(dev->app_info[i].app_sqlist.next, struct dpram_blk, list);list_del (&pdpram_blk->list);ft1000_free_buffer (pdpram_blk, &freercvpool); } -wake_up_interruptible (&info->app_info[i].wait_dpram_msg); +wake_up_interruptible (&dev->app_info[i].wait_dpram_msg); }// Remove buffer allocated for receive command data @@ -273,7 +273,7 @@ void ft1000_destroy_dev(struct net_device *dev)kfree (ptr); } } - info->DeviceCreated = FALSE; + dev->DeviceCreated = FALSE; }@@ -301,17 +301,17 @@ static int ft1000_open (struct inode *inode, struct file *file) info = file->private_data =netdev_priv (dev->net); -DEBUG ("f_owner = %p number of application = %d\n" , (&file->f_owner), info->appcnt ); +DEBUG ("f_owner = %p number of application = %d\n" , (&file->f_owner), dev->appcnt );// Check if maximum number of application exceeded -if (info->appcnt >MAX_NUM_APP ) { +if (dev->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 ==NULL ) ) { +if ( (dev->app_info[i].fileobject ==NULL ) ) {break ; } }@@ -322,12 +322,12 @@ static int ft1000_open (struct inode *inode, struct file *file)return -EACCES ; } - info->appcnt++; - info->app_info[i].fileobject = &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 ; + dev->appcnt++; + dev->app_info[i].fileobject = &file->f_owner; + dev->app_info[i].nTxMsg =0 ; + dev->app_info[i].nRxMsg =0 ; + dev->app_info[i].nTxMsgReject =0 ; + dev->app_info[i].nRxMsgMiss =0 ;nonseekable_open (inode, file);return 0 ;@@ -347,8 +347,9 @@ static int ft1000_open (struct inode *inode, struct file *file)static unsigned int ft1000_poll_dev (struct file *file,poll_table *wait) { -struct net_device *dev = file->private_data; -struct ft1000_info *info; +struct net_device *netdev = file->private_data; +struct ft1000_info *info =netdev_priv (netdev); +struct ft1000_device *dev = info->priv;int i;//DEBUG("ft1000_poll_dev called\n"); @@ -357,12 +358,10 @@ static unsigned int ft1000_poll_dev(struct file *file, poll_table *wait)return (-EBADF ); } - info =netdev_priv (dev); -// Search for matching file object for (i=0 ; i<MAX_NUM_APP ; i++) { -if ( info->app_info[i].fileobject == &file->f_owner) { -//DEBUG("FT1000:ft1000_ioctl: Message is for AppId = %d\n", info->app_info[i].app_id); +if ( dev->app_info[i].fileobject == &file->f_owner) { +//DEBUG("FT1000:ft1000_ioctl: Message is for AppId = %d\n", dev->app_info[i].app_id); break ; } }@@ -373,12 +372,12 @@ static unsigned int ft1000_poll_dev(struct file *file, poll_table *wait)return ( -EACCES ); } -if (list_empty (&info->app_info[i].app_sqlist) ==0 ) { +if (list_empty (&dev->app_info[i].app_sqlist) ==0 ) {DEBUG ("FT1000:ft1000_poll_dev:Message detected in slow queue\n" );return (POLLIN |POLLRDNORM |POLLPRI ); } -poll_wait (file, &info->app_info[i].wait_dpram_msg, wait); +poll_wait (file, &dev->app_info[i].wait_dpram_msg, wait);//DEBUG("FT1000:ft1000_poll_dev:Polling for data from DSP\n"); return (0 );@@ -428,7 +427,7 @@ static long ft1000_ioctl (struct file *file, unsigned int command,//DEBUG("FT1000:ft1000_ioctl:command = 0x%x argument = 0x%8x\n", command, (u32)argument); info = file->private_data; - ft1000dev = info->pFt1000Dev; + ft1000dev = info->priv; cmd =_IOC_NR (command);//DEBUG("FT1000:ft1000_ioctl:cmd = 0x%x\n", cmd); @@ -444,8 +443,8 @@ static long ft1000_ioctl (struct file *file, unsigned int command,if (tempword ==DSPBCMSGID ) {// Search for matching file object for (i=0 ; i<MAX_NUM_APP ; i++) { -if ( info->app_info[i].fileobject == &file->f_owner) { - info->app_info[i].DspBCMsgFlag =1 ; +if (ft1000dev->app_info[i].fileobject == &file->f_owner) { + ft1000dev->app_info[i].DspBCMsgFlag =1 ;DEBUG ("FT1000:ft1000_ioctl:Registered for broadcast messages\n" );break ; }@@ -534,15 +533,15 @@ static long ft1000_ioctl (struct file *file, unsigned int command,return (-EBADF ); } -if (info->DrvMsgPend) { +if (ft1000dev->DrvMsgPend) {return (-ENOTTY ); } -if ( (info->DspAsicReset) || (info->fProvComplete ==0 ) ) { +if (ft1000dev->fProvComplete ==0 ) {return (-EACCES ); } - info->fAppMsgPend =1 ; + ft1000dev->fAppMsgPend =1 ;if (info->CardReady) {@@ -571,7 +570,7 @@ static long ft1000_ioctl (struct file *file, unsigned int command,else {// Check if this message came from a registered application for (i=0 ; i<MAX_NUM_APP ; i++) { -if ( info->app_info[i].fileobject == &file->f_owner) { +if (ft1000dev->app_info[i].fileobject == &file->f_owner) {break ; } }@@ -632,7 +631,7 @@ static long ft1000_ioctl (struct file *file, unsigned int command,// Insert slow queue sequence number ppseudo_hdr->seq_num = info->squeseqnum++; - ppseudo_hdr->portsrc = info->app_info[app_index].app_id; + ppseudo_hdr->portsrc = ft1000dev->app_info[app_index].app_id;// Calculate new checksum ppseudo_hdr->checksum = *pmsg++;//DEBUG("checksum = 0x%x\n", ppseudo_hdr->checksum); @@ -645,7 +644,7 @@ static long ft1000_ioctl (struct file *file, unsigned int command,card_send_command (ft1000dev,(unsigned short *)dpram_data,total_len+2 ); - info->app_info[app_index].nTxMsg++; + ft1000dev->app_info[app_index].nTxMsg++; }else { result = -EINVAL ;@@ -675,8 +674,8 @@ static long ft1000_ioctl (struct file *file, unsigned int command,// Search for matching file object for (i=0 ; i<MAX_NUM_APP ; i++) { -if ( info->app_info[i].fileobject == &file->f_owner) { -//DEBUG("FT1000:ft1000_ioctl: Message is for AppId = %d\n", info->app_info[i].app_id); +if (ft1000dev->app_info[i].fileobject == &file->f_owner) { +//DEBUG("FT1000:ft1000_ioctl: Message is for AppId = %d\n", ft1000dev->app_info[i].app_id); break ; } }@@ -690,13 +689,13 @@ static long ft1000_ioctl (struct file *file, unsigned int command, result =0 ; pioctl_dpram = argp; -if (list_empty (&info->app_info[i].app_sqlist) ==0 ) { +if (list_empty (&ft1000dev->app_info[i].app_sqlist) ==0 ) {//DEBUG("FT1000:ft1000_ioctl:Message detected in slow queue\n"); spin_lock_irqsave (&free_buff_lock, flags); - pdpram_blk = list_entry(info->app_info[i].app_sqlist.next, struct dpram_blk, list); + pdpram_blk = list_entry(ft1000dev->app_info[i].app_sqlist.next, struct dpram_blk, list);list_del (&pdpram_blk->list); - info->app_info[i].NumOfMsg--; -//DEBUG("FT1000:ft1000_ioctl:NumOfMsg for app %d = %d\n", i, info->app_info[i].NumOfMsg); + ft1000dev->app_info[i].NumOfMsg--; +//DEBUG("FT1000:ft1000_ioctl:NumOfMsg for app %d = %d\n", i, ft1000dev->app_info[i].NumOfMsg); spin_unlock_irqrestore (&free_buff_lock, flags); msglen =ntohs (*(u16 *)pdpram_blk->pbuffer) +PSEUDOSZ ; result =get_user (msglen, &pioctl_dpram->total_len);@@ -723,7 +722,7 @@ static long ft1000_ioctl (struct file *file, unsigned int command, result = -ENOTTY ;break ; } - info->fAppMsgPend =0 ; + ft1000dev->fAppMsgPend =0 ;return result; }@@ -741,6 +740,7 @@ static int ft1000_release (struct inode *inode, struct file *file) {struct ft1000_info *info;struct net_device *dev; +struct ft1000_device *ft1000dev;int i;struct dpram_blk *pdpram_blk;@@ -748,16 +748,17 @@ static int ft1000_release (struct inode *inode, struct file *file) dev = file->private_data; info =netdev_priv (dev); + ft1000dev = info->priv;if (ft1000_flarion_cnt ==0 ) { - info->appcnt--; + ft1000dev->appcnt--;return (-EBADF ); }// Search for matching file object for (i=0 ; i<MAX_NUM_APP ; i++) { -if ( info->app_info[i].fileobject == &file->f_owner) { -//DEBUG("FT1000:ft1000_ioctl: Message is for AppId = %d\n", info->app_info[i].app_id); +if ( ft1000dev->app_info[i].fileobject == &file->f_owner) { +//DEBUG("FT1000:ft1000_ioctl: Message is for AppId = %d\n", ft1000dev->app_info[i].app_id); break ; } }@@ -765,17 +766,17 @@ static int ft1000_release (struct inode *inode, struct file *file)if (i==MAX_NUM_APP )return 0 ; -while (list_empty (&info->app_info[i].app_sqlist) ==0 ) { +while (list_empty (&ft1000dev->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, struct dpram_blk, list); + pdpram_blk = list_entry(ft1000dev->app_info[i].app_sqlist.next, struct 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 =NULL ; + ft1000dev->appcnt--; +DEBUG ("ft1000_chdev:%s:appcnt = %d\n" , __FUNCTION__, ft1000dev->appcnt); + ft1000dev->app_info[i].fileobject =NULL ;return 0 ; }drivers/staging/ft1000/ft1000-usb/ft1000_download.c +32
-38@@ -188,7 +188,6 @@ static u16 get_handshake(struct ft1000_device *ft1000dev, u16 expected_value)u16 handshake;int loopcnt;u32 status =0 ; -struct ft1000_info *pft1000info =netdev_priv (ft1000dev->net); loopcnt =0 ;@@ -196,10 +195,10 @@ static u16 get_handshake(struct ft1000_device *ft1000dev, u16 expected_value)/* Need to clear downloader doorbell if Hartley ASIC */ status =ft1000_write_register (ft1000dev,FT1000_DB_DNLD_RX ,FT1000_REG_DOORBELL ); -if (pft1000info->fcodeldr) { +if (ft1000dev->fcodeldr) {DEBUG (" get_handshake: fcodeldr is %d\n" , - pft1000info->fcodeldr); - pft1000info->fcodeldr =0 ; + ft1000dev->fcodeldr); + ft1000dev->fcodeldr =0 ; status =check_usb_db (ft1000dev);if (status !=STATUS_SUCCESS ) {DEBUG ("get_handshake: check_usb_db failed\n" );@@ -270,29 +269,28 @@ static u16 get_handshake_usb(struct ft1000_device *ft1000dev, u16 expected_valueu16 temp;u32 status =0 ; -struct ft1000_info *pft1000info =netdev_priv (ft1000dev->net); loopcnt =0 ; handshake =0 ;while (loopcnt <100 ) { -if (pft1000info->usbboot ==2 ) { +if (ft1000dev->usbboot ==2 ) { status =ft1000_read_dpram32 (ft1000dev,0 , - (u8 *)&(pft1000info->tempbuf[0 ]),64 ); + (u8 *)&(ft1000dev->tempbuf[0 ]),64 );for (temp =0 ; temp <16 ; temp++) {DEBUG ("tempbuf %d = 0x%x\n" , temp, - pft1000info->tempbuf[temp]); + ft1000dev->tempbuf[temp]); } status =ft1000_read_dpram16 (ft1000dev,DWNLD_MAG1_HANDSHAKE_LOC , (u8 *)&handshake,1 );DEBUG ("handshake from read_dpram16 = 0x%x\n" , handshake); -if (pft1000info->dspalive == pft1000info->tempbuf[6 ]) { +if (ft1000dev->dspalive == ft1000dev->tempbuf[6 ]) { handshake =0 ; }else { - handshake = pft1000info->tempbuf[1 ]; - pft1000info->dspalive = - pft1000info->tempbuf[6 ]; + handshake = ft1000dev->tempbuf[1 ]; + ft1000dev->dspalive = + ft1000dev->tempbuf[6 ]; } }else { status = ft1000_read_dpram16(ft1000dev,@@ -336,9 +334,8 @@ static u16 get_request_type(struct ft1000_device *ft1000dev)u32 status;u16 tempword;u32 tempx; -struct ft1000_info *pft1000info =netdev_priv (ft1000dev->net); -if (pft1000info->bootmode ==1 ) { +if (ft1000dev->bootmode ==1 ) { status =fix_ft1000_read_dpram32 (ft1000dev,DWNLD_MAG1_TYPE_LOC , (u8 *)&tempx); tempx =ntohl (tempx);@@ -360,16 +357,15 @@ static u16 get_request_type_usb(struct ft1000_device *ft1000dev)u32 status;u16 tempword;u32 tempx; -struct ft1000_info *pft1000info =netdev_priv (ft1000dev->net); -if (pft1000info->bootmode ==1 ) { +if (ft1000dev->bootmode ==1 ) { status =fix_ft1000_read_dpram32 (ft1000dev,DWNLD_MAG1_TYPE_LOC , (u8 *)&tempx); tempx =ntohl (tempx); }else { -if (pft1000info->usbboot ==2 ) { - tempx = pft1000info->tempbuf[2 ]; - tempword = pft1000info->tempbuf[3 ]; +if (ft1000dev->usbboot ==2 ) { + tempx = ft1000dev->tempbuf[2 ]; + tempword = ft1000dev->tempbuf[3 ]; }else { tempx =0 ; status = ft1000_read_dpram16(ft1000dev,@@ -401,9 +397,8 @@ static long get_request_value(struct ft1000_device *ft1000dev)u32 value;u16 tempword;u32 status; -struct ft1000_info *pft1000info =netdev_priv (ft1000dev->net); -if (pft1000info->bootmode ==1 ) { +if (ft1000dev->bootmode ==1 ) { status =fix_ft1000_read_dpram32 (ft1000dev,DWNLD_MAG1_SIZE_LOC , (u8 *)&value); value =ntohl (value);@@ -507,7 +502,6 @@ static u32 write_blk (struct ft1000_device *ft1000dev, u16 **pUsFile, u8 **pUcFiu16 tempword;u16 tempbuffer[64 ];u16 resultbuffer[64 ]; -struct ft1000_info *pft1000info =netdev_priv (ft1000dev->net);//DEBUG("FT1000:download:start word_length = %d\n",(int)word_length); dpram = (u16 )DWNLD_MAG1_PS_HDR_LOC ;@@ -548,7 +542,7 @@ static u32 write_blk (struct ft1000_device *ft1000dev, u16 **pUsFile, u8 **pUcFi//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 (ft1000dev->bootmode ==0 ) {if (dpram >=0x3F4 ) Status =ft1000_write_dpram32 (ft1000dev, dpram, (u8 *)&tempbuffer[0 ],8 );@@ -718,9 +712,9 @@ u16 scram_dnldr(struct ft1000_device *ft1000dev, void *pFileStart,DEBUG ("Entered scram_dnldr...\n" ); - pft1000info->fcodeldr =0 ; - pft1000info->usbboot =0 ; - pft1000info->dspalive =0xffff ; + ft1000dev->fcodeldr =0 ; + ft1000dev->usbboot =0 ; + ft1000dev->dspalive =0xffff ;// // Get version id of file, at first 4 bytes of file, for newer files. @@ -745,7 +739,7 @@ u16 scram_dnldr(struct ft1000_device *ft1000dev, void *pFileStart,switch (state) {case STATE_START_DWNLD :DEBUG ("FT1000:STATE_START_DWNLD\n" ); -if (pft1000info->usbboot) +if (ft1000dev->usbboot) handshake =get_handshake_usb (ft1000dev,HANDSHAKE_DSP_BL_READY );@@ -771,7 +765,7 @@ u16 scram_dnldr(struct ft1000_device *ft1000dev, void *pFileStart,case STATE_BOOT_DWNLD :DEBUG ("FT1000:STATE_BOOT_DWNLD\n" ); - pft1000info->bootmode =1 ; + ft1000dev->bootmode =1 ; handshake =get_handshake (ft1000dev,HANDSHAKE_REQUEST );if (handshake ==HANDSHAKE_REQUEST ) {/* @@ -797,7 +791,7 @@ u16 scram_dnldr(struct ft1000_device *ft1000dev, void *pFileStart,//DEBUG("FT1000:download:s_file = 0x%8x\n", (int)s_file); //DEBUG("FT1000:download:c_file = 0x%8x\n", (int)c_file); state =STATE_CODE_DWNLD ; - pft1000info->fcodeldr =1 ; + ft1000dev->fcodeldr =1 ;break ;case REQUEST_CODE_SEGMENT ://DEBUG("FT1000:REQUEST_CODE_SEGMENT\n"); @@ -842,7 +836,7 @@ u16 scram_dnldr(struct ft1000_device *ft1000dev, void *pFileStart, status =STATUS_FAILURE ;break ; } -if (pft1000info->usbboot) +if (ft1000dev->usbboot)put_handshake_usb (ft1000dev,HANDSHAKE_RESPONSE );else @@ -858,8 +852,8 @@ u16 scram_dnldr(struct ft1000_device *ft1000dev, void *pFileStart,case STATE_CODE_DWNLD ://DEBUG("FT1000:STATE_CODE_DWNLD\n"); - pft1000info->bootmode =0 ; -if (pft1000info->usbboot) + ft1000dev->bootmode =0 ; +if (ft1000dev->usbboot) handshake =get_handshake_usb (ft1000dev,HANDSHAKE_REQUEST );@@ -870,7 +864,7 @@ u16 scram_dnldr(struct ft1000_device *ft1000dev, void *pFileStart,/* * Get type associated with the request. */ -if (pft1000info->usbboot) +if (ft1000dev->usbboot) request =get_request_type_usb (ft1000dev);else @@ -916,7 +910,7 @@ u16 scram_dnldr(struct ft1000_device *ft1000dev, void *pFileStart, }break ;case REQUEST_DONE_CL : - pft1000info->usbboot =3 ; + ft1000dev->usbboot =3 ;/* Reposition ptrs to beginning of provisioning section */ s_file = (u16 *) (pFileStart +@@ -965,9 +959,9 @@ u16 scram_dnldr(struct ft1000_device *ft1000dev, void *pFileStart,write_blk_fifo (ft1000dev, &s_file, &c_file, word_length); -if (pft1000info->usbboot ==0 ) - pft1000info->usbboot++; -if (pft1000info->usbboot ==1 ) { +if (ft1000dev->usbboot ==0 ) + ft1000dev->usbboot++; +if (ft1000dev->usbboot ==1 ) { tempword =0 ; ft1000_write_dpram16(ft1000dev, DWNLD_MAG1_PS_HDR_LOC,@@ -1117,7 +1111,7 @@ u16 scram_dnldr(struct ft1000_device *ft1000dev, void *pFileStart, status =STATUS_FAILURE ;break ; } -if (pft1000info->usbboot) +if (ft1000dev->usbboot)put_handshake_usb (ft1000dev,HANDSHAKE_RESPONSE );else drivers/staging/ft1000/ft1000-usb/ft1000_hw.c +50
-50@@ -29,7 +29,7 @@//#define JDEBUG -static int ft1000_reset (struct net_device *ft1000dev); +static int ft1000_reset (void *ft1000dev);static int ft1000_submit_rx_urb (struct ft1000_info *info);static int ft1000_start_xmit (struct sk_buff *skb,struct net_device *dev);static int ft1000_open (struct net_device *dev);@@ -588,7 +588,7 @@ int dsp_reload(struct ft1000_device *ft1000dev)static void ft1000_reset_asic (struct net_device *dev) {struct ft1000_info *info =netdev_priv (dev); -struct ft1000_device *ft1000dev = info->pFt1000Dev; +struct ft1000_device *ft1000dev = info->priv;u16 tempword;DEBUG ("ft1000_hw:ft1000_reset_asic called\n" );@@ -627,15 +627,15 @@ static void ft1000_reset_asic(struct net_device *dev)static int ft1000_reset_card (struct net_device *dev) {struct ft1000_info *info =netdev_priv (dev); -struct ft1000_device *ft1000dev = info->pFt1000Dev; +struct ft1000_device *ft1000dev = info->priv;u16 tempword;struct prov_record *ptr;DEBUG ("ft1000_hw:ft1000_reset_card called.....\n" ); - info->fCondResetPend =1 ; + ft1000dev->fCondResetPend =1 ; info->CardReady =0 ; - info->fProvComplete =0 ; + ft1000dev->fProvComplete =0 ;/* Make sure we free any memory reserve for provisioning */ while (list_empty (&info->prov_list) ==0 ) {@@ -666,7 +666,7 @@ static int ft1000_reset_card(struct net_device *dev) info->CardReady =1 ; - info->fCondResetPend =0 ; + ft1000dev->fCondResetPend =0 ;return TRUE; }@@ -729,8 +729,8 @@ int init_ft1000_netdev(struct ft1000_device *ft1000dev) goto err_net; } - pInfo->CardNumber = gCardIndex; -DEBUG ("card number = %d\n" , pInfo->CardNumber); + ft1000dev->CardNumber = gCardIndex; +DEBUG ("card number = %d\n" , ft1000dev->CardNumber); }else {printk (KERN_ERR "ft1000: Invalid device name\n" ); ret_val = -ENXIO ;@@ -740,27 +740,27 @@ int init_ft1000_netdev(struct ft1000_device *ft1000dev)memset (&pInfo->stats,0 ,sizeof (struct net_device_stats ));spin_lock_init (&pInfo->dpram_lock); - pInfo->pFt1000Dev = ft1000dev; + pInfo->priv = ft1000dev; pInfo->DrvErrNum =0 ; pInfo->registered =1 ; pInfo->ft1000_reset = ft1000_reset; pInfo->mediastate =0 ; pInfo->fifo_cnt =0 ; - pInfo->DeviceCreated = FALSE; + ft1000dev->DeviceCreated = FALSE; pInfo->CardReady =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 ; -memset (&pInfo->tempbuf[0 ],0 ,sizeof (pInfo->tempbuf)); + ft1000dev->fAppMsgPend =0 ; + ft1000dev->fCondResetPend =0 ; + ft1000dev->usbboot =0 ; + ft1000dev->dspalive =0 ; +memset (&ft1000dev->tempbuf[0 ],0 ,sizeof (ft1000dev->tempbuf));INIT_LIST_HEAD (&pInfo->prov_list); -INIT_LIST_HEAD (&pInfo->nodes.list); +INIT_LIST_HEAD (&ft1000dev->nodes.list); netdev->netdev_ops = &ftnet_ops;@@ -854,7 +854,7 @@ int reg_ft1000_netdev(struct ft1000_device *ft1000dev,return 0 ; } -static int ft1000_reset (struct net_device *dev) +int ft1000_reset (void *dev) {ft1000_reset_card (dev);return 0 ;@@ -902,7 +902,7 @@ static void ft1000_usb_transmit_complete(struct urb *urb)static int ft1000_copy_down_pkt (struct net_device *netdev,u8 * packet,u16 len) {struct ft1000_info *pInfo =netdev_priv (netdev); -struct ft1000_device *pFt1000Dev = pInfo->pFt1000Dev; +struct ft1000_device *pFt1000Dev = pInfo->priv;int count, ret;u8 *t;@@ -981,7 +981,7 @@ static 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) {struct ft1000_info *pInfo =netdev_priv (dev); -struct ft1000_device *pFt1000Dev = pInfo->pFt1000Dev; +struct ft1000_device *pFt1000Dev = pInfo->priv;u8 *pdata;int maxlen, pipe;@@ -1039,7 +1039,7 @@ err:static int ft1000_copy_up_pkt (struct urb *urb) {struct ft1000_info *info = urb->context; -struct ft1000_device *ft1000dev = info->pFt1000Dev; +struct ft1000_device *ft1000dev = info->priv;struct net_device *net = ft1000dev->net;u16 tempword;@@ -1134,7 +1134,7 @@ static int ft1000_copy_up_pkt(struct urb *urb)static int ft1000_submit_rx_urb (struct ft1000_info *info) {int result; -struct ft1000_device *pFt1000Dev = info->pFt1000Dev; +struct ft1000_device *pFt1000Dev = info->priv;if (pFt1000Dev->status &FT1000_STATUS_CLOSING ) {DEBUG ("network driver is closed, return\n" );@@ -1177,9 +1177,10 @@ static int ft1000_submit_rx_urb(struct ft1000_info *info)static int ft1000_open (struct net_device *dev) {struct ft1000_info *pInfo =netdev_priv (dev); +struct ft1000_device *pFt1000Dev = pInfo->priv;struct timeval tv; -DEBUG ("ft1000_open is called for card %d\n" , pInfo->CardNumber); +DEBUG ("ft1000_open is called for card %d\n" , pFt1000Dev->CardNumber); pInfo->stats.rx_bytes =0 ; pInfo->stats.tx_bytes =0 ;@@ -1213,7 +1214,7 @@ static int ft1000_open(struct net_device *dev)int ft1000_close (struct net_device *net) {struct ft1000_info *pInfo =netdev_priv (net); -struct ft1000_device *ft1000dev = pInfo->pFt1000Dev; +struct ft1000_device *ft1000dev = pInfo->priv; ft1000dev->status |=FT1000_STATUS_CLOSING ;@@ -1251,9 +1252,8 @@ static int ft1000_chkcard(struct ft1000_device *dev) {u16 tempword;u16 status; -struct ft1000_info *info =netdev_priv (dev->net); -if (info->fCondResetPend) { +if (dev->fCondResetPend) {DEBUG ("ft1000_hw:ft1000_chkcard:Card is being reset, return FALSE\n" );return TRUE;@@ -1441,7 +1441,7 @@ static int ft1000_dsp_prov(void *arg)msleep (100 ); - info->fProvComplete =1 ; + dev->fProvComplete =1 ; info->CardReady =1 ;return STATUS_SUCCESS ;@@ -1498,7 +1498,7 @@ static int ft1000_proc_drvmsg(struct ft1000_device *dev, u16 size)if (pmediamsg->state) {DEBUG ("Media is up\n" );if (info->mediastate ==0 ) { -if (info->NetDevRegDone) { +if (dev->NetDevRegDone) {netif_wake_queue (dev-> net); }@@ -1508,7 +1508,7 @@ static int ft1000_proc_drvmsg(struct ft1000_device *dev, u16 size)DEBUG ("Media is down\n" );if (info->mediastate ==1 ) { info->mediastate =0 ; -if (info->NetDevRegDone) { +if (dev->NetDevRegDone) { } info->ConTm =0 ; }@@ -1567,12 +1567,12 @@ static int ft1000_proc_drvmsg(struct ft1000_device *dev, u16 size)* Send provisioning data to DSP */ if (list_empty (&info->prov_list) ==0 ) { - info->fProvComplete =0 ; + dev->fProvComplete =0 ; status =ft1000_dsp_prov (dev);if (status !=STATUS_SUCCESS ) goto out; }else { - info->fProvComplete =1 ; + dev->fProvComplete =1 ; status =ft1000_write_register (dev,FT1000_DB_HB ,FT1000_REG_DOORBELL );@@ -1605,7 +1605,7 @@ static int ft1000_proc_drvmsg(struct ft1000_device *dev, u16 size)case DSP_GET_INFO :{DEBUG ("FT1000:drivermsg:Got DSP_GET_INFO\n" );/* copy dsp info block to dsp */ - info->DrvMsgPend =1 ; + dev->DrvMsgPend =1 ;/* allow any outstanding ioctl to finish */ mdelay (10 ); status =@@ -1667,7 +1667,7 @@ static int ft1000_proc_drvmsg(struct ft1000_device *dev, u16 size) status =ft1000_write_register (dev,FT1000_DB_DPRAM_TX ,FT1000_REG_DOORBELL ); - info->DrvMsgPend =0 ; + dev->DrvMsgPend =0 ;break ; }@@ -1675,7 +1675,7 @@ static int ft1000_proc_drvmsg(struct ft1000_device *dev, u16 size)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 ; + dev->DrvMsgPend =1 ;/* allow any outstanding ioctl to finish */ mdelay (10 ); status =@@ -1735,7 +1735,7 @@ static int ft1000_proc_drvmsg(struct ft1000_device *dev, u16 size) (u16) (0x0012 + PSEUDOSZ)); info->DrvErrNum =0 ; } - info->DrvMsgPend =0 ; + dev->DrvMsgPend =0 ;break ; }@@ -1804,8 +1804,8 @@ int ft1000_poll(void* dev_id)// Check which application has registered for dsp broadcast messages 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 ) ) +if ( (dev->app_info[i].DspBCMsgFlag) && (dev->app_info[i].fileobject) && + (dev->app_info[i].NumOfMsg <MAX_MSG_LIMIT ) ) { nxtph =FT1000_DPRAM_RX_BASE +2 ; pdpram_blk =ft1000_get_buffer (&freercvpool);@@ -1813,15 +1813,15 @@ int ft1000_poll(void* dev_id)if (ft1000_receive_cmd (dev, pdpram_blk->pbuffer,MAX_CMD_SQSIZE , &nxtph) ) { ppseudo_hdr = (struct pseudo_hdr *)pdpram_blk->pbuffer;// Put message into the appropriate application block - info->app_info[i].nRxMsg++; + dev->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++; +list_add_tail (&pdpram_blk->list, &dev->app_info[i].app_sqlist); + dev->app_info[i].NumOfMsg++;spin_unlock_irqrestore (&free_buff_lock, flags); -wake_up_interruptible (&info->app_info[i].wait_dpram_msg); +wake_up_interruptible (&dev->app_info[i].wait_dpram_msg); }else { - info->app_info[i].nRxMsgMiss++; + dev->app_info[i].nRxMsgMiss++;// Put memory back to free pool ft1000_free_buffer (pdpram_blk, &freercvpool);DEBUG ("pdpram_blk::ft1000_get_buffer NULL\n" );@@ -1829,7 +1829,7 @@ int ft1000_poll(void* dev_id) }else {DEBUG ("Out of memory in free receive command pool\n" ); - info->app_info[i].nRxMsgMiss++; + dev->app_info[i].nRxMsgMiss++; } } }@@ -1842,7 +1842,7 @@ int ft1000_poll(void* dev_id) ppseudo_hdr = (struct pseudo_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) { +if (dev->app_info[i].app_id == ppseudo_hdr->portdest) {break ; } }@@ -1853,15 +1853,15 @@ int ft1000_poll(void* dev_id)ft1000_free_buffer (pdpram_blk, &freercvpool); }else { -if (info->app_info[i].NumOfMsg >MAX_MSG_LIMIT ) { +if (dev->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++; + dev->app_info[i].nRxMsg++;// Put message into the appropriate application block -list_add_tail (&pdpram_blk->list, &info->app_info[i].app_sqlist); - info->app_info[i].NumOfMsg++; +list_add_tail (&pdpram_blk->list, &dev->app_info[i].app_sqlist); + dev->app_info[i].NumOfMsg++; } } }@@ -1921,7 +1921,7 @@ int ft1000_poll(void* dev_id)else if (tempword &FT1000_DB_COND_RESET ) {DEBUG ("ft1000_poll: FT1000_REG_DOORBELL message type: FT1000_DB_COND_RESET\n" ); -if (info->fAppMsgPend ==0 ) { +if (dev->fAppMsgPend ==0 ) {// Reset ASIC and DSP status =ft1000_read_dpram16 (dev,FT1000_MAG_DSP_TIMER0 , (u8 *)&(info->DSP_TIME[0 ]),FT1000_MAG_DSP_TIMER0_INDX );@@ -1934,8 +1934,8 @@ int ft1000_poll(void* dev_id) info->ft1000_reset (dev->net); }else { - info->fProvComplete =0 ; - info->fCondResetPend =1 ; + dev->fProvComplete =0 ; + dev->fCondResetPend =1 ; }ft1000_write_register (dev,FT1000_DB_COND_RESET ,FT1000_REG_DOORBELL );drivers/staging/ft1000/ft1000-usb/ft1000_proc.c +2
-2@@ -94,11 +94,11 @@ ft1000ReadProc(char *page, char **start, off_t off, int count, int *eof,if (info->ProgConStat !=0xFF ) { -ft1000_read_dpram16 (info->pFt1000Dev,FT1000_MAG_DSP_LED , +ft1000_read_dpram16 (info->priv,FT1000_MAG_DSP_LED , (u8 *)&ledStat,FT1000_MAG_DSP_LED_INDX ); info->LedStat =ntohs (ledStat); -ft1000_read_dpram16 (info->pFt1000Dev,FT1000_MAG_DSP_CON_STATE , +ft1000_read_dpram16 (info->priv,FT1000_MAG_DSP_CON_STATE , (u8 *)&conStat,FT1000_MAG_DSP_CON_STATE_INDX ); info->ConStat =ntohs (conStat);do_gettimeofday (&tv);drivers/staging/ft1000/ft1000-usb/ft1000_usb.c +16
-14@@ -171,11 +171,11 @@ static int ft1000_probe(struct usb_interface *interface, } gPollingfailed = FALSE; - pft1000info->pPollThread = + ft1000dev->pPollThread =kthread_run (ft1000_poll_thread, ft1000dev,"ft1000_poll" ); -if (IS_ERR (pft1000info->pPollThread)) { - ret =PTR_ERR (pft1000info->pPollThread); +if (IS_ERR (ft1000dev->pPollThread)) { + ret =PTR_ERR (ft1000dev->pPollThread); goto err_load; }@@ -200,7 +200,7 @@ static int ft1000_probe(struct usb_interface *interface,if (ret) goto err_proc; - pft1000info->NetDevRegDone =1 ; + ft1000dev->NetDevRegDone =1 ;return 0 ;@@ -208,7 +208,7 @@ err_proc:unregister_netdev (ft1000dev->net);free_netdev (ft1000dev->net); err_thread: -kthread_stop (pft1000info->pPollThread); +kthread_stop (ft1000dev->pPollThread); err_load:kfree (pFileStart); err_fw:@@ -219,6 +219,7 @@ err_fw:static void ft1000_disconnect (struct usb_interface *interface) {struct ft1000_info *pft1000info; +struct ft1000_device *ft1000dev;DEBUG ("ft1000_disconnect is called\n" );@@ -226,28 +227,29 @@ static void ft1000_disconnect(struct usb_interface *interface)DEBUG ("In disconnect pft1000info=%p\n" , pft1000info);if (pft1000info) { + ft1000dev = pft1000info->priv;ft1000_cleanup_proc (pft1000info); -if (pft1000info->pPollThread) -kthread_stop (pft1000info->pPollThread); +if (ft1000dev->pPollThread) +kthread_stop (ft1000dev->pPollThread);DEBUG ("ft1000_disconnect: threads are terminated\n" ); -if (pft1000info->pFt1000Dev->net) { +if (ft1000dev->net) {DEBUG ("ft1000_disconnect: destroy char driver\n" ); -ft1000_destroy_dev (pft1000info->pFt1000Dev->net); -unregister_netdev (pft1000info->pFt1000Dev->net); +ft1000_destroy_dev (ft1000dev->net); +unregister_netdev (ft1000dev->net);DEBUG ("ft1000_disconnect: network device unregistered\n" ); -free_netdev (pft1000info->pFt1000Dev->net); +free_netdev (ft1000dev->net); } -usb_free_urb (pft1000info->pFt1000Dev->rx_urb); -usb_free_urb (pft1000info->pFt1000Dev->tx_urb); +usb_free_urb (ft1000dev->rx_urb); +usb_free_urb (ft1000dev->tx_urb);DEBUG ("ft1000_disconnect: urb freed\n" ); -kfree (pft1000info->pFt1000Dev); +kfree (ft1000dev); }kfree (pFileStart);drivers/staging/ft1000/ft1000-usb/ft1000_usb.h +8
-46@@ -55,6 +55,13 @@ struct app_info_block {#define MAX_BUF_SIZE 4096 +struct ft1000_debug_dirs { +struct list_head list; +struct dentry *dent; +struct dentry *file; +int int_number; +}; +struct ft1000_device {struct usb_device *dev;struct net_device *net;@@ -69,71 +76,26 @@ struct ft1000_device {u8 bulk_in_endpointAddr;u8 bulk_out_endpointAddr; -} __packed; - -struct ft1000_debug_dirs { -struct list_head list; -struct dentry *dent; -struct dentry *file; -int int_number; -}; - -struct ft1000_info { -struct ft1000_device *pFt1000Dev; -struct net_device_stats stats;struct task_struct *pPollThread; -unsigned char fcodeldr;unsigned char bootmode;unsigned char usbboot;unsigned short dspalive; -u16 ASIC_ID;bool fProvComplete;bool fCondResetPend;bool fAppMsgPend; -u16 DrvErrNum; -u16 AsicID; -int DspAsicReset;int DeviceCreated; -int CardReady;int NetDevRegDone;u8 CardNumber;u8 DeviceName[15 ];struct ft1000_debug_dirs nodes; -int registered; -int mediastate; -u8 squeseqnum;/* sequence number on slow queue */ -spinlock_t dpram_lock;spinlock_t fifo_lock; -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 LedStat; -u16 ConStat; -u16 ProgConStat; -struct list_head prov_list;int appcnt;struct app_info_block app_info[MAX_NUM_APP ]; -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; -}; +} __packed;struct dpram_blk {drivers/staging/ft1000/ft1000.h +35
-1@@ -250,3 +250,38 @@ struct prov_record {struct list_head list;u8 *pprov_data; }; + +struct ft1000_info { +void *priv; +struct net_device_stats stats; +u16 DrvErrNum; +u16 AsicID; +int CardReady; +int registered; +int mediastate; +u8 squeseqnum;/* sequence number on slow queue */ +spinlock_t dpram_lock; +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 LedStat; +u16 ConStat; +u16 ProgConStat; +struct list_head prov_list; +u16 DSPInfoBlklen; +int (*ft1000_reset)(void *); +u16 DSPInfoBlk[MAX_DSP_SESS_REC ]; +union { +u16 Rec[MAX_DSP_SESS_REC ]; +u32 MagRec[MAX_DSP_SESS_REC /2 ]; + } DSPSess; +struct proc_dir_entry *ft1000_proc_dir; +char netdevname[IFNAMSIZ ]; +}; --
Quoted 1 line
Ondrej Zary
marek
Signature · 10 lines
as simple and primitive as possible ------------------------------------------------- Marek Belisko - OPEN-NANDRA Freelance Developer Ruska Nova Ves 219 | Presov, 08005 Slovak Republic Tel: +421 915 052 184 skype: marekwhite twitter: #opennandra web: http://open-nandra.com