diff options
author | Vivien Didelot <vivien.didelot@savoirfairelinux.com> | 2013-09-27 15:06:28 -0400 |
---|---|---|
committer | Wolfram Sang <wsa@the-dreams.de> | 2013-09-30 06:02:34 +0200 |
commit | 25f73ed5c67d17ecf8cefd560f55211cce726086 (patch) | |
tree | 983ae50319c796418a6f6ec77d75d421408cb92e /include/linux/platform_data/at24.h | |
parent | 3c41aa710846c76400d6e8cf06600cc3eb8cbcc2 (diff) | |
download | op-kernel-dev-25f73ed5c67d17ecf8cefd560f55211cce726086.zip op-kernel-dev-25f73ed5c67d17ecf8cefd560f55211cce726086.tar.gz |
misc: (at24) move header to linux/platform_data/
This patch moves the at24.h header from include/linux/i2c to
include/linux/platform_data and updates existing support accordingly.
It also fixes the following checkpatch warning:
WARNING: please, no space before tabs
#436: FILE: include/linux/platform_data/at24.h:31:
+ * ^Iu8 *mac_addr = ethernet_pdata->mac_addr;$
Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Diffstat (limited to 'include/linux/platform_data/at24.h')
-rw-r--r-- | include/linux/platform_data/at24.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/include/linux/platform_data/at24.h b/include/linux/platform_data/at24.h new file mode 100644 index 0000000..c42aa89 --- /dev/null +++ b/include/linux/platform_data/at24.h @@ -0,0 +1,55 @@ +/* + * at24.h - platform_data for the at24 (generic eeprom) driver + * (C) Copyright 2008 by Pengutronix + * (C) Copyright 2012 by Wolfram Sang + * same license as the driver + */ + +#ifndef _LINUX_AT24_H +#define _LINUX_AT24_H + +#include <linux/types.h> +#include <linux/memory.h> + +/** + * struct at24_platform_data - data to set up at24 (generic eeprom) driver + * @byte_len: size of eeprom in byte + * @page_size: number of byte which can be written in one go + * @flags: tunable options, check AT24_FLAG_* defines + * @setup: an optional callback invoked after eeprom is probed; enables kernel + code to access eeprom via memory_accessor, see example + * @context: optional parameter passed to setup() + * + * 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! + * + * An example in pseudo code for a setup() callback: + * + * void get_mac_addr(struct memory_accessor *mem_acc, void *context) + * { + * u8 *mac_addr = ethernet_pdata->mac_addr; + * off_t offset = context; + * + * // Read MAC addr from EEPROM + * if (mem_acc->read(mem_acc, mac_addr, offset, ETH_ALEN) == ETH_ALEN) + * pr_info("Read MAC addr from EEPROM: %pM\n", mac_addr); + * } + * + * This function pointer and context can now be set up in at24_platform_data. + */ + +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) */ + + void (*setup)(struct memory_accessor *, void *context); + void *context; +}; + +#endif /* _LINUX_AT24_H */ |