pr_debug("i2c-core: driver unregistered: %s\n", driver->name); 
pr_debug("i2c-core: driver [%s] unregistered\n", driver->name); 
int i2c_del_driver(struct i2c_driver *driver){	struct list_head   *item1, *item2, *_n;	struct i2c_client  *client;	struct i2c_adapter *adap;		int res = 0;	down(&core_lists);	/* Have a look at each adapter, if clients of this driver are still	 * attached. If so, detach them to be able to kill the driver 	 * afterwards.	 */	pr_debug("i2c-core: unregister_driver - looking for clients.\n");	/* removing clients does not depend on the notify flag, else 	 * invalid operation might (will!) result, when using stale client	 * pointers.	 */	list_for_each(item1,&adapters) {		adap = list_entry(item1, struct i2c_adapter, list);		dev_dbg(&adap->dev, "examining adapter\n");		if (driver->detach_adapter) {			if ((res = driver->detach_adapter(adap))) {				dev_warn(&adap->dev, "while unregistering "				       "dummy driver %s, adapter could "				       "not be detached properly; driver "				       "not unloaded!",driver->name);				goto out_unlock;			}		} else {			list_for_each_safe(item2, _n, &adap->clients) {				client = list_entry(item2, struct i2c_client, list);				if (client->driver != driver)					continue;				pr_debug("i2c-core.o: detaching client %s:\n", client->name);				if ((res = driver->detach_client(client))) {					dev_err(&adap->dev, "while "						"unregistering driver "						"`%s', the client at "						"address %02x of "						"adapter could not "						"be detached; driver "						"not unloaded!",						driver->name,						client->addr);					goto out_unlock;				}			}		}	}	driver_unregister(&driver->driver);	list_del(&driver->list);	pr_debug("i2c-core: driver unregistered: %s\n", driver->name); out_unlock:	up(&core_lists);	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/b6d7b3d1b5a388b7e9af2629a9ecccedee064078/i2c-core.c/clean/drivers/i2c/i2c-core.c