Commit c0d6f966 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge master.kernel.org:/home/rmk/linux-2.6-i2c manually

Old tree, so the automatic merge had some problems.
parents 0db7443b 6fd60fa9
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -144,6 +144,22 @@ config I2C_I810
	  This driver can also be built as a module.  If so, the module
	  will be called i2c-i810.

config I2C_PXA
	tristate "Intel PXA2XX I2C adapter (EXPERIMENTAL)"
	depends on I2C && EXPERIMENTAL && ARCH_PXA
	help
	  If you have devices in the PXA I2C bus, say yes to this option.
	  This driver can also be built as a module.  If so, the module
	  will be called i2c-pxa.

config I2C_PXA_SLAVE
	bool "Intel PXA2XX I2C Slave comms support"
	depends on I2C_PXA
	help
	  Support I2C slave mode communications on the PXA I2C bus.  This
	  is necessary for systems where the PXA may be a target on the
	  I2C bus.

config I2C_PIIX4
	tristate "Intel PIIX4"
	depends on I2C && PCI
+1 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ obj-$(CONFIG_I2C_PARPORT_LIGHT) += i2c-parport-light.o
obj-$(CONFIG_I2C_PCA_ISA)	+= i2c-pca-isa.o
obj-$(CONFIG_I2C_PIIX4)		+= i2c-piix4.o
obj-$(CONFIG_I2C_PROSAVAGE)	+= i2c-prosavage.o
obj-$(CONFIG_I2C_PXA)		+= i2c-pxa.o
obj-$(CONFIG_I2C_RPXLITE)	+= i2c-rpx.o
obj-$(CONFIG_I2C_S3C2410)	+= i2c-s3c2410.o
obj-$(CONFIG_I2C_SAVAGE4)	+= i2c-savage4.o
+1022 −0

File added.

Preview size limit exceeded, changes collapsed.

+70 −0

File added.

Preview size limit exceeded, changes collapsed.

+48 −0
Original line number Diff line number Diff line
#ifndef _LINUX_I2C_ALGO_PXA_H
#define _LINUX_I2C_ALGO_PXA_H

struct i2c_eeprom_emu_watcher {
	void (*write)(void *, unsigned int addr, unsigned char newval);
};

struct i2c_eeprom_emu_watch {
	struct list_head node;
	unsigned int start;
	unsigned int end;
	struct i2c_eeprom_emu_watcher *ops;
	void *data;
};

#define I2C_EEPROM_EMU_SIZE (256)

struct i2c_eeprom_emu {
	unsigned int size;
	unsigned int ptr;
	unsigned int seen_start;
	struct list_head watch;

	unsigned char bytes[I2C_EEPROM_EMU_SIZE];
};

typedef enum i2c_slave_event_e {
	I2C_SLAVE_EVENT_START_READ,
	I2C_SLAVE_EVENT_START_WRITE,
	I2C_SLAVE_EVENT_STOP
} i2c_slave_event_t;

struct i2c_slave_client {
	void *data;
	void (*event)(void *ptr, i2c_slave_event_t event);
	int  (*read) (void *ptr);
	void (*write)(void *ptr, unsigned int val);
};

extern int i2c_eeprom_emu_addwatcher(struct i2c_eeprom_emu *, void *data,
				     unsigned int addr, unsigned int size,
				     struct i2c_eeprom_emu_watcher *);

extern void i2c_eeprom_emu_delwatcher(struct i2c_eeprom_emu *, void *data, struct i2c_eeprom_emu_watcher *watcher);

extern struct i2c_eeprom_emu *i2c_pxa_get_eeprom(void);

#endif /* _LINUX_I2C_ALGO_PXA_H */