Commit d615de25 authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman

staging: comedi: addi_eeprom: add defines for the 93c76 eeprom bits

Define the magic values used for the clock, chip-select, data out,
and data in signals to the 93c76 eeprom.
Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 6baf5103
...@@ -48,6 +48,11 @@ You should also find the complete GPL in the COPYING file accompanying this sour ...@@ -48,6 +48,11 @@ You should also find the complete GPL in the COPYING file accompanying this sour
#define NVCMD_BEGIN_READ (0x7 << 5) /* nvRam begin read command */ #define NVCMD_BEGIN_READ (0x7 << 5) /* nvRam begin read command */
#define NVCMD_LOAD_LOW (0x4 << 5) /* nvRam load low command */ #define NVCMD_LOAD_LOW (0x4 << 5) /* nvRam load low command */
#define NVCMD_LOAD_HIGH (0x5 << 5) /* nvRam load high command */ #define NVCMD_LOAD_HIGH (0x5 << 5) /* nvRam load high command */
#define EE93C76_CLK_BIT (1 << 0)
#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 EE76_CMD_LEN 13 /* bits in instructions */
#define EE_READ 0x0180 /* 01 1000 0000 read instruction */ #define EE_READ 0x0180 /* 01 1000 0000 read instruction */
...@@ -110,12 +115,10 @@ struct str_AnalogInputHeader { ...@@ -110,12 +115,10 @@ struct str_AnalogInputHeader {
static void v_EepromClock76(unsigned long iobase, static void v_EepromClock76(unsigned long iobase,
unsigned int dw_RegisterValue) unsigned int dw_RegisterValue)
{ {
/* Set EEPROM clock Low */ outl(dw_RegisterValue & ~EE93C76_CLK_BIT, iobase);
outl(dw_RegisterValue & 0x6, iobase);
udelay(100); udelay(100);
/* Set EEPROM clock High */ outl(dw_RegisterValue | EE93C76_CLK_BIT, iobase);
outl(dw_RegisterValue | 0x1, iobase);
udelay(100); udelay(100);
} }
...@@ -123,11 +126,8 @@ static void v_EepromSendCommand76(unsigned long iobase, ...@@ -123,11 +126,8 @@ static void v_EepromSendCommand76(unsigned long iobase,
unsigned int dw_EepromCommand, unsigned int dw_EepromCommand,
unsigned char b_DataLengthInBits) unsigned char b_DataLengthInBits)
{ {
unsigned int dw_RegisterValue = EE93C76_CS_BIT;
char c_BitPos = 0; char c_BitPos = 0;
unsigned int dw_RegisterValue = 0;
/* Enable EEPROM Chip Select */
dw_RegisterValue = 0x2;
/* Toggle EEPROM's Chip select to get it out of Shift Register Mode */ /* Toggle EEPROM's Chip select to get it out of Shift Register Mode */
outl(dw_RegisterValue, iobase); outl(dw_RegisterValue, iobase);
...@@ -135,13 +135,10 @@ static void v_EepromSendCommand76(unsigned long iobase, ...@@ -135,13 +135,10 @@ static void v_EepromSendCommand76(unsigned long iobase,
/* Send EEPROM command - one bit at a time */ /* Send EEPROM command - one bit at a time */
for (c_BitPos = (b_DataLengthInBits - 1); c_BitPos >= 0; c_BitPos--) { for (c_BitPos = (b_DataLengthInBits - 1); c_BitPos >= 0; c_BitPos--) {
if (dw_EepromCommand & (1 << c_BitPos)) { if (dw_EepromCommand & (1 << c_BitPos))
/* Write 1 */ dw_RegisterValue = dw_RegisterValue | EE93C76_DOUT_BIT;
dw_RegisterValue = dw_RegisterValue | 0x4; else
} else { dw_RegisterValue = dw_RegisterValue & ~EE93C76_DOUT_BIT;
/* Write 0 */
dw_RegisterValue = dw_RegisterValue & 0x3;
}
/* Write the command */ /* Write the command */
outl(dw_RegisterValue, iobase); outl(dw_RegisterValue, iobase);
...@@ -165,7 +162,7 @@ static void v_EepromCs76Read(unsigned long iobase, ...@@ -165,7 +162,7 @@ static void v_EepromCs76Read(unsigned long iobase,
EE76_CMD_LEN); EE76_CMD_LEN);
/* Get the last register value */ /* Get the last register value */
dw_RegisterValue = (((w_offset / 2) & 0x1) << 2) | 0x2; dw_RegisterValue = (((w_offset / 2) & 0x1) << 2) | EE93C76_CS_BIT;
/* Set the 16-bit value of 0 */ /* Set the 16-bit value of 0 */
*pw_Value = 0; *pw_Value = 0;
...@@ -180,7 +177,7 @@ static void v_EepromCs76Read(unsigned long iobase, ...@@ -180,7 +177,7 @@ static void v_EepromCs76Read(unsigned long iobase,
udelay(100); udelay(100);
/* Get bit value and shift into result */ /* Get bit value and shift into result */
if (dw_RegisterValueRead & 0x8) { if (dw_RegisterValueRead & EE93C76_DIN_BIT) {
/* Read 1 */ /* Read 1 */
*pw_Value = (*pw_Value << 1) | 0x1; *pw_Value = (*pw_Value << 1) | 0x1;
} else { } else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment