diff options
| author | David Brownell <david-b@pacbell.net> | 2007-02-12 03:52:48 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-12 12:48:31 -0500 |
| commit | b587b13a4f670ebae79ae6259cf44328455e4e69 (patch) | |
| tree | 36e614fae95d8a2c888190d162e67ec95d144304 /include/linux | |
| parent | 3925a5ce44330767f7f0de5c58c6a797009f0f75 (diff) | |
[PATCH] SPI eeprom driver
This is adds a simple SPI EEPROM driver, providing access to the EEPROM
through sysfs much like the I2C "eeprom" driver ... except this driver
supports write access, and multiple EEPROM sizes.
From: "Tuppa, Walter" <walter.tuppa@siemens.com>
Since I have EEPROMs on SPI with different address sizing, I made some
changes to your at25.c to support them. Works perfectly. (Also includes a
small bugfix for the "what size address" test.)
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Walter Tuppa <walter.tuppa@siemens.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/spi/eeprom.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/include/linux/spi/eeprom.h b/include/linux/spi/eeprom.h new file mode 100644 index 000000000000..1085212c446e --- /dev/null +++ b/include/linux/spi/eeprom.h | |||
| @@ -0,0 +1,22 @@ | |||
| 1 | #ifndef __LINUX_SPI_EEPROM_H | ||
| 2 | #define __LINUX_SPI_EEPROM_H | ||
| 3 | |||
| 4 | /* | ||
| 5 | * Put one of these structures in platform_data for SPI EEPROMS handled | ||
| 6 | * by the "at25" driver. On SPI, most EEPROMS understand the same core | ||
| 7 | * command set. If you need to support EEPROMs that don't yet fit, add | ||
| 8 | * flags to support those protocol options. These values all come from | ||
| 9 | * the chip datasheets. | ||
| 10 | */ | ||
| 11 | struct spi_eeprom { | ||
| 12 | u32 byte_len; | ||
| 13 | char name[10]; | ||
| 14 | u16 page_size; /* for writes */ | ||
| 15 | u16 flags; | ||
| 16 | #define EE_ADDR1 0x0001 /* 8 bit addrs */ | ||
| 17 | #define EE_ADDR2 0x0002 /* 16 bit addrs */ | ||
| 18 | #define EE_ADDR3 0x0004 /* 24 bit addrs */ | ||
| 19 | #define EE_READONLY 0x0008 /* disallow writes */ | ||
| 20 | }; | ||
| 21 | |||
| 22 | #endif /* __LINUX_SPI_EEPROM_H */ | ||
