|
@@ -170,7 +170,7 @@ static void eeprom_93cx6_read_bits(struct eeprom_93cx6 *eeprom,
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * eeprom_93cx6_read - Read multiple words from eeprom
|
|
|
+ * eeprom_93cx6_read - Read a word from eeprom
|
|
|
* @eeprom: Pointer to eeprom structure
|
|
|
* @word: Word index from where we should start reading
|
|
|
* @data: target pointer where the information will have to be stored
|
|
@@ -234,6 +234,66 @@ void eeprom_93cx6_multiread(struct eeprom_93cx6 *eeprom, const u8 word,
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(eeprom_93cx6_multiread);
|
|
|
|
|
|
+/**
|
|
|
+ * eeprom_93cx6_readb - Read a byte from eeprom
|
|
|
+ * @eeprom: Pointer to eeprom structure
|
|
|
+ * @word: Byte index from where we should start reading
|
|
|
+ * @data: target pointer where the information will have to be stored
|
|
|
+ *
|
|
|
+ * This function will read a byte of the eeprom data
|
|
|
+ * into the given data pointer.
|
|
|
+ */
|
|
|
+void eeprom_93cx6_readb(struct eeprom_93cx6 *eeprom, const u8 byte,
|
|
|
+ u8 *data)
|
|
|
+{
|
|
|
+ u16 command;
|
|
|
+ u16 tmp;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Initialize the eeprom register
|
|
|
+ */
|
|
|
+ eeprom_93cx6_startup(eeprom);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Select the read opcode and the byte to be read.
|
|
|
+ */
|
|
|
+ command = (PCI_EEPROM_READ_OPCODE << (eeprom->width + 1)) | byte;
|
|
|
+ eeprom_93cx6_write_bits(eeprom, command,
|
|
|
+ PCI_EEPROM_WIDTH_OPCODE + eeprom->width + 1);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Read the requested 8 bits.
|
|
|
+ */
|
|
|
+ eeprom_93cx6_read_bits(eeprom, &tmp, 8);
|
|
|
+ *data = tmp & 0xff;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Cleanup eeprom register.
|
|
|
+ */
|
|
|
+ eeprom_93cx6_cleanup(eeprom);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(eeprom_93cx6_readb);
|
|
|
+
|
|
|
+/**
|
|
|
+ * eeprom_93cx6_multireadb - Read multiple bytes from eeprom
|
|
|
+ * @eeprom: Pointer to eeprom structure
|
|
|
+ * @byte: Index from where we should start reading
|
|
|
+ * @data: target pointer where the information will have to be stored
|
|
|
+ * @words: Number of bytes that should be read.
|
|
|
+ *
|
|
|
+ * This function will read all requested bytes from the eeprom,
|
|
|
+ * this is done by calling eeprom_93cx6_readb() multiple times.
|
|
|
+ */
|
|
|
+void eeprom_93cx6_multireadb(struct eeprom_93cx6 *eeprom, const u8 byte,
|
|
|
+ u8 *data, const u16 bytes)
|
|
|
+{
|
|
|
+ unsigned int i;
|
|
|
+
|
|
|
+ for (i = 0; i < bytes; i++)
|
|
|
+ eeprom_93cx6_readb(eeprom, byte + i, &data[i]);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(eeprom_93cx6_multireadb);
|
|
|
+
|
|
|
/**
|
|
|
* eeprom_93cx6_wren - set the write enable state
|
|
|
* @eeprom: Pointer to eeprom structure
|