summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/comedi/drivers/addi-data/addi_eeprom.c79
1 files changed, 34 insertions, 45 deletions
diff --git a/drivers/staging/comedi/drivers/addi-data/addi_eeprom.c b/drivers/staging/comedi/drivers/addi-data/addi_eeprom.c
index 306edc82fc08..935da6401887 100644
--- a/drivers/staging/comedi/drivers/addi-data/addi_eeprom.c
+++ b/drivers/staging/comedi/drivers/addi-data/addi_eeprom.c
@@ -208,7 +208,7 @@ static void v_EepromWaitBusy(unsigned long iobase)
}
static unsigned short w_EepromReadWord(unsigned long iobase,
- char *pc_PCIChipInformation,
+ char *type,
unsigned short w_EepromStartAddress)
{
unsigned char b_Counter = 0;
@@ -220,9 +220,7 @@ static unsigned short w_EepromReadWord(unsigned long iobase,
unsigned short w_ReadWord = 0;
/* Test the PCI chip type */
- if ((!strcmp(pc_PCIChipInformation, "S5920")) ||
- (!strcmp(pc_PCIChipInformation, "S5933")))
- {
+ if (!strcmp(type, "S5920") || !strcmp(type, "S5933")) {
for (b_Counter = 0; b_Counter < 2; b_Counter++)
{
b_SelectedAddressLow = (w_EepromStartAddress + b_Counter) % 256; /* Read the low 8 bit part */
@@ -276,10 +274,9 @@ static unsigned short w_EepromReadWord(unsigned long iobase,
} /* for (b_Counter=0; b_Counter<2; b_Counter++) */
w_ReadWord = (b_ReadLowByte | (((unsigned short) b_ReadHighByte) * 256));
- } /* end of if ((!strcmp(pc_PCIChipInformation, "S5920")) || (!strcmp(pc_PCIChipInformation, "S5933"))) */
+ }
- if (!strcmp(pc_PCIChipInformation, "93C76"))
- {
+ if (!strcmp(type, "93C76")) {
/* Read 16 bit from the EEPROM 93C76 */
v_EepromCs76Read(iobase, w_EepromStartAddress, &w_ReadWord);
}
@@ -288,43 +285,42 @@ static unsigned short w_EepromReadWord(unsigned long iobase,
}
static int i_EepromReadDigitalInputHeader(unsigned long iobase,
- char *pc_PCIChipInformation,
+ char *type,
unsigned short w_Address,
struct str_DigitalInputHeader *s_Header)
{
unsigned short w_Temp;
/* read nbr of channels */
- s_Header->w_Nchannel = w_EepromReadWord(iobase, pc_PCIChipInformation,
+ s_Header->w_Nchannel = w_EepromReadWord(iobase, type,
0x100 + w_Address + 6);
/* interruptible or not */
- w_Temp = w_EepromReadWord(iobase, pc_PCIChipInformation,
+ w_Temp = w_EepromReadWord(iobase, type,
0x100 + w_Address + 8);
s_Header->b_Interruptible = (unsigned char) (w_Temp >> 7) & 0x01;
/* How many interruptible logic */
- s_Header->w_NinterruptLogic = w_EepromReadWord(iobase,
- pc_PCIChipInformation,
+ s_Header->w_NinterruptLogic = w_EepromReadWord(iobase, type,
0x100 + w_Address + 10);
return 0;
}
static int i_EepromReadDigitalOutputHeader(unsigned long iobase,
- char *pc_PCIChipInformation,
+ char *type,
unsigned short w_Address,
struct str_DigitalOutputHeader *s_Header)
{
/* Read Nbr channels */
- s_Header->w_Nchannel = w_EepromReadWord(iobase, pc_PCIChipInformation,
+ s_Header->w_Nchannel = w_EepromReadWord(iobase, type,
0x100 + w_Address + 6);
return 0;
}
#if 0
static int i_EepromReadTimerHeader(unsigned long iobase,
- char *pc_PCIChipInformation,
+ char *type,
unsigned short w_Address,
struct str_TimerMainHeader *s_Header)
{
@@ -332,14 +328,14 @@ static int i_EepromReadTimerHeader(unsigned long iobase,
unsigned short i, w_Size = 0, w_Temp;
/* Read No of Timer */
- s_Header->w_Ntimer = w_EepromReadWord(iobase, pc_PCIChipInformation,
+ s_Header->w_Ntimer = w_EepromReadWord(iobase, type,
0x100 + w_Address + 6);
/* Read header size */
for (i = 0; i < s_Header->w_Ntimer; i++) {
s_Header->s_TimerDetails[i].w_HeaderSize =
- w_EepromReadWord(iobase, pc_PCIChipInformation,
+ w_EepromReadWord(iobase, type,
0x100 + w_Address + 8 + w_Size + 0);
- w_Temp = w_EepromReadWord(iobase, pc_PCIChipInformation,
+ w_Temp = w_EepromReadWord(iobase, type,
0x100 + w_Address + 8 + w_Size + 2);
/* Read Resolution */
@@ -350,7 +346,7 @@ static int i_EepromReadTimerHeader(unsigned long iobase,
s_Header->s_TimerDetails[i].b_Mode =
(unsigned char) (w_Temp >> 4) & 0x3F;
- w_Temp = w_EepromReadWord(iobase, pc_PCIChipInformation,
+ w_Temp = w_EepromReadWord(iobase, type,
0x100 + w_Address + 8 + w_Size + 4);
/* Read MinTiming */
@@ -366,18 +362,18 @@ static int i_EepromReadTimerHeader(unsigned long iobase,
#endif
static int i_EepromReadAnlogOutputHeader(unsigned long iobase,
- char *pc_PCIChipInformation,
+ char *type,
unsigned short w_Address,
struct str_AnalogOutputHeader *s_Header)
{
unsigned short w_Temp;
/* No of channels for 1st hard component */
- w_Temp = w_EepromReadWord(iobase, pc_PCIChipInformation,
+ w_Temp = w_EepromReadWord(iobase, type,
0x100 + w_Address + 10);
s_Header->w_Nchannel = (w_Temp >> 4) & 0x03FF;
/* Resolution for 1st hard component */
- w_Temp = w_EepromReadWord(iobase, pc_PCIChipInformation,
+ w_Temp = w_EepromReadWord(iobase, type,
0x100 + w_Address + 16);
s_Header->b_Resolution = (unsigned char) (w_Temp >> 8) & 0xFF;
return 0;
@@ -385,25 +381,23 @@ static int i_EepromReadAnlogOutputHeader(unsigned long iobase,
/* Reads only for ONE hardware component */
static int i_EepromReadAnlogInputHeader(unsigned long iobase,
- char *pc_PCIChipInformation,
+ char *type,
unsigned short w_Address,
struct str_AnalogInputHeader *s_Header)
{
unsigned short w_Temp, w_Offset;
- w_Temp = w_EepromReadWord(iobase, pc_PCIChipInformation,
+ w_Temp = w_EepromReadWord(iobase, type,
0x100 + w_Address + 10);
s_Header->w_Nchannel = (w_Temp >> 4) & 0x03FF;
- s_Header->w_MinConvertTiming = w_EepromReadWord(iobase,
- pc_PCIChipInformation,
+ s_Header->w_MinConvertTiming = w_EepromReadWord(iobase, type,
0x100 + w_Address + 16);
- s_Header->w_MinDelayTiming = w_EepromReadWord(iobase,
- pc_PCIChipInformation,
+ s_Header->w_MinDelayTiming = w_EepromReadWord(iobase, type,
0x100 + w_Address + 30);
- w_Temp = w_EepromReadWord(iobase, pc_PCIChipInformation,
+ w_Temp = w_EepromReadWord(iobase, type,
0x100 + w_Address + 20);
s_Header->b_HasDma = (w_Temp >> 13) & 0x01; /* whether dma present or not */
- w_Temp = w_EepromReadWord(iobase, pc_PCIChipInformation,
+ w_Temp = w_EepromReadWord(iobase, type,
0x100 + w_Address + 72); /* reading Y */
w_Temp = w_Temp & 0x00FF;
if (w_Temp) /* Y>0 */
@@ -417,7 +411,7 @@ static int i_EepromReadAnlogInputHeader(unsigned long iobase,
}
/* read Resolution */
- w_Temp = w_EepromReadWord(iobase, pc_PCIChipInformation,
+ w_Temp = w_EepromReadWord(iobase, type,
0x100 + w_Address + w_Offset);
s_Header->b_Resolution = w_Temp & 0x001F; /* last 5 bits */
@@ -425,7 +419,7 @@ static int i_EepromReadAnlogInputHeader(unsigned long iobase,
}
static int i_EepromReadMainHeader(unsigned long iobase,
- char *pc_PCIChipInformation,
+ char *type,
struct comedi_device *dev)
{
const struct addi_board *this_board = comedi_board(dev);
@@ -440,25 +434,24 @@ static int i_EepromReadMainHeader(unsigned long iobase,
struct str_AnalogInputHeader s_AnalogInputHeader;
/* Read size */
- s_MainHeader.w_HeaderSize = w_EepromReadWord(iobase,
- pc_PCIChipInformation,
+ s_MainHeader.w_HeaderSize = w_EepromReadWord(iobase, type,
0x100 + 8);
/* Read nbr of functionality */
- w_Temp = w_EepromReadWord(iobase, pc_PCIChipInformation,
+ w_Temp = w_EepromReadWord(iobase, type,
0x100 + 10);
s_MainHeader.b_Nfunctions = (unsigned char) w_Temp & 0x00FF;
/* Read functionality details */
for (i = 0; i < s_MainHeader.b_Nfunctions; i++) {
/* Read Type */
- w_Temp = w_EepromReadWord(iobase, pc_PCIChipInformation,
+ w_Temp = w_EepromReadWord(iobase, type,
0x100 + 12 + w_Count);
s_MainHeader.s_Functions[i].b_Type = (unsigned char) w_Temp & 0x3F;
w_Count = w_Count + 2;
/* Read Address */
s_MainHeader.s_Functions[i].w_Address =
- w_EepromReadWord(iobase, pc_PCIChipInformation,
+ w_EepromReadWord(iobase, type,
0x100 + 12 + w_Count);
w_Count = w_Count + 2;
}
@@ -468,8 +461,7 @@ static int i_EepromReadMainHeader(unsigned long iobase,
switch (s_MainHeader.s_Functions[i].b_Type) {
case EEPROM_DIGITALINPUT:
- i_EepromReadDigitalInputHeader(iobase,
- pc_PCIChipInformation,
+ i_EepromReadDigitalInputHeader(iobase, type,
s_MainHeader.s_Functions[i].w_Address,
&s_DigitalInputHeader);
devpriv->s_EeParameters.i_NbrDiChannel =
@@ -477,8 +469,7 @@ static int i_EepromReadMainHeader(unsigned long iobase,
break;
case EEPROM_DIGITALOUTPUT:
- i_EepromReadDigitalOutputHeader(iobase,
- pc_PCIChipInformation,
+ i_EepromReadDigitalOutputHeader(iobase, type,
s_MainHeader.s_Functions[i].w_Address,
&s_DigitalOutputHeader);
devpriv->s_EeParameters.i_NbrDoChannel =
@@ -490,8 +481,7 @@ static int i_EepromReadMainHeader(unsigned long iobase,
break;
case EEPROM_ANALOGINPUT:
- i_EepromReadAnlogInputHeader(iobase,
- pc_PCIChipInformation,
+ i_EepromReadAnlogInputHeader(iobase, type,
s_MainHeader.s_Functions[i].w_Address,
&s_AnalogInputHeader);
if (!(strcmp(this_board->pc_DriverName, "apci3200")))
@@ -515,8 +505,7 @@ static int i_EepromReadMainHeader(unsigned long iobase,
break;
case EEPROM_ANALOGOUTPUT:
- i_EepromReadAnlogOutputHeader(iobase,
- pc_PCIChipInformation,
+ i_EepromReadAnlogOutputHeader(iobase, type,
s_MainHeader.s_Functions[i].w_Address,
&s_AnalogOutputHeader);
devpriv->s_EeParameters.i_NbrAoChannel =