diff options
author | Wolfram Sang <w.sang@pengutronix.de> | 2008-07-14 22:38:35 +0200 |
---|---|---|
committer | Jean Delvare <khali@mahadeva.delvare> | 2008-07-14 22:38:35 +0200 |
commit | 2b7a5056a0a7ff17d5d2004c29c852a92a6bd632 (patch) | |
tree | 72a58b0b9a0f67f5ff95296176067a12d7d3825f /include/linux/i2c | |
parent | e9ca9eb9d7fc7bf3dc3cec5ba7edb089c4625f7b (diff) | |
download | linux-3.10-2b7a5056a0a7ff17d5d2004c29c852a92a6bd632.tar.gz linux-3.10-2b7a5056a0a7ff17d5d2004c29c852a92a6bd632.tar.bz2 linux-3.10-2b7a5056a0a7ff17d5d2004c29c852a92a6bd632.zip |
i2c: New-style EEPROM driver using device IDs
Add a new-style driver for most I2C EEPROMs, giving sysfs read/write
access to their data. Tested with various chips and clock rates.
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Diffstat (limited to 'include/linux/i2c')
-rw-r--r-- | include/linux/i2c/at24.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/include/linux/i2c/at24.h b/include/linux/i2c/at24.h new file mode 100644 index 00000000000..f6edd522a92 --- /dev/null +++ b/include/linux/i2c/at24.h @@ -0,0 +1,28 @@ +#ifndef _LINUX_AT24_H +#define _LINUX_AT24_H + +#include <linux/types.h> + +/* + * As seen through Linux I2C, differences between the most common types of I2C + * memory include: + * - How much memory is available (usually specified in bit)? + * - What write page size does it support? + * - Special flags (16 bit addresses, read_only, world readable...)? + * + * If you set up a custom eeprom type, please double-check the parameters. + * Especially page_size needs extra care, as you risk data loss if your value + * is bigger than what the chip actually supports! + */ + +struct at24_platform_data { + u32 byte_len; /* size (sum of all addr) */ + u16 page_size; /* for writes */ + u8 flags; +#define AT24_FLAG_ADDR16 0x80 /* address pointer is 16 bit */ +#define AT24_FLAG_READONLY 0x40 /* sysfs-entry will be read-only */ +#define AT24_FLAG_IRUGO 0x20 /* sysfs-entry will be world-readable */ +#define AT24_FLAG_TAKE8ADDR 0x10 /* take always 8 addresses (24c00) */ +}; + +#endif /* _LINUX_AT24_H */ |