|
@@ -1,20 +1,20 @@
|
|
|
/*---------------------------------------------------------------------------
|
|
|
- FT1000 driver for Flarion Flash OFDM NIC Device
|
|
|
-
|
|
|
- Copyright (C) 2002 Flarion Technologies, All rights reserved.
|
|
|
- Copyright (C) 2006 Patrik Ostrihon, All rights reserved.
|
|
|
- Copyright (C) 2006 ProWeb Consulting, a.s, All rights reserved.
|
|
|
-
|
|
|
- This program is free software; you can redistribute it and/or modify it
|
|
|
- under the terms of the GNU General Public License as published by the Free
|
|
|
- Software Foundation; either version 2 of the License, or (at your option) any
|
|
|
- later version. This program is distributed in the hope that it will be useful,
|
|
|
- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
|
- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
|
- more details. You should have received a copy of the GNU General Public
|
|
|
- License along with this program; if not, write to the
|
|
|
- Free Software Foundation, Inc., 59 Temple Place -
|
|
|
- Suite 330, Boston, MA 02111-1307, USA.
|
|
|
+ FT1000 driver for Flarion Flash OFDM NIC Device
|
|
|
+
|
|
|
+ Copyright (C) 2002 Flarion Technologies, All rights reserved.
|
|
|
+ Copyright (C) 2006 Patrik Ostrihon, All rights reserved.
|
|
|
+ Copyright (C) 2006 ProWeb Consulting, a.s, All rights reserved.
|
|
|
+
|
|
|
+ This program is free software; you can redistribute it and/or modify it
|
|
|
+ under the terms of the GNU General Public License as published by the Free
|
|
|
+ Software Foundation; either version 2 of the License, or (at your option) any
|
|
|
+ later version. This program is distributed in the hope that it will be useful,
|
|
|
+ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
|
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
|
+ more details. You should have received a copy of the GNU General Public
|
|
|
+ License along with this program; if not, write to the
|
|
|
+ Free Software Foundation, Inc., 59 Temple Place -
|
|
|
+ Suite 330, Boston, MA 02111-1307, USA.
|
|
|
-------------------------------------------------------------------------*/
|
|
|
|
|
|
#include <linux/kernel.h>
|
|
@@ -57,7 +57,7 @@ static const struct firmware *fw_entry;
|
|
|
|
|
|
static void ft1000_hbchk(u_long data);
|
|
|
static struct timer_list poll_timer = {
|
|
|
- .function = ft1000_hbchk
|
|
|
+ .function = ft1000_hbchk
|
|
|
};
|
|
|
|
|
|
static u16 cmdbuffer[1024];
|
|
@@ -72,7 +72,7 @@ static void ft1000_disable_interrupts(struct net_device *dev);
|
|
|
/* new kernel */
|
|
|
MODULE_AUTHOR("");
|
|
|
MODULE_DESCRIPTION
|
|
|
- ("Support for Flarion Flash OFDM NIC Device. Support for PCMCIA when used with ft1000_cs.");
|
|
|
+("Support for Flarion Flash OFDM NIC Device. Support for PCMCIA when used with ft1000_cs.");
|
|
|
MODULE_LICENSE("GPL");
|
|
|
MODULE_SUPPORTED_DEVICE("FT1000");
|
|
|
|
|
@@ -80,15 +80,15 @@ MODULE_SUPPORTED_DEVICE("FT1000");
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_read_fifo_len
|
|
|
- Description: This function will read the ASIC Uplink FIFO status register
|
|
|
- which will return the number of bytes remaining in the Uplink FIFO.
|
|
|
- Sixteen bytes are subtracted to make sure that the ASIC does not
|
|
|
- reach its threshold.
|
|
|
- Input:
|
|
|
- dev - network device structure
|
|
|
- Output:
|
|
|
- value - number of bytes available in the ASIC Uplink FIFO.
|
|
|
+ Function: ft1000_read_fifo_len
|
|
|
+ Description: This function will read the ASIC Uplink FIFO status register
|
|
|
+ which will return the number of bytes remaining in the Uplink FIFO.
|
|
|
+ Sixteen bytes are subtracted to make sure that the ASIC does not
|
|
|
+ reach its threshold.
|
|
|
+ Input:
|
|
|
+ dev - network device structure
|
|
|
+ Output:
|
|
|
+ value - number of bytes available in the ASIC Uplink FIFO.
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
static inline u16 ft1000_read_fifo_len(struct net_device *dev)
|
|
@@ -103,14 +103,14 @@ static inline u16 ft1000_read_fifo_len(struct net_device *dev)
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_read_dpram
|
|
|
- Description: This function will read the specific area of dpram
|
|
|
- (Electrabuzz ASIC only)
|
|
|
- Input:
|
|
|
- dev - device structure
|
|
|
- offset - index of dpram
|
|
|
- Output:
|
|
|
- value - value of dpram
|
|
|
+ Function: ft1000_read_dpram
|
|
|
+ Description: This function will read the specific area of dpram
|
|
|
+ (Electrabuzz ASIC only)
|
|
|
+ Input:
|
|
|
+ dev - device structure
|
|
|
+ offset - index of dpram
|
|
|
+ Output:
|
|
|
+ value - value of dpram
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
u16 ft1000_read_dpram(struct net_device *dev, int offset)
|
|
@@ -130,19 +130,19 @@ u16 ft1000_read_dpram(struct net_device *dev, int offset)
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_write_dpram
|
|
|
- Description: This function will write to a specific area of dpram
|
|
|
- (Electrabuzz ASIC only)
|
|
|
- Input:
|
|
|
- dev - device structure
|
|
|
- offset - index of dpram
|
|
|
- value - value to write
|
|
|
- Output:
|
|
|
- none.
|
|
|
+ Function: ft1000_write_dpram
|
|
|
+ Description: This function will write to a specific area of dpram
|
|
|
+ (Electrabuzz ASIC only)
|
|
|
+ Input:
|
|
|
+ dev - device structure
|
|
|
+ offset - index of dpram
|
|
|
+ value - value to write
|
|
|
+ Output:
|
|
|
+ none.
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
static inline void ft1000_write_dpram(struct net_device *dev,
|
|
|
- int offset, u16 value)
|
|
|
+ int offset, u16 value)
|
|
|
{
|
|
|
struct ft1000_info *info = netdev_priv(dev);
|
|
|
unsigned long flags;
|
|
@@ -156,14 +156,14 @@ static inline void ft1000_write_dpram(struct net_device *dev,
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_read_dpram_mag_16
|
|
|
- Description: This function will read the specific area of dpram
|
|
|
- (Magnemite ASIC only)
|
|
|
- Input:
|
|
|
- dev - device structure
|
|
|
- offset - index of dpram
|
|
|
- Output:
|
|
|
- value - value of dpram
|
|
|
+ Function: ft1000_read_dpram_mag_16
|
|
|
+ Description: This function will read the specific area of dpram
|
|
|
+ (Magnemite ASIC only)
|
|
|
+ Input:
|
|
|
+ dev - device structure
|
|
|
+ offset - index of dpram
|
|
|
+ Output:
|
|
|
+ value - value of dpram
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
u16 ft1000_read_dpram_mag_16(struct net_device *dev, int offset, int Index)
|
|
@@ -188,19 +188,19 @@ u16 ft1000_read_dpram_mag_16(struct net_device *dev, int offset, int Index)
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_write_dpram_mag_16
|
|
|
- Description: This function will write to a specific area of dpram
|
|
|
- (Magnemite ASIC only)
|
|
|
- Input:
|
|
|
- dev - device structure
|
|
|
- offset - index of dpram
|
|
|
- value - value to write
|
|
|
- Output:
|
|
|
- none.
|
|
|
+ Function: ft1000_write_dpram_mag_16
|
|
|
+ Description: This function will write to a specific area of dpram
|
|
|
+ (Magnemite ASIC only)
|
|
|
+ Input:
|
|
|
+ dev - device structure
|
|
|
+ offset - index of dpram
|
|
|
+ value - value to write
|
|
|
+ Output:
|
|
|
+ none.
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
static inline void ft1000_write_dpram_mag_16(struct net_device *dev,
|
|
|
- int offset, u16 value, int Index)
|
|
|
+ int offset, u16 value, int Index)
|
|
|
{
|
|
|
struct ft1000_info *info = netdev_priv(dev);
|
|
|
unsigned long flags;
|
|
@@ -218,14 +218,14 @@ static inline void ft1000_write_dpram_mag_16(struct net_device *dev,
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_read_dpram_mag_32
|
|
|
- Description: This function will read the specific area of dpram
|
|
|
- (Magnemite ASIC only)
|
|
|
- Input:
|
|
|
- dev - device structure
|
|
|
- offset - index of dpram
|
|
|
- Output:
|
|
|
- value - value of dpram
|
|
|
+ Function: ft1000_read_dpram_mag_32
|
|
|
+ Description: This function will read the specific area of dpram
|
|
|
+ (Magnemite ASIC only)
|
|
|
+ Input:
|
|
|
+ dev - device structure
|
|
|
+ offset - index of dpram
|
|
|
+ Output:
|
|
|
+ value - value of dpram
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
u32 ft1000_read_dpram_mag_32(struct net_device *dev, int offset)
|
|
@@ -245,15 +245,15 @@ u32 ft1000_read_dpram_mag_32(struct net_device *dev, int offset)
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_write_dpram_mag_32
|
|
|
- Description: This function will write to a specific area of dpram
|
|
|
- (Magnemite ASIC only)
|
|
|
- Input:
|
|
|
- dev - device structure
|
|
|
- offset - index of dpram
|
|
|
- value - value to write
|
|
|
- Output:
|
|
|
- none.
|
|
|
+ Function: ft1000_write_dpram_mag_32
|
|
|
+ Description: This function will write to a specific area of dpram
|
|
|
+ (Magnemite ASIC only)
|
|
|
+ Input:
|
|
|
+ dev - device structure
|
|
|
+ offset - index of dpram
|
|
|
+ value - value to write
|
|
|
+ Output:
|
|
|
+ none.
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
void ft1000_write_dpram_mag_32(struct net_device *dev, int offset, u32 value)
|
|
@@ -270,12 +270,12 @@ void ft1000_write_dpram_mag_32(struct net_device *dev, int offset, u32 value)
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_enable_interrupts
|
|
|
- Description: This function will enable interrupts base on the current interrupt mask.
|
|
|
- Input:
|
|
|
- dev - device structure
|
|
|
- Output:
|
|
|
- None.
|
|
|
+ Function: ft1000_enable_interrupts
|
|
|
+ Description: This function will enable interrupts base on the current interrupt mask.
|
|
|
+ Input:
|
|
|
+ dev - device structure
|
|
|
+ Output:
|
|
|
+ None.
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
static void ft1000_enable_interrupts(struct net_device *dev)
|
|
@@ -286,18 +286,18 @@ static void ft1000_enable_interrupts(struct net_device *dev)
|
|
|
ft1000_write_reg(dev, FT1000_REG_SUP_IMASK, ISR_DEFAULT_MASK);
|
|
|
tempword = ft1000_read_reg(dev, FT1000_REG_SUP_IMASK);
|
|
|
DEBUG(1,
|
|
|
- "ft1000_hw:ft1000_enable_interrupts:current interrupt enable mask = 0x%x\n",
|
|
|
- tempword);
|
|
|
+ "ft1000_hw:ft1000_enable_interrupts:current interrupt enable mask = 0x%x\n",
|
|
|
+ tempword);
|
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_disable_interrupts
|
|
|
- Description: This function will disable all interrupts.
|
|
|
- Input:
|
|
|
- dev - device structure
|
|
|
- Output:
|
|
|
- None.
|
|
|
+ Function: ft1000_disable_interrupts
|
|
|
+ Description: This function will disable all interrupts.
|
|
|
+ Input:
|
|
|
+ dev - device structure
|
|
|
+ Output:
|
|
|
+ None.
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
static void ft1000_disable_interrupts(struct net_device *dev)
|
|
@@ -308,19 +308,19 @@ static void ft1000_disable_interrupts(struct net_device *dev)
|
|
|
ft1000_write_reg(dev, FT1000_REG_SUP_IMASK, ISR_MASK_ALL);
|
|
|
tempword = ft1000_read_reg(dev, FT1000_REG_SUP_IMASK);
|
|
|
DEBUG(1,
|
|
|
- "ft1000_hw:ft1000_disable_interrupts:current interrupt enable mask = 0x%x\n",
|
|
|
- tempword);
|
|
|
+ "ft1000_hw:ft1000_disable_interrupts:current interrupt enable mask = 0x%x\n",
|
|
|
+ tempword);
|
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_reset_asic
|
|
|
- Description: This function will call the Card Service function to reset the
|
|
|
- ASIC.
|
|
|
- Input:
|
|
|
- dev - device structure
|
|
|
- Output:
|
|
|
- none
|
|
|
+ Function: ft1000_reset_asic
|
|
|
+ Description: This function will call the Card Service function to reset the
|
|
|
+ ASIC.
|
|
|
+ Input:
|
|
|
+ dev - device structure
|
|
|
+ Output:
|
|
|
+ none
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
static void ft1000_reset_asic(struct net_device *dev)
|
|
@@ -360,13 +360,13 @@ static void ft1000_reset_asic(struct net_device *dev)
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_reset_card
|
|
|
- Description: This function will reset the card
|
|
|
- Input:
|
|
|
- dev - device structure
|
|
|
- Output:
|
|
|
- status - false (card reset fail)
|
|
|
- true (card reset successful)
|
|
|
+ Function: ft1000_reset_card
|
|
|
+ Description: This function will reset the card
|
|
|
+ Input:
|
|
|
+ dev - device structure
|
|
|
+ Output:
|
|
|
+ status - false (card reset fail)
|
|
|
+ true (card reset successful)
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
static int ft1000_reset_card(struct net_device *dev)
|
|
@@ -389,7 +389,7 @@ static int ft1000_reset_card(struct net_device *dev)
|
|
|
/* Make sure we free any memory reserve for provisioning */
|
|
|
while (list_empty(&info->prov_list) == 0) {
|
|
|
DEBUG(0,
|
|
|
- "ft1000_hw:ft1000_reset_card:deleting provisioning record\n");
|
|
|
+ "ft1000_hw:ft1000_reset_card:deleting provisioning record\n");
|
|
|
ptr = list_entry(info->prov_list.next, struct prov_record, list);
|
|
|
list_del(&ptr->list);
|
|
|
kfree(ptr->pprov_data);
|
|
@@ -401,7 +401,7 @@ static int ft1000_reset_card(struct net_device *dev)
|
|
|
ft1000_write_reg(dev, FT1000_REG_RESET, DSP_RESET_BIT);
|
|
|
} else {
|
|
|
DEBUG(1,
|
|
|
- "ft1000_hw:ft1000_reset_card:resetting ASIC and DSP\n");
|
|
|
+ "ft1000_hw:ft1000_reset_card:resetting ASIC and DSP\n");
|
|
|
ft1000_write_reg(dev, FT1000_REG_RESET,
|
|
|
(DSP_RESET_BIT | ASIC_RESET_BIT));
|
|
|
}
|
|
@@ -438,7 +438,7 @@ static int ft1000_reset_card(struct net_device *dev)
|
|
|
if (info->AsicID == MAGNEMITE_ID) {
|
|
|
/* Put dsp in reset and take ASIC out of reset */
|
|
|
DEBUG(0,
|
|
|
- "ft1000_hw:ft1000_reset_card:Put DSP in reset and take ASIC out of reset\n");
|
|
|
+ "ft1000_hw:ft1000_reset_card:Put DSP in reset and take ASIC out of reset\n");
|
|
|
ft1000_write_reg(dev, FT1000_REG_RESET, DSP_RESET_BIT);
|
|
|
|
|
|
/* Setting MAGNEMITE ASIC to big endian mode */
|
|
@@ -465,7 +465,7 @@ static int ft1000_reset_card(struct net_device *dev)
|
|
|
|
|
|
if (i == 50) {
|
|
|
DEBUG(0,
|
|
|
- "ft1000_hw:ft1000_reset_card:No FEFE detected from DSP\n");
|
|
|
+ "ft1000_hw:ft1000_reset_card:No FEFE detected from DSP\n");
|
|
|
return false;
|
|
|
}
|
|
|
|
|
@@ -495,7 +495,7 @@ static int ft1000_reset_card(struct net_device *dev)
|
|
|
ft1000_write_dpram(dev, FT1000_HI_HO, ho);
|
|
|
tempword = ft1000_read_dpram(dev, FT1000_HI_HO);
|
|
|
DEBUG(1, "ft1000_hw:ft1000_reset_asic:hi_ho value = 0x%x\n",
|
|
|
- tempword);
|
|
|
+ tempword);
|
|
|
} else {
|
|
|
/* Initialize DSP heartbeat area to ho */
|
|
|
ft1000_write_dpram_mag_16(dev, FT1000_MAG_HI_HO, ho_mag,
|
|
@@ -504,7 +504,7 @@ static int ft1000_reset_card(struct net_device *dev)
|
|
|
ft1000_read_dpram_mag_16(dev, FT1000_MAG_HI_HO,
|
|
|
FT1000_MAG_HI_HO_INDX);
|
|
|
DEBUG(1, "ft1000_hw:ft1000_reset_card:hi_ho value = 0x%x\n",
|
|
|
- tempword);
|
|
|
+ tempword);
|
|
|
}
|
|
|
|
|
|
info->CardReady = 1;
|
|
@@ -521,14 +521,14 @@ static int ft1000_reset_card(struct net_device *dev)
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_chkcard
|
|
|
- Description: This function will check if the device is presently available on
|
|
|
- the system.
|
|
|
- Input:
|
|
|
- dev - device structure
|
|
|
- Output:
|
|
|
- status - false (device is not present)
|
|
|
- true (device is present)
|
|
|
+ Function: ft1000_chkcard
|
|
|
+ Description: This function will check if the device is presently available on
|
|
|
+ the system.
|
|
|
+ Input:
|
|
|
+ dev - device structure
|
|
|
+ Output:
|
|
|
+ status - false (device is not present)
|
|
|
+ true (device is present)
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
static int ft1000_chkcard(struct net_device *dev)
|
|
@@ -542,7 +542,7 @@ static int ft1000_chkcard(struct net_device *dev)
|
|
|
tempword = ft1000_read_reg(dev, FT1000_REG_SUP_IMASK);
|
|
|
if (tempword == 0) {
|
|
|
DEBUG(1,
|
|
|
- "ft1000_hw:ft1000_chkcard: IMASK = 0 Card not detected\n");
|
|
|
+ "ft1000_hw:ft1000_chkcard: IMASK = 0 Card not detected\n");
|
|
|
return false;
|
|
|
}
|
|
|
/*
|
|
@@ -552,7 +552,7 @@ static int ft1000_chkcard(struct net_device *dev)
|
|
|
tempword = ft1000_read_reg(dev, FT1000_REG_ASIC_ID);
|
|
|
if (tempword == 0xffff) {
|
|
|
DEBUG(1,
|
|
|
- "ft1000_hw:ft1000_chkcard: Version = 0xffff Card not detected\n");
|
|
|
+ "ft1000_hw:ft1000_chkcard: Version = 0xffff Card not detected\n");
|
|
|
return false;
|
|
|
}
|
|
|
return true;
|
|
@@ -561,13 +561,13 @@ static int ft1000_chkcard(struct net_device *dev)
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_hbchk
|
|
|
- Description: This function will perform the heart beat check of the DSP as
|
|
|
- well as the ASIC.
|
|
|
- Input:
|
|
|
- dev - device structure
|
|
|
- Output:
|
|
|
- none
|
|
|
+ Function: ft1000_hbchk
|
|
|
+ Description: This function will perform the heart beat check of the DSP as
|
|
|
+ well as the ASIC.
|
|
|
+ Input:
|
|
|
+ dev - device structure
|
|
|
+ Output:
|
|
|
+ none
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
static void ft1000_hbchk(u_long data)
|
|
@@ -586,11 +586,11 @@ static void ft1000_hbchk(u_long data)
|
|
|
} else {
|
|
|
tempword =
|
|
|
ntohs(ft1000_read_dpram_mag_16
|
|
|
- (dev, FT1000_MAG_HI_HO,
|
|
|
- FT1000_MAG_HI_HO_INDX));
|
|
|
+ (dev, FT1000_MAG_HI_HO,
|
|
|
+ FT1000_MAG_HI_HO_INDX));
|
|
|
}
|
|
|
DEBUG(1, "ft1000_hw:ft1000_hbchk:hi_ho value = 0x%x\n",
|
|
|
- tempword);
|
|
|
+ tempword);
|
|
|
/* Let's perform another check if ho is not detected */
|
|
|
if (tempword != ho) {
|
|
|
if (info->AsicID == ELECTRABUZZ_ID) {
|
|
@@ -602,7 +602,7 @@ static void ft1000_hbchk(u_long data)
|
|
|
}
|
|
|
if (tempword != ho) {
|
|
|
printk(KERN_INFO
|
|
|
- "ft1000: heartbeat failed - no ho detected\n");
|
|
|
+ "ft1000: heartbeat failed - no ho detected\n");
|
|
|
if (info->AsicID == ELECTRABUZZ_ID) {
|
|
|
info->DSP_TIME[0] =
|
|
|
ft1000_read_dpram(dev, FT1000_DSP_TIMER0);
|
|
@@ -633,7 +633,7 @@ static void ft1000_hbchk(u_long data)
|
|
|
info->DrvErrNum = DSP_HB_INFO;
|
|
|
if (ft1000_reset_card(dev) == 0) {
|
|
|
printk(KERN_INFO
|
|
|
- "ft1000: Hardware Failure Detected - PC Card disabled\n");
|
|
|
+ "ft1000: Hardware Failure Detected - PC Card disabled\n");
|
|
|
info->ProgConStat = 0xff;
|
|
|
return;
|
|
|
}
|
|
@@ -651,7 +651,7 @@ static void ft1000_hbchk(u_long data)
|
|
|
}
|
|
|
if (tempword & FT1000_DB_HB) {
|
|
|
printk(KERN_INFO
|
|
|
- "ft1000: heartbeat doorbell not clear by firmware\n");
|
|
|
+ "ft1000: heartbeat doorbell not clear by firmware\n");
|
|
|
if (info->AsicID == ELECTRABUZZ_ID) {
|
|
|
info->DSP_TIME[0] =
|
|
|
ft1000_read_dpram(dev, FT1000_DSP_TIMER0);
|
|
@@ -682,7 +682,7 @@ static void ft1000_hbchk(u_long data)
|
|
|
info->DrvErrNum = DSP_HB_INFO;
|
|
|
if (ft1000_reset_card(dev) == 0) {
|
|
|
printk(KERN_INFO
|
|
|
- "ft1000: Hardware Failure Detected - PC Card disabled\n");
|
|
|
+ "ft1000: Hardware Failure Detected - PC Card disabled\n");
|
|
|
info->ProgConStat = 0xff;
|
|
|
return;
|
|
|
}
|
|
@@ -708,8 +708,8 @@ static void ft1000_hbchk(u_long data)
|
|
|
} else {
|
|
|
tempword =
|
|
|
ntohs(ft1000_read_dpram_mag_16
|
|
|
- (dev, FT1000_MAG_HI_HO,
|
|
|
- FT1000_MAG_HI_HO_INDX));
|
|
|
+ (dev, FT1000_MAG_HI_HO,
|
|
|
+ FT1000_MAG_HI_HO_INDX));
|
|
|
}
|
|
|
/* Let's write hi again if fail */
|
|
|
if (tempword != hi) {
|
|
@@ -731,7 +731,7 @@ static void ft1000_hbchk(u_long data)
|
|
|
|
|
|
if (tempword != hi) {
|
|
|
printk(KERN_INFO
|
|
|
- "ft1000: heartbeat failed - cannot write hi into DPRAM\n");
|
|
|
+ "ft1000: heartbeat failed - cannot write hi into DPRAM\n");
|
|
|
if (info->AsicID == ELECTRABUZZ_ID) {
|
|
|
info->DSP_TIME[0] =
|
|
|
ft1000_read_dpram(dev, FT1000_DSP_TIMER0);
|
|
@@ -762,7 +762,7 @@ static void ft1000_hbchk(u_long data)
|
|
|
info->DrvErrNum = DSP_HB_INFO;
|
|
|
if (ft1000_reset_card(dev) == 0) {
|
|
|
printk(KERN_INFO
|
|
|
- "ft1000: Hardware Failure Detected - PC Card disabled\n");
|
|
|
+ "ft1000: Hardware Failure Detected - PC Card disabled\n");
|
|
|
info->ProgConStat = 0xff;
|
|
|
return;
|
|
|
}
|
|
@@ -778,19 +778,19 @@ static void ft1000_hbchk(u_long data)
|
|
|
|
|
|
/* Schedule this module to run every 2 seconds */
|
|
|
poll_timer.expires = jiffies + (2 * HZ);
|
|
|
- poll_timer.data = (u_long) dev;
|
|
|
+ poll_timer.data = (u_long)dev;
|
|
|
add_timer(&poll_timer);
|
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_send_cmd
|
|
|
- Description:
|
|
|
- Input:
|
|
|
- Output:
|
|
|
+ Function: ft1000_send_cmd
|
|
|
+ Description:
|
|
|
+ Input:
|
|
|
+ Output:
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
-static void ft1000_send_cmd (struct net_device *dev, u16 *ptempbuffer, int size, u16 qtype)
|
|
|
+static void ft1000_send_cmd(struct net_device *dev, u16 *ptempbuffer, int size, u16 qtype)
|
|
|
{
|
|
|
struct ft1000_info *info = netdev_priv(dev);
|
|
|
int i;
|
|
@@ -831,7 +831,7 @@ static void ft1000_send_cmd (struct net_device *dev, u16 *ptempbuffer, int size,
|
|
|
/* Write pseudo header and messgae body */
|
|
|
for (i = 0; i < (size >> 1); i++) {
|
|
|
DEBUG(1, "FT1000:ft1000_send_cmd:data %d = 0x%x\n", i,
|
|
|
- *ptempbuffer);
|
|
|
+ *ptempbuffer);
|
|
|
tempword = htons(*ptempbuffer++);
|
|
|
ft1000_write_reg(dev, FT1000_REG_DPRAM_DATA, tempword);
|
|
|
}
|
|
@@ -845,13 +845,13 @@ static void ft1000_send_cmd (struct net_device *dev, u16 *ptempbuffer, int size,
|
|
|
FT1000_DPRAM_MAG_TX_BASE + 1);
|
|
|
for (i = 0; i < (size >> 2); i++) {
|
|
|
DEBUG(1, "FT1000:ft1000_send_cmd:data = 0x%x\n",
|
|
|
- *ptempbuffer);
|
|
|
+ *ptempbuffer);
|
|
|
outw(*ptempbuffer++,
|
|
|
- dev->base_addr + FT1000_REG_MAG_DPDATAL);
|
|
|
+ dev->base_addr + FT1000_REG_MAG_DPDATAL);
|
|
|
DEBUG(1, "FT1000:ft1000_send_cmd:data = 0x%x\n",
|
|
|
- *ptempbuffer);
|
|
|
+ *ptempbuffer);
|
|
|
outw(*ptempbuffer++,
|
|
|
- dev->base_addr + FT1000_REG_MAG_DPDATAH);
|
|
|
+ dev->base_addr + FT1000_REG_MAG_DPDATAH);
|
|
|
}
|
|
|
DEBUG(1, "FT1000:ft1000_send_cmd:data = 0x%x\n", *ptempbuffer);
|
|
|
outw(*ptempbuffer++, dev->base_addr + FT1000_REG_MAG_DPDATAL);
|
|
@@ -866,19 +866,19 @@ static void ft1000_send_cmd (struct net_device *dev, u16 *ptempbuffer, int size,
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_receive_cmd
|
|
|
- Description: This function will read a message from the dpram area.
|
|
|
- Input:
|
|
|
- dev - network device structure
|
|
|
- pbuffer - caller supply address to buffer
|
|
|
- pnxtph - pointer to next pseudo header
|
|
|
- Output:
|
|
|
- Status = 0 (unsuccessful)
|
|
|
- = 1 (successful)
|
|
|
+ Function: ft1000_receive_cmd
|
|
|
+ Description: This function will read a message from the dpram area.
|
|
|
+ Input:
|
|
|
+ dev - network device structure
|
|
|
+ pbuffer - caller supply address to buffer
|
|
|
+ pnxtph - pointer to next pseudo header
|
|
|
+ Output:
|
|
|
+ Status = 0 (unsuccessful)
|
|
|
+ = 1 (successful)
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
static bool ft1000_receive_cmd(struct net_device *dev, u16 *pbuffer,
|
|
|
- int maxsz, u16 *pnxtph)
|
|
|
+ int maxsz, u16 *pnxtph)
|
|
|
{
|
|
|
struct ft1000_info *info = netdev_priv(dev);
|
|
|
u16 size;
|
|
@@ -888,20 +888,20 @@ static bool ft1000_receive_cmd(struct net_device *dev, u16 *pbuffer,
|
|
|
unsigned long flags;
|
|
|
|
|
|
if (info->AsicID == ELECTRABUZZ_ID) {
|
|
|
- size = ( ft1000_read_dpram(dev, *pnxtph) ) + sizeof(struct pseudo_hdr);
|
|
|
+ size = (ft1000_read_dpram(dev, *pnxtph)) + sizeof(struct pseudo_hdr);
|
|
|
} else {
|
|
|
size =
|
|
|
ntohs(ft1000_read_dpram_mag_16
|
|
|
- (dev, FT1000_MAG_PH_LEN,
|
|
|
- FT1000_MAG_PH_LEN_INDX)) + sizeof(struct pseudo_hdr);
|
|
|
+ (dev, FT1000_MAG_PH_LEN,
|
|
|
+ FT1000_MAG_PH_LEN_INDX)) + sizeof(struct pseudo_hdr);
|
|
|
}
|
|
|
if (size > maxsz) {
|
|
|
DEBUG(1,
|
|
|
- "FT1000:ft1000_receive_cmd:Invalid command length = %d\n",
|
|
|
- size);
|
|
|
+ "FT1000:ft1000_receive_cmd:Invalid command length = %d\n",
|
|
|
+ size);
|
|
|
return false;
|
|
|
} else {
|
|
|
- ppseudohdr = (u16 *) pbuffer;
|
|
|
+ ppseudohdr = (u16 *)pbuffer;
|
|
|
spin_lock_irqsave(&info->dpram_lock, flags);
|
|
|
if (info->AsicID == ELECTRABUZZ_ID) {
|
|
|
ft1000_write_reg(dev, FT1000_REG_DPRAM_ADDR,
|
|
@@ -922,11 +922,11 @@ static bool ft1000_receive_cmd(struct net_device *dev, u16 *pbuffer,
|
|
|
for (i = 0; i <= (size >> 2); i++) {
|
|
|
*pbuffer =
|
|
|
inw(dev->base_addr +
|
|
|
- FT1000_REG_MAG_DPDATAL);
|
|
|
+ FT1000_REG_MAG_DPDATAL);
|
|
|
pbuffer++;
|
|
|
*pbuffer =
|
|
|
inw(dev->base_addr +
|
|
|
- FT1000_REG_MAG_DPDATAH);
|
|
|
+ FT1000_REG_MAG_DPDATAH);
|
|
|
pbuffer++;
|
|
|
}
|
|
|
/* copy odd aligned word */
|
|
@@ -954,7 +954,7 @@ static bool ft1000_receive_cmd(struct net_device *dev, u16 *pbuffer,
|
|
|
}
|
|
|
if ((tempword != *ppseudohdr)) {
|
|
|
DEBUG(1,
|
|
|
- "FT1000:ft1000_receive_cmd:Pseudo header checksum mismatch\n");
|
|
|
+ "FT1000:ft1000_receive_cmd:Pseudo header checksum mismatch\n");
|
|
|
/* Drop this message */
|
|
|
return false;
|
|
|
}
|
|
@@ -964,13 +964,13 @@ static bool ft1000_receive_cmd(struct net_device *dev, u16 *pbuffer,
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_proc_drvmsg
|
|
|
- Description: This function will process the various driver messages.
|
|
|
- Input:
|
|
|
- dev - device structure
|
|
|
- pnxtph - pointer to next pseudo header
|
|
|
- Output:
|
|
|
- none
|
|
|
+ Function: ft1000_proc_drvmsg
|
|
|
+ Description: This function will process the various driver messages.
|
|
|
+ Input:
|
|
|
+ dev - device structure
|
|
|
+ pnxtph - pointer to next pseudo header
|
|
|
+ Output:
|
|
|
+ none
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
static void ft1000_proc_drvmsg(struct net_device *dev)
|
|
@@ -992,22 +992,22 @@ static void ft1000_proc_drvmsg(struct net_device *dev)
|
|
|
u16 wrd;
|
|
|
} convert;
|
|
|
|
|
|
- if (info->AsicID == ELECTRABUZZ_ID) {
|
|
|
- tempword = FT1000_DPRAM_RX_BASE+2;
|
|
|
- }
|
|
|
- else {
|
|
|
- tempword = FT1000_DPRAM_MAG_RX_BASE;
|
|
|
- }
|
|
|
- if (ft1000_receive_cmd(dev, &cmdbuffer[0], MAX_CMD_SQSIZE, &tempword)) {
|
|
|
+ if (info->AsicID == ELECTRABUZZ_ID) {
|
|
|
+ tempword = FT1000_DPRAM_RX_BASE+2;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ tempword = FT1000_DPRAM_MAG_RX_BASE;
|
|
|
+ }
|
|
|
+ if (ft1000_receive_cmd(dev, &cmdbuffer[0], MAX_CMD_SQSIZE, &tempword)) {
|
|
|
|
|
|
/* Get the message type which is total_len + PSEUDO header + msgtype + message body */
|
|
|
- pdrvmsg = (struct drv_msg *) & cmdbuffer[0];
|
|
|
+ pdrvmsg = (struct drv_msg *)&cmdbuffer[0];
|
|
|
msgtype = ntohs(pdrvmsg->type);
|
|
|
DEBUG(1, "Command message type = 0x%x\n", msgtype);
|
|
|
switch (msgtype) {
|
|
|
case DSP_PROVISION:
|
|
|
DEBUG(0,
|
|
|
- "Got a provisioning request message from DSP\n");
|
|
|
+ "Got a provisioning request message from DSP\n");
|
|
|
mdelay(25);
|
|
|
while (list_empty(&info->prov_list) == 0) {
|
|
|
DEBUG(0, "Sending a provisioning message\n");
|
|
@@ -1025,25 +1025,25 @@ static void ft1000_proc_drvmsg(struct net_device *dev)
|
|
|
ptr =
|
|
|
list_entry(info->prov_list.next,
|
|
|
struct prov_record, list);
|
|
|
- len = *(u16 *) ptr->pprov_data;
|
|
|
+ len = *(u16 *)ptr->pprov_data;
|
|
|
len = htons(len);
|
|
|
|
|
|
- pmsg = (u16 *) ptr->pprov_data;
|
|
|
- ppseudo_hdr = (struct pseudo_hdr *) pmsg;
|
|
|
+ pmsg = (u16 *)ptr->pprov_data;
|
|
|
+ ppseudo_hdr = (struct pseudo_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(1, "checksum = 0x%x\n",
|
|
|
- ppseudo_hdr->checksum);
|
|
|
+ ppseudo_hdr->checksum);
|
|
|
for (i = 1; i < 7; i++) {
|
|
|
ppseudo_hdr->checksum ^= *pmsg++;
|
|
|
DEBUG(1, "checksum = 0x%x\n",
|
|
|
- ppseudo_hdr->checksum);
|
|
|
+ ppseudo_hdr->checksum);
|
|
|
}
|
|
|
|
|
|
- ft1000_send_cmd (dev, (u16 *)ptr->pprov_data, len, SLOWQ_TYPE);
|
|
|
+ ft1000_send_cmd(dev, (u16 *)ptr->pprov_data, len, SLOWQ_TYPE);
|
|
|
list_del(&ptr->list);
|
|
|
kfree(ptr->pprov_data);
|
|
|
kfree(ptr);
|
|
@@ -1055,18 +1055,28 @@ static void ft1000_proc_drvmsg(struct net_device *dev)
|
|
|
info->CardReady = 1;
|
|
|
break;
|
|
|
case MEDIA_STATE:
|
|
|
- pmediamsg = (struct media_msg *) & cmdbuffer[0];
|
|
|
+ pmediamsg = (struct media_msg *)&cmdbuffer[0];
|
|
|
if (info->ProgConStat != 0xFF) {
|
|
|
- if (pmediamsg->state) {
|
|
|
- DEBUG(1, "Media is up\n");
|
|
|
- if (info->mediastate == 0) {
|
|
|
- netif_carrier_on(dev);
|
|
|
- netif_wake_queue(dev);
|
|
|
- info->mediastate = 1;
|
|
|
- do_gettimeofday(&tv);
|
|
|
- info->ConTm = tv.tv_sec;
|
|
|
+ if (pmediamsg->state) {
|
|
|
+ DEBUG(1, "Media is up\n");
|
|
|
+ if (info->mediastate == 0) {
|
|
|
+ netif_carrier_on(dev);
|
|
|
+ netif_wake_queue(dev);
|
|
|
+ info->mediastate = 1;
|
|
|
+ do_gettimeofday(&tv);
|
|
|
+ info->ConTm = tv.tv_sec;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ DEBUG(1, "Media is down\n");
|
|
|
+ if (info->mediastate == 1) {
|
|
|
+ info->mediastate = 0;
|
|
|
+ netif_carrier_off(dev);
|
|
|
+ netif_stop_queue(dev);
|
|
|
+ info->ConTm = 0;
|
|
|
+ }
|
|
|
}
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
DEBUG(1, "Media is down\n");
|
|
|
if (info->mediastate == 1) {
|
|
|
info->mediastate = 0;
|
|
@@ -1075,25 +1085,15 @@ static void ft1000_proc_drvmsg(struct net_device *dev)
|
|
|
info->ConTm = 0;
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- else {
|
|
|
- DEBUG(1, "Media is down\n");
|
|
|
- if (info->mediastate == 1) {
|
|
|
- info->mediastate = 0;
|
|
|
- netif_carrier_off(dev);
|
|
|
- netif_stop_queue(dev);
|
|
|
- info->ConTm = 0;
|
|
|
- }
|
|
|
- }
|
|
|
break;
|
|
|
case DSP_INIT_MSG:
|
|
|
- pdspinitmsg = (struct dsp_init_msg *) & cmdbuffer[0];
|
|
|
+ pdspinitmsg = (struct dsp_init_msg *)&cmdbuffer[0];
|
|
|
memcpy(info->DspVer, pdspinitmsg->DspVer, DSPVERSZ);
|
|
|
DEBUG(1, "DSPVER = 0x%2x 0x%2x 0x%2x 0x%2x\n",
|
|
|
- info->DspVer[0], info->DspVer[1], info->DspVer[2],
|
|
|
- info->DspVer[3]);
|
|
|
+ info->DspVer[0], info->DspVer[1], info->DspVer[2],
|
|
|
+ info->DspVer[3]);
|
|
|
memcpy(info->HwSerNum, pdspinitmsg->HwSerNum,
|
|
|
- HWSERNUMSZ);
|
|
|
+ HWSERNUMSZ);
|
|
|
memcpy(info->Sku, pdspinitmsg->Sku, SKUSZ);
|
|
|
memcpy(info->eui64, pdspinitmsg->eui64, EUISZ);
|
|
|
dev->dev_addr[0] = info->eui64[0];
|
|
@@ -1104,28 +1104,28 @@ static void ft1000_proc_drvmsg(struct net_device *dev)
|
|
|
dev->dev_addr[5] = info->eui64[7];
|
|
|
|
|
|
if (ntohs(pdspinitmsg->length) ==
|
|
|
- (sizeof(struct dsp_init_msg) - 20)) {
|
|
|
+ (sizeof(struct dsp_init_msg) - 20)) {
|
|
|
memcpy(info->ProductMode,
|
|
|
- pdspinitmsg->ProductMode, MODESZ);
|
|
|
+ pdspinitmsg->ProductMode, MODESZ);
|
|
|
memcpy(info->RfCalVer, pdspinitmsg->RfCalVer,
|
|
|
- CALVERSZ);
|
|
|
+ CALVERSZ);
|
|
|
memcpy(info->RfCalDate, pdspinitmsg->RfCalDate,
|
|
|
- CALDATESZ);
|
|
|
+ CALDATESZ);
|
|
|
DEBUG(1, "RFCalVer = 0x%2x 0x%2x\n",
|
|
|
- info->RfCalVer[0], info->RfCalVer[1]);
|
|
|
+ info->RfCalVer[0], info->RfCalVer[1]);
|
|
|
}
|
|
|
|
|
|
- break ;
|
|
|
+ break;
|
|
|
case DSP_STORE_INFO:
|
|
|
DEBUG(1, "FT1000:drivermsg:Got DSP_STORE_INFO\n");
|
|
|
tempword = ntohs(pdrvmsg->length);
|
|
|
info->DSPInfoBlklen = tempword;
|
|
|
if (tempword < (MAX_DSP_SESS_REC - 4)) {
|
|
|
- pmsg = (u16 *) & pdrvmsg->data[0];
|
|
|
+ pmsg = (u16 *)&pdrvmsg->data[0];
|
|
|
for (i = 0; i < ((tempword + 1) / 2); i++) {
|
|
|
DEBUG(1,
|
|
|
- "FT1000:drivermsg:dsp info data = 0x%x\n",
|
|
|
- *pmsg);
|
|
|
+ "FT1000:drivermsg:dsp info data = 0x%x\n",
|
|
|
+ *pmsg);
|
|
|
info->DSPInfoBlk[i + 10] = *pmsg++;
|
|
|
}
|
|
|
}
|
|
@@ -1152,8 +1152,8 @@ static void ft1000_proc_drvmsg(struct net_device *dev)
|
|
|
* Put message into Slow Queue
|
|
|
* Form Pseudo header
|
|
|
*/
|
|
|
- pmsg = (u16 *) info->DSPInfoBlk;
|
|
|
- ppseudo_hdr = (struct pseudo_hdr *) pmsg;
|
|
|
+ pmsg = (u16 *)info->DSPInfoBlk;
|
|
|
+ ppseudo_hdr = (struct pseudo_hdr *)pmsg;
|
|
|
ppseudo_hdr->length =
|
|
|
htons(info->DSPInfoBlklen + 4);
|
|
|
ppseudo_hdr->source = 0x10;
|
|
@@ -1177,7 +1177,7 @@ static void ft1000_proc_drvmsg(struct net_device *dev)
|
|
|
info->DSPInfoBlk[8] = 0x7200;
|
|
|
info->DSPInfoBlk[9] =
|
|
|
htons(info->DSPInfoBlklen);
|
|
|
- ft1000_send_cmd (dev, (u16 *)info->DSPInfoBlk, (u16)(info->DSPInfoBlklen+4), 0);
|
|
|
+ ft1000_send_cmd(dev, (u16 *)info->DSPInfoBlk, (u16)(info->DSPInfoBlklen+4), 0);
|
|
|
}
|
|
|
|
|
|
break;
|
|
@@ -1203,8 +1203,8 @@ static void ft1000_proc_drvmsg(struct net_device *dev)
|
|
|
* Put message into Slow Queue
|
|
|
* Form Pseudo header
|
|
|
*/
|
|
|
- pmsg = (u16 *) & tempbuffer[0];
|
|
|
- ppseudo_hdr = (struct pseudo_hdr *) pmsg;
|
|
|
+ pmsg = (u16 *)&tempbuffer[0];
|
|
|
+ ppseudo_hdr = (struct pseudo_hdr *)pmsg;
|
|
|
ppseudo_hdr->length = htons(0x0012);
|
|
|
ppseudo_hdr->source = 0x10;
|
|
|
ppseudo_hdr->destination = 0x20;
|
|
@@ -1220,11 +1220,11 @@ static void ft1000_proc_drvmsg(struct net_device *dev)
|
|
|
/* 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 = (u16 *) &tempbuffer[16];
|
|
|
+ ppseudo_hdr->checksum = *pmsg++;
|
|
|
+ for (i = 1; i < 7; i++) {
|
|
|
+ ppseudo_hdr->checksum ^= *pmsg++;
|
|
|
+ }
|
|
|
+ pmsg = (u16 *)&tempbuffer[16];
|
|
|
*pmsg++ = htons(RSP_DRV_ERR_RPT_MSG);
|
|
|
*pmsg++ = htons(0x000e);
|
|
|
*pmsg++ = htons(info->DSP_TIME[0]);
|
|
@@ -1239,7 +1239,7 @@ static void ft1000_proc_drvmsg(struct net_device *dev)
|
|
|
*pmsg++ = convert.wrd;
|
|
|
*pmsg++ = htons(info->DrvErrNum);
|
|
|
|
|
|
- ft1000_send_cmd (dev, (u16 *)&tempbuffer[0], (u16)(0x0012), 0);
|
|
|
+ ft1000_send_cmd(dev, (u16 *)&tempbuffer[0], (u16)(0x0012), 0);
|
|
|
info->DrvErrNum = 0;
|
|
|
}
|
|
|
|
|
@@ -1252,14 +1252,14 @@ static void ft1000_proc_drvmsg(struct net_device *dev)
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_parse_dpram_msg
|
|
|
- Description: This function will parse the message received from the DSP
|
|
|
- via the DPRAM interface.
|
|
|
- Input:
|
|
|
- dev - device structure
|
|
|
- Output:
|
|
|
- status - FAILURE
|
|
|
- SUCCESS
|
|
|
+ Function: ft1000_parse_dpram_msg
|
|
|
+ Description: This function will parse the message received from the DSP
|
|
|
+ via the DPRAM interface.
|
|
|
+ Input:
|
|
|
+ dev - device structure
|
|
|
+ Output:
|
|
|
+ status - FAILURE
|
|
|
+ SUCCESS
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
static int ft1000_parse_dpram_msg(struct net_device *dev)
|
|
@@ -1290,7 +1290,7 @@ static int ft1000_parse_dpram_msg(struct net_device *dev)
|
|
|
FT1000_DPRAM_MAG_RX_BASE);
|
|
|
for (i = 0; i < MAX_DSP_SESS_REC / 2; i++) {
|
|
|
outl(info->DSPSess.MagRec[i],
|
|
|
- dev->base_addr + FT1000_REG_MAG_DPDATA);
|
|
|
+ dev->base_addr + FT1000_REG_MAG_DPDATA);
|
|
|
}
|
|
|
}
|
|
|
spin_unlock_irqrestore(&info->dpram_lock, flags);
|
|
@@ -1311,7 +1311,7 @@ static int ft1000_parse_dpram_msg(struct net_device *dev)
|
|
|
|
|
|
if (doorbell & FT1000_DSP_ASIC_RESET) {
|
|
|
DEBUG(0,
|
|
|
- "FT1000:ft1000_parse_dpram_msg: Got a dsp ASIC reset message\n");
|
|
|
+ "FT1000:ft1000_parse_dpram_msg: Got a dsp ASIC reset message\n");
|
|
|
ft1000_write_reg(dev, FT1000_REG_DOORBELL,
|
|
|
FT1000_DSP_ASIC_RESET);
|
|
|
udelay(200);
|
|
@@ -1320,7 +1320,7 @@ static int ft1000_parse_dpram_msg(struct net_device *dev)
|
|
|
|
|
|
if (doorbell & FT1000_DB_DPRAM_RX) {
|
|
|
DEBUG(1,
|
|
|
- "FT1000:ft1000_parse_dpram_msg: Got a slow queue message\n");
|
|
|
+ "FT1000:ft1000_parse_dpram_msg: Got a slow queue message\n");
|
|
|
nxtph = FT1000_DPRAM_RX_BASE + 2;
|
|
|
if (info->AsicID == ELECTRABUZZ_ID) {
|
|
|
total_len =
|
|
@@ -1328,13 +1328,13 @@ static int ft1000_parse_dpram_msg(struct net_device *dev)
|
|
|
} else {
|
|
|
total_len =
|
|
|
ntohs(ft1000_read_dpram_mag_16
|
|
|
- (dev, FT1000_MAG_TOTAL_LEN,
|
|
|
- FT1000_MAG_TOTAL_LEN_INDX));
|
|
|
+ (dev, FT1000_MAG_TOTAL_LEN,
|
|
|
+ FT1000_MAG_TOTAL_LEN_INDX));
|
|
|
}
|
|
|
DEBUG(1, "FT1000:ft1000_parse_dpram_msg:total length = %d\n",
|
|
|
- total_len);
|
|
|
+ total_len);
|
|
|
if ((total_len < MAX_CMD_SQSIZE) && (total_len > sizeof(struct pseudo_hdr))) {
|
|
|
- total_len += nxtph;
|
|
|
+ total_len += nxtph;
|
|
|
/*
|
|
|
* ft1000_read_reg will return a value that needs to be byteswap
|
|
|
* in order to get DSP_QID_OFFSET.
|
|
@@ -1395,7 +1395,7 @@ static int ft1000_parse_dpram_msg(struct net_device *dev)
|
|
|
/* let's clear any unexpected doorbells from DSP */
|
|
|
doorbell =
|
|
|
doorbell & ~(FT1000_DB_DPRAM_RX | FT1000_ASIC_RESET_REQ |
|
|
|
- FT1000_DB_COND_RESET | 0xff00);
|
|
|
+ FT1000_DB_COND_RESET | 0xff00);
|
|
|
if (doorbell) {
|
|
|
DEBUG(1, "Clearing unexpected doorbell = 0x%x\n", doorbell);
|
|
|
ft1000_write_reg(dev, FT1000_REG_DOORBELL, doorbell);
|
|
@@ -1407,14 +1407,14 @@ static int ft1000_parse_dpram_msg(struct net_device *dev)
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_flush_fifo
|
|
|
- Description: This function will flush one packet from the downlink
|
|
|
- FIFO.
|
|
|
- Input:
|
|
|
- dev - device structure
|
|
|
- drv_err - driver error causing the flush fifo
|
|
|
- Output:
|
|
|
- None.
|
|
|
+ Function: ft1000_flush_fifo
|
|
|
+ Description: This function will flush one packet from the downlink
|
|
|
+ FIFO.
|
|
|
+ Input:
|
|
|
+ dev - device structure
|
|
|
+ drv_err - driver error causing the flush fifo
|
|
|
+ Output:
|
|
|
+ None.
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
static void ft1000_flush_fifo(struct net_device *dev, u16 DrvErrNum)
|
|
@@ -1512,7 +1512,7 @@ static void ft1000_flush_fifo(struct net_device *dev, u16 DrvErrNum)
|
|
|
*/
|
|
|
tempword =
|
|
|
inw(dev->base_addr +
|
|
|
- FT1000_REG_SUP_IMASK);
|
|
|
+ FT1000_REG_SUP_IMASK);
|
|
|
if (tempword == 0) {
|
|
|
/* This indicates that we can not communicate with the ASIC */
|
|
|
info->DrvErrNum =
|
|
@@ -1557,15 +1557,15 @@ static void ft1000_flush_fifo(struct net_device *dev, u16 DrvErrNum)
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_copy_up_pkt
|
|
|
- Description: This function will pull Flarion packets out of the Downlink
|
|
|
- FIFO and convert it to an ethernet packet. The ethernet packet will
|
|
|
- then be deliver to the TCP/IP stack.
|
|
|
- Input:
|
|
|
- dev - device structure
|
|
|
- Output:
|
|
|
- status - FAILURE
|
|
|
- SUCCESS
|
|
|
+ Function: ft1000_copy_up_pkt
|
|
|
+ Description: This function will pull Flarion packets out of the Downlink
|
|
|
+ FIFO and convert it to an ethernet packet. The ethernet packet will
|
|
|
+ then be deliver to the TCP/IP stack.
|
|
|
+ Input:
|
|
|
+ dev - device structure
|
|
|
+ Output:
|
|
|
+ status - FAILURE
|
|
|
+ SUCCESS
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
static int ft1000_copy_up_pkt(struct net_device *dev)
|
|
@@ -1616,7 +1616,7 @@ static int ft1000_copy_up_pkt(struct net_device *dev)
|
|
|
info->stats.rx_errors++;
|
|
|
return FAILURE;
|
|
|
}
|
|
|
- pbuffer = (u8 *) skb_put(skb, len + 12);
|
|
|
+ pbuffer = (u8 *)skb_put(skb, len + 12);
|
|
|
|
|
|
/* Pseudo header */
|
|
|
if (info->AsicID == ELECTRABUZZ_ID) {
|
|
@@ -1658,7 +1658,7 @@ static int ft1000_copy_up_pkt(struct net_device *dev)
|
|
|
|
|
|
if (chksum != tempword) {
|
|
|
DEBUG(0, "Packet checksum mismatch 0x%x 0x%x\n", chksum,
|
|
|
- tempword);
|
|
|
+ tempword);
|
|
|
ft1000_flush_fifo(dev, DSP_PKTPHCKSUM_INFO);
|
|
|
info->stats.rx_errors++;
|
|
|
kfree_skb(skb);
|
|
@@ -1685,7 +1685,7 @@ static int ft1000_copy_up_pkt(struct net_device *dev)
|
|
|
for (i = 0; i < len / 2; i++) {
|
|
|
tempword = ft1000_read_reg(dev, FT1000_REG_DFIFO);
|
|
|
*pbuffer++ = (u8) (tempword >> 8);
|
|
|
- *pbuffer++ = (u8) tempword;
|
|
|
+ *pbuffer++ = (u8)tempword;
|
|
|
if (ft1000_chkcard(dev) == false) {
|
|
|
kfree_skb(skb);
|
|
|
return FAILURE;
|
|
@@ -1698,7 +1698,7 @@ static int ft1000_copy_up_pkt(struct net_device *dev)
|
|
|
*pbuffer++ = (u8) (tempword >> 8);
|
|
|
}
|
|
|
} else {
|
|
|
- ptemplong = (u32 *) pbuffer;
|
|
|
+ ptemplong = (u32 *)pbuffer;
|
|
|
for (i = 0; i < len / 4; i++) {
|
|
|
templong = inl(dev->base_addr + FT1000_REG_MAG_DFR);
|
|
|
DEBUG(1, "Data = 0x%8x\n", templong);
|
|
@@ -1743,17 +1743,17 @@ static int ft1000_copy_up_pkt(struct net_device *dev)
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
- Function: ft1000_copy_down_pkt
|
|
|
- Description: This function will take an ethernet packet and convert it to
|
|
|
- a Flarion packet prior to sending it to the ASIC Downlink
|
|
|
- FIFO.
|
|
|
- Input:
|
|
|
- dev - device structure
|
|
|
- packet - address of ethernet packet
|
|
|
- len - length of IP packet
|
|
|
- Output:
|
|
|
- status - FAILURE
|
|
|
- SUCCESS
|
|
|
+ Function: ft1000_copy_down_pkt
|
|
|
+ Description: This function will take an ethernet packet and convert it to
|
|
|
+ a Flarion packet prior to sending it to the ASIC Downlink
|
|
|
+ FIFO.
|
|
|
+ Input:
|
|
|
+ dev - device structure
|
|
|
+ packet - address of ethernet packet
|
|
|
+ len - length of IP packet
|
|
|
+ Output:
|
|
|
+ status - FAILURE
|
|
|
+ SUCCESS
|
|
|
|
|
|
-------------------------------------------------------------------------*/
|
|
|
static int ft1000_copy_down_pkt(struct net_device *dev, u16 *packet, u16 len)
|
|
@@ -1790,7 +1790,7 @@ static int ft1000_copy_down_pkt(struct net_device *dev, u16 *packet, u16 len)
|
|
|
}
|
|
|
if (len > ft1000_read_fifo_len(dev)) {
|
|
|
DEBUG(1,
|
|
|
- "ft1000_hw:ft1000_copy_down_pkt:Transmit FIFO is fulli - pkt drop\n");
|
|
|
+ "ft1000_hw:ft1000_copy_down_pkt:Transmit FIFO is fulli - pkt drop\n");
|
|
|
info->stats.tx_errors++;
|
|
|
return SUCCESS;
|
|
|
}
|
|
@@ -1822,38 +1822,38 @@ static int ft1000_copy_down_pkt(struct net_device *dev, u16 *packet, u16 len)
|
|
|
/* copy first word to UFIFO_BEG reg */
|
|
|
ft1000_write_reg(dev, FT1000_REG_UFIFO_BEG, pseudo.buff[0]);
|
|
|
DEBUG(1, "ft1000_hw:ft1000_copy_down_pkt:data 0 BEG = 0x%04x\n",
|
|
|
- pseudo.buff[0]);
|
|
|
+ pseudo.buff[0]);
|
|
|
|
|
|
/* copy subsequent words to UFIFO_MID reg */
|
|
|
ft1000_write_reg(dev, FT1000_REG_UFIFO_MID, pseudo.buff[1]);
|
|
|
DEBUG(1, "ft1000_hw:ft1000_copy_down_pkt:data 1 MID = 0x%04x\n",
|
|
|
- pseudo.buff[1]);
|
|
|
+ pseudo.buff[1]);
|
|
|
ft1000_write_reg(dev, FT1000_REG_UFIFO_MID, pseudo.buff[2]);
|
|
|
DEBUG(1, "ft1000_hw:ft1000_copy_down_pkt:data 2 MID = 0x%04x\n",
|
|
|
- pseudo.buff[2]);
|
|
|
+ pseudo.buff[2]);
|
|
|
ft1000_write_reg(dev, FT1000_REG_UFIFO_MID, pseudo.buff[3]);
|
|
|
DEBUG(1, "ft1000_hw:ft1000_copy_down_pkt:data 3 MID = 0x%04x\n",
|
|
|
- pseudo.buff[3]);
|
|
|
+ pseudo.buff[3]);
|
|
|
ft1000_write_reg(dev, FT1000_REG_UFIFO_MID, pseudo.buff[4]);
|
|
|
DEBUG(1, "ft1000_hw:ft1000_copy_down_pkt:data 4 MID = 0x%04x\n",
|
|
|
- pseudo.buff[4]);
|
|
|
+ pseudo.buff[4]);
|
|
|
ft1000_write_reg(dev, FT1000_REG_UFIFO_MID, pseudo.buff[5]);
|
|
|
DEBUG(1, "ft1000_hw:ft1000_copy_down_pkt:data 5 MID = 0x%04x\n",
|
|
|
- pseudo.buff[5]);
|
|
|
+ pseudo.buff[5]);
|
|
|
ft1000_write_reg(dev, FT1000_REG_UFIFO_MID, pseudo.buff[6]);
|
|
|
DEBUG(1, "ft1000_hw:ft1000_copy_down_pkt:data 6 MID = 0x%04x\n",
|
|
|
- pseudo.buff[6]);
|
|
|
+ pseudo.buff[6]);
|
|
|
ft1000_write_reg(dev, FT1000_REG_UFIFO_MID, pseudo.buff[7]);
|
|
|
DEBUG(1, "ft1000_hw:ft1000_copy_down_pkt:data 7 MID = 0x%04x\n",
|
|
|
- pseudo.buff[7]);
|
|
|
+ pseudo.buff[7]);
|
|
|
|
|
|
/* Write PPP type + IP Packet into Downlink FIFO */
|
|
|
for (i = 0; i < (len >> 1) - 1; i++) {
|
|
|
ft1000_write_reg(dev, FT1000_REG_UFIFO_MID,
|
|
|
htons(*packet));
|
|
|
DEBUG(1,
|
|
|
- "ft1000_hw:ft1000_copy_down_pkt:data %d MID = 0x%04x\n",
|
|
|
- i + 8, htons(*packet));
|
|
|
+ "ft1000_hw:ft1000_copy_down_pkt:data %d MID = 0x%04x\n",
|
|
|
+ i + 8, htons(*packet));
|
|
|
packet++;
|
|
|
}
|
|
|
|
|
@@ -1862,40 +1862,40 @@ static int ft1000_copy_down_pkt(struct net_device *dev, u16 *packet, u16 len)
|
|
|
ft1000_write_reg(dev, FT1000_REG_UFIFO_MID,
|
|
|
htons(*packet));
|
|
|
DEBUG(1,
|
|
|
- "ft1000_hw:ft1000_copy_down_pkt:data MID = 0x%04x\n",
|
|
|
- htons(*packet));
|
|
|
+ "ft1000_hw:ft1000_copy_down_pkt:data MID = 0x%04x\n",
|
|
|
+ htons(*packet));
|
|
|
packet++;
|
|
|
ft1000_write_reg(dev, FT1000_REG_UFIFO_END,
|
|
|
htons(*packet));
|
|
|
DEBUG(1,
|
|
|
- "ft1000_hw:ft1000_copy_down_pkt:data %d MID = 0x%04x\n",
|
|
|
- i + 8, htons(*packet));
|
|
|
+ "ft1000_hw:ft1000_copy_down_pkt:data %d MID = 0x%04x\n",
|
|
|
+ i + 8, htons(*packet));
|
|
|
} else {
|
|
|
ft1000_write_reg(dev, FT1000_REG_UFIFO_END,
|
|
|
htons(*packet));
|
|
|
DEBUG(1,
|
|
|
- "ft1000_hw:ft1000_copy_down_pkt:data %d MID = 0x%04x\n",
|
|
|
- i + 8, htons(*packet));
|
|
|
+ "ft1000_hw:ft1000_copy_down_pkt:data %d MID = 0x%04x\n",
|
|
|
+ i + 8, htons(*packet));
|
|
|
}
|
|
|
} else {
|
|
|
- outl(*(u32 *) & pseudo.buff[0],
|
|
|
- dev->base_addr + FT1000_REG_MAG_UFDR);
|
|
|
+ outl(*(u32 *)&pseudo.buff[0],
|
|
|
+ dev->base_addr + FT1000_REG_MAG_UFDR);
|
|
|
DEBUG(1, "ft1000_copy_down_pkt: Pseudo = 0x%8x\n",
|
|
|
- *(u32 *) & pseudo.buff[0]);
|
|
|
- outl(*(u32 *) & pseudo.buff[2],
|
|
|
- dev->base_addr + FT1000_REG_MAG_UFDR);
|
|
|
+ *(u32 *)&pseudo.buff[0]);
|
|
|
+ outl(*(u32 *)&pseudo.buff[2],
|
|
|
+ dev->base_addr + FT1000_REG_MAG_UFDR);
|
|
|
DEBUG(1, "ft1000_copy_down_pkt: Pseudo = 0x%8x\n",
|
|
|
- *(u32 *) & pseudo.buff[2]);
|
|
|
- outl(*(u32 *) & pseudo.buff[4],
|
|
|
- dev->base_addr + FT1000_REG_MAG_UFDR);
|
|
|
+ *(u32 *)&pseudo.buff[2]);
|
|
|
+ outl(*(u32 *)&pseudo.buff[4],
|
|
|
+ dev->base_addr + FT1000_REG_MAG_UFDR);
|
|
|
DEBUG(1, "ft1000_copy_down_pkt: Pseudo = 0x%8x\n",
|
|
|
- *(u32 *) & pseudo.buff[4]);
|
|
|
- outl(*(u32 *) & pseudo.buff[6],
|
|
|
- dev->base_addr + FT1000_REG_MAG_UFDR);
|
|
|
+ *(u32 *)&pseudo.buff[4]);
|
|
|
+ outl(*(u32 *)&pseudo.buff[6],
|
|
|
+ dev->base_addr + FT1000_REG_MAG_UFDR);
|
|
|
DEBUG(1, "ft1000_copy_down_pkt: Pseudo = 0x%8x\n",
|
|
|
- *(u32 *) & pseudo.buff[6]);
|
|
|
+ *(u32 *)&pseudo.buff[6]);
|
|
|
|
|
|
- plong = (u32 *) packet;
|
|
|
+ plong = (u32 *)packet;
|
|
|
/* Write PPP type + IP Packet into Downlink FIFO */
|
|
|
for (i = 0; i < (len >> 2); i++) {
|
|
|
outl(*plong++, dev->base_addr + FT1000_REG_MAG_UFDR);
|
|
@@ -1904,8 +1904,8 @@ static int ft1000_copy_down_pkt(struct net_device *dev, u16 *packet, u16 len)
|
|
|
/* Check for odd alignment */
|
|
|
if (len & 0x0003) {
|
|
|
DEBUG(1,
|
|
|
- "ft1000_hw:ft1000_copy_down_pkt:data = 0x%8x\n",
|
|
|
- *plong);
|
|
|
+ "ft1000_hw:ft1000_copy_down_pkt:data = 0x%8x\n",
|
|
|
+ *plong);
|
|
|
outl(*plong++, dev->base_addr + FT1000_REG_MAG_UFDR);
|
|
|
}
|
|
|
outl(1, dev->base_addr + FT1000_REG_MAG_UFER);
|
|
@@ -1935,7 +1935,7 @@ static int ft1000_open(struct net_device *dev)
|
|
|
/* schedule ft1000_hbchk to perform periodic heartbeat checks on DSP and ASIC */
|
|
|
init_timer(&poll_timer);
|
|
|
poll_timer.expires = jiffies + (2 * HZ);
|
|
|
- poll_timer.data = (u_long) dev;
|
|
|
+ poll_timer.data = (u_long)dev;
|
|
|
add_timer(&poll_timer);
|
|
|
|
|
|
DEBUG(0, "ft1000_hw: ft1000_open is ended2\n");
|
|
@@ -1976,9 +1976,9 @@ static int ft1000_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
}
|
|
|
|
|
|
DEBUG(1, "ft1000_hw: ft1000_start_xmit:length of packet = %d\n",
|
|
|
- skb->len);
|
|
|
+ skb->len);
|
|
|
|
|
|
- pdata = (u8 *) skb->data;
|
|
|
+ pdata = (u8 *)skb->data;
|
|
|
|
|
|
if (info->mediastate == 0) {
|
|
|
/* Drop packet is mediastate is down */
|
|
@@ -1989,11 +1989,11 @@ static int ft1000_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
if ((skb->len < ENET_HEADER_SIZE) || (skb->len > ENET_MAX_SIZE)) {
|
|
|
/* Drop packet which has invalid size */
|
|
|
DEBUG(1,
|
|
|
- "ft1000_hw:ft1000_copy_down_pkt:invalid ethernet length\n");
|
|
|
+ "ft1000_hw:ft1000_copy_down_pkt:invalid ethernet length\n");
|
|
|
return SUCCESS;
|
|
|
}
|
|
|
ft1000_copy_down_pkt(dev, (u16 *) (pdata + ENET_HEADER_SIZE - 2),
|
|
|
- skb->len - ENET_HEADER_SIZE + 2);
|
|
|
+ skb->len - ENET_HEADER_SIZE + 2);
|
|
|
|
|
|
dev_kfree_skb(skb);
|
|
|
|
|
@@ -2038,12 +2038,12 @@ static irqreturn_t ft1000_interrupt(int irq, void *dev_id)
|
|
|
/* Check if we have packets in the Downlink FIFO */
|
|
|
if (info->AsicID == ELECTRABUZZ_ID) {
|
|
|
tempword =
|
|
|
- ft1000_read_reg(dev,
|
|
|
- FT1000_REG_DFIFO_STAT);
|
|
|
+ ft1000_read_reg(dev,
|
|
|
+ FT1000_REG_DFIFO_STAT);
|
|
|
} else {
|
|
|
tempword =
|
|
|
- ft1000_read_reg(dev,
|
|
|
- FT1000_REG_MAG_DFSR);
|
|
|
+ ft1000_read_reg(dev,
|
|
|
+ FT1000_REG_MAG_DFSR);
|
|
|
}
|
|
|
if (tempword & 0x1f) {
|
|
|
ft1000_copy_up_pkt(dev);
|
|
@@ -2060,7 +2060,7 @@ static irqreturn_t ft1000_interrupt(int irq, void *dev_id)
|
|
|
ft1000_write_reg(dev, FT1000_REG_SUP_ISR, tempword);
|
|
|
|
|
|
/* Read interrupt type */
|
|
|
- inttype = ft1000_read_reg (dev, FT1000_REG_SUP_ISR);
|
|
|
+ inttype = ft1000_read_reg(dev, FT1000_REG_SUP_ISR);
|
|
|
DEBUG(1, "ft1000_hw: interrupt status register after clear = 0x%x\n", inttype);
|
|
|
}
|
|
|
ft1000_enable_interrupts(dev);
|
|
@@ -2103,7 +2103,7 @@ void stop_ft1000_card(struct net_device *dev)
|
|
|
}
|
|
|
|
|
|
static void ft1000_get_drvinfo(struct net_device *dev,
|
|
|
- struct ethtool_drvinfo *info)
|
|
|
+ struct ethtool_drvinfo *info)
|
|
|
{
|
|
|
struct ft1000_info *ft_info;
|
|
|
ft_info = netdev_priv(dev);
|
|
@@ -2129,19 +2129,19 @@ static const struct ethtool_ops ops = {
|
|
|
};
|
|
|
|
|
|
struct net_device *init_ft1000_card(struct pcmcia_device *link,
|
|
|
- void *ft1000_reset)
|
|
|
+ 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 */
|
|
|
- {
|
|
|
- .ndo_open = &ft1000_open,
|
|
|
- .ndo_stop = &ft1000_close,
|
|
|
- .ndo_start_xmit = &ft1000_start_xmit,
|
|
|
- .ndo_get_stats = &ft1000_stats,
|
|
|
- };
|
|
|
+ {
|
|
|
+ .ndo_open = &ft1000_open,
|
|
|
+ .ndo_stop = &ft1000_close,
|
|
|
+ .ndo_start_xmit = &ft1000_start_xmit,
|
|
|
+ .ndo_get_stats = &ft1000_stats,
|
|
|
+ };
|
|
|
|
|
|
DEBUG(1, "ft1000_hw: init_ft1000_card()\n");
|
|
|
DEBUG(1, "ft1000_hw: irq = %d\n", link->irq);
|
|
@@ -2153,7 +2153,7 @@ struct net_device *init_ft1000_card(struct pcmcia_device *link,
|
|
|
flarion_ft1000_cnt--;
|
|
|
|
|
|
dev_info(&link->dev,
|
|
|
- "This driver can not support more than one instance\n");
|
|
|
+ "This driver can not support more than one instance\n");
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
@@ -2168,8 +2168,8 @@ struct net_device *init_ft1000_card(struct pcmcia_device *link,
|
|
|
|
|
|
memset(info, 0, sizeof(struct ft1000_info));
|
|
|
|
|
|
- DEBUG(1, "address of dev = 0x%8x\n", (u32) dev);
|
|
|
- DEBUG(1, "address of dev info = 0x%8x\n", (u32) info);
|
|
|
+ DEBUG(1, "address of dev = 0x%8x\n", (u32)dev);
|
|
|
+ DEBUG(1, "address of dev info = 0x%8x\n", (u32)info);
|
|
|
DEBUG(0, "device name = %s\n", dev->name);
|
|
|
|
|
|
memset(&info->stats, 0, sizeof(struct net_device_stats));
|
|
@@ -2246,7 +2246,7 @@ struct net_device *init_ft1000_card(struct pcmcia_device *link,
|
|
|
ft1000_card_present = 1;
|
|
|
dev->ethtool_ops = &ops;
|
|
|
printk(KERN_INFO "ft1000: %s: addr 0x%04lx irq %d, MAC addr %pM\n",
|
|
|
- dev->name, dev->base_addr, dev->irq, dev->dev_addr);
|
|
|
+ dev->name, dev->base_addr, dev->irq, dev->dev_addr);
|
|
|
return dev;
|
|
|
|
|
|
err_unreg:
|