summaryrefslogtreecommitdiff
path: root/linux/drivers/media/dvb/b2c2/flexcop-common.h
diff options
context:
space:
mode:
authorPatrick Boettcher <pb@linuxtv.org>2008-03-29 21:49:57 +0100
committerPatrick Boettcher <pb@linuxtv.org>2008-03-29 21:49:57 +0100
commit1be90df9422b4ee4d6343477eda998c5d3e3e488 (patch)
tree432d136dfd9cce61a3546fd14714b8396f93cad8 /linux/drivers/media/dvb/b2c2/flexcop-common.h
parent930f7c234a59cde31e520dc99f89314ba37f4d33 (diff)
downloadmediapointer-dvb-s2-1be90df9422b4ee4d6343477eda998c5d3e3e488.tar.gz
mediapointer-dvb-s2-1be90df9422b4ee4d6343477eda998c5d3e3e488.tar.bz2
Preparation for supporting new devices, cleanup and saneness
From: Patrick Boettcher <pb@linuxtv.org> To prepare the support for new device to the flexcop-family some preparation and cleanups was done + some saneness: - created an i2c-adapter for each i2c-port available. Easier usage for devices with several device on different i2c-busses - initialize i2c before doing the eeprom read - changed the way to attach the different frontends, easier to read now - enabled support for i2c-devices having no register address (1-byte access) Signed-off-by: Patrick Boettcher <pb@linuxtv.org>
Diffstat (limited to 'linux/drivers/media/dvb/b2c2/flexcop-common.h')
-rw-r--r--linux/drivers/media/dvb/b2c2/flexcop-common.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/linux/drivers/media/dvb/b2c2/flexcop-common.h b/linux/drivers/media/dvb/b2c2/flexcop-common.h
index 49852ba16..22fc0490d 100644
--- a/linux/drivers/media/dvb/b2c2/flexcop-common.h
+++ b/linux/drivers/media/dvb/b2c2/flexcop-common.h
@@ -47,6 +47,14 @@ struct flexcop_dma {
u32 size; /* size of each address in bytes */
};
+struct flexcop_i2c_adapter {
+ struct flexcop_device *fc;
+ struct i2c_adapter i2c_adap;
+
+ u8 no_base_addr;
+ flexcop_i2c_port_t port;
+};
+
/* Control structure for data definitions that are common to
* the B2C2-based PCI and USB devices.
*/
@@ -75,7 +83,7 @@ struct flexcop_device {
struct dmx_frontend mem_frontend;
int (*fe_sleep) (struct dvb_frontend *);
- struct i2c_adapter i2c_adap;
+ struct flexcop_i2c_adapter fc_i2c_adap[3];
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15)
struct mutex i2c_mutex;
#else
@@ -94,7 +102,8 @@ struct flexcop_device {
int (*write_ibi_reg) (struct flexcop_device *, flexcop_ibi_register, flexcop_ibi_value);
- int (*i2c_request) (struct flexcop_device*, flexcop_access_op_t, flexcop_i2c_port_t, u8 chipaddr, u8 addr, u8 *buf, u16 len);
+ int (*i2c_request) (struct flexcop_i2c_adapter*,
+ flexcop_access_op_t, u8 chipaddr, u8 addr, u8 *buf, u16 len);
int (*stream_control) (struct flexcop_device*, int);
int (*get_mac_addr) (struct flexcop_device *fc, int extended);
@@ -135,8 +144,8 @@ int flexcop_eeprom_check_mac_addr(struct flexcop_device *fc, int extended);
* one. We have it in flexcop-i2c.c, because it is going via the actual
* I2C-channel of the flexcop.
*/
-int flexcop_i2c_request(struct flexcop_device*, flexcop_access_op_t,
- flexcop_i2c_port_t, u8 chipaddr, u8 addr, u8 *buf, u16 len);
+int flexcop_i2c_request(struct flexcop_i2c_adapter*, flexcop_access_op_t,
+ u8 chipaddr, u8 addr, u8 *buf, u16 len);
/* from flexcop-sram.c */
int flexcop_sram_set_dest(struct flexcop_device *fc, flexcop_sram_dest_t dest, flexcop_sram_dest_target_t target);