summaryrefslogtreecommitdiff
path: root/include/linux/i2c
diff options
context:
space:
mode:
authorWolfram Sang <w.sang@pengutronix.de>2008-07-14 22:38:35 +0200
committerJean Delvare <khali@mahadeva.delvare>2008-07-14 22:38:35 +0200
commit2b7a5056a0a7ff17d5d2004c29c852a92a6bd632 (patch)
tree72a58b0b9a0f67f5ff95296176067a12d7d3825f /include/linux/i2c
parente9ca9eb9d7fc7bf3dc3cec5ba7edb089c4625f7b (diff)
downloadlinux-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.h28
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 */