staging: comedi: addi_eeprom: cleanup v_EepromCs76Read()
authorH Hartley Sweeten <hartleys@visionengravers.com>
Tue, 30 Oct 2012 00:05:43 +0000 (17:05 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 30 Oct 2012 17:50:13 +0000 (10:50 -0700)
Add namespace to the function by renaming the CamelCase function to
addi_eeprom_read_93c76().

Change the return type of the function to unsigned short and just
return the read value instead of passing it through a pointer.

Rename the CamelCase parameters and local variables.

Make addi_eeprom_cmd_93c76() return the last value so it does not
need to be calculated.

Rename the EE_READ and EE76_CMD_LEN defines so they have namespace
associated with the other 93c76 defines.

Cleanup the loop that reads the eeprom bits so it's a bit more concise.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/addi-data/addi_eeprom.c

index dfe44c9..a96cfea 100644 (file)
@@ -53,8 +53,8 @@ You should also find the complete GPL in the COPYING file accompanying this sour
 #define EE93C76_CS_BIT         (1 << 1)
 #define EE93C76_DOUT_BIT       (1 << 2)
 #define EE93C76_DIN_BIT                (1 << 3)
-#define EE76_CMD_LEN           13      /*  bits in instructions */
-#define EE_READ                0x0180  /*  01 1000 0000 read instruction */
+#define EE93C76_READ_CMD       (0x0180 << 4)
+#define EE93C76_CMD_LEN                13
 
 #define EEPROM_DIGITALINPUT                    0
 #define EEPROM_DIGITALOUTPUT                   1
@@ -121,9 +121,9 @@ static void addi_eeprom_clk_93c76(unsigned long iobase, unsigned int val)
        udelay(100);
 }
 
-static void addi_eeprom_cmd_93c76(unsigned long iobase,
-                                 unsigned int cmd,
-                                 unsigned char len)
+static unsigned int addi_eeprom_cmd_93c76(unsigned long iobase,
+                                         unsigned int cmd,
+                                         unsigned char len)
 {
        unsigned int val = EE93C76_CS_BIT;
        int i;
@@ -145,50 +145,38 @@ static void addi_eeprom_cmd_93c76(unsigned long iobase,
 
                addi_eeprom_clk_93c76(iobase, val);
        }
+       return val;
 }
 
-static void v_EepromCs76Read(unsigned long iobase,
-                            unsigned short w_offset,
-                            unsigned short *pw_Value)
+static unsigned short addi_eeprom_readw_93c76(unsigned long iobase,
+                                             unsigned short addr)
 {
-        char c_BitPos = 0;
-       unsigned int dw_RegisterValue = 0;
-       unsigned int dw_RegisterValueRead = 0;
+       unsigned short val = 0;
+       unsigned int cmd;
+       unsigned int tmp;
+        int i;
 
        /* Send EEPROM read command and offset to EEPROM */
-       addi_eeprom_cmd_93c76(iobase, (EE_READ << 4) | (w_offset / 2),
-               EE76_CMD_LEN);
-
-       /* Get the last register value */
-       dw_RegisterValue = (((w_offset / 2) & 0x1) << 2) | EE93C76_CS_BIT;
-
-       /* Set the 16-bit value of 0 */
-       *pw_Value = 0;
+       cmd = EE93C76_READ_CMD | (addr / 2);
+       cmd = addi_eeprom_cmd_93c76(iobase, cmd, EE93C76_CMD_LEN);
 
        /* Get the 16-bit value */
-       for (c_BitPos = 0; c_BitPos < 16; c_BitPos++) {
-               addi_eeprom_clk_93c76(iobase, dw_RegisterValue);
+       for (i = 0; i < 16; i++) {
+               addi_eeprom_clk_93c76(iobase, cmd);
 
-               /* Get the result bit */
-               dw_RegisterValueRead = inl(iobase);
+               tmp = inl(iobase);
                udelay(100);
 
-               /* Get bit value and shift into result */
-               if (dw_RegisterValueRead & EE93C76_DIN_BIT) {
-                       /* Read 1 */
-                       *pw_Value = (*pw_Value << 1) | 0x1;
-               } else {
-                       /* Read 0 */
-                       *pw_Value = (*pw_Value << 1);
-               }
+               val <<= 1;
+               if (tmp & EE93C76_DIN_BIT)
+                       val |= 0x1;
        }
 
-       /* Clear all EEPROM bits */
-       dw_RegisterValue = 0x0;
-
        /* Toggle EEPROM's Chip select to get it out of Shift Register Mode */
-       outl(dw_RegisterValue, iobase);
+       outl(0, iobase);
        udelay(100);
+
+       return val;
 }
 
 static void v_EepromWaitBusy(unsigned long iobase)
@@ -270,10 +258,8 @@ static unsigned short w_EepromReadWord(unsigned long iobase,
                w_ReadWord = (b_ReadLowByte | (((unsigned short) b_ReadHighByte) * 256));
        }
 
-       if (!strcmp(type, "93C76")) {
-               /* Read 16 bit from the EEPROM 93C76 */
-               v_EepromCs76Read(iobase, w_EepromStartAddress, &w_ReadWord);
-       }
+       if (!strcmp(type, "93C76"))
+               w_ReadWord = addi_eeprom_readw_93c76(iobase, w_EepromStartAddress);
 
        return w_ReadWord;
 }