***************
*** 68,73 ****
  	return NULL;
  }
  
  
  static int dvb_device_open(struct inode *inode, struct file *file)
  {
--- 68,86 ----
  	return NULL;
  }
  
+ struct dvb_adapter* find_dvb_adapter(struct i2c_adapter *i2c_adapter)
+ {
+ 	struct list_head *entry;
+ 
+ 	list_for_each (entry, &dvb_adapter_list) {
+ 		struct dvb_adapter *adap;
+ 		adap = list_entry (entry, struct dvb_adapter, list_head);
+ 		if (adap->i2c_adapter == i2c_adapter)
+ 			return adap;
+ 	}
+ 
+ 	return NULL;
+ }
  
  static int dvb_device_open(struct inode *inode, struct file *file)
  {
***************
*** 260,266 ****
  }
  
  
- int dvb_register_adapter(struct dvb_adapter **padap, const char *name, struct module *module)
  {
  	struct dvb_adapter *adap;
  	int num;
--- 273,282 ----
  }
  
  
+ int dvb_register_adapter(struct dvb_adapter **padap,
+ 			 const char *name,
+ 			 struct i2c_adapter *i2c_adapter,
+ 			 struct module *module)
  {
  	struct dvb_adapter *adap;
  	int num;
***************
*** 287,292 ****
  	adap->num = num;
  	adap->name = name;
  	adap->module = module;
  
  	list_add_tail (&adap->list_head, &dvb_adapter_list);
  
--- 303,309 ----
  	adap->num = num;
  	adap->name = name;
  	adap->module = module;
+ 	adap->i2c_adapter = i2c_adapter;
  
  	list_add_tail (&adap->list_head, &dvb_adapter_list);
  
