Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 77331
b: refs/heads/master
c: 87c6c22
h: refs/heads/master
i:
  77329: d1f58c6
  77327: dcfa3b9
v: v3
  • Loading branch information
Jean Delvare authored and Jean Delvare committed Jan 27, 2008
1 parent 74db81d commit ad2bef3
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 25 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e48d33193d94175f012c3ed606a1d1e574ed726a
refs/heads/master: 87c6c22945e5d68eb96dd1e5cb26185253cd5b9d
9 changes: 0 additions & 9 deletions trunk/Documentation/feature-removal-schedule.txt
Original file line number Diff line number Diff line change
Expand Up @@ -191,15 +191,6 @@ Who: Kay Sievers <kay.sievers@suse.de>

---------------------------

What: i2c_adapter.list
When: July 2007
Why: Superfluous, this list duplicates the one maintained by the driver
core.
Who: Jean Delvare <khali@linux-fr.org>,
David Brownell <dbrownell@users.sourceforge.net>

---------------------------

What: ACPI procfs interface
When: July 2008
Why: ACPI sysfs conversion should be finished by January 2008.
Expand Down
24 changes: 10 additions & 14 deletions trunk/drivers/i2c/i2c-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@
#include <linux/mutex.h>
#include <linux/completion.h>
#include <asm/uaccess.h>
#include <asm/semaphore.h>

#include "i2c-core.h"


static LIST_HEAD(adapters);
static LIST_HEAD(drivers);
static DEFINE_MUTEX(core_lists);
static DEFINE_IDR(i2c_adapter_idr);
Expand Down Expand Up @@ -331,7 +331,6 @@ static int i2c_register_adapter(struct i2c_adapter *adap)
INIT_LIST_HEAD(&adap->clients);

mutex_lock(&core_lists);
list_add_tail(&adap->list, &adapters);

/* Add the adapter to the driver core.
* If the parent pointer is not set up,
Expand Down Expand Up @@ -368,7 +367,6 @@ static int i2c_register_adapter(struct i2c_adapter *adap)
return res;

out_list:
list_del(&adap->list);
idr_remove(&i2c_adapter_idr, adap->nr);
goto out_unlock;
}
Expand Down Expand Up @@ -473,19 +471,14 @@ EXPORT_SYMBOL_GPL(i2c_add_numbered_adapter);
int i2c_del_adapter(struct i2c_adapter *adap)
{
struct list_head *item, *_n;
struct i2c_adapter *adap_from_list;
struct i2c_driver *driver;
struct i2c_client *client;
int res = 0;

mutex_lock(&core_lists);

/* First make sure that this adapter was ever added */
list_for_each_entry(adap_from_list, &adapters, list) {
if (adap_from_list == adap)
break;
}
if (adap_from_list != adap) {
if (idr_find(&i2c_adapter_idr, adap->nr) != adap) {
pr_debug("i2c-core: attempting to delete unregistered "
"adapter [%s]\n", adap->name);
res = -EINVAL;
Expand Down Expand Up @@ -529,7 +522,6 @@ int i2c_del_adapter(struct i2c_adapter *adap)
/* clean up the sysfs representation */
init_completion(&adap->dev_released);
device_unregister(&adap->dev);
list_del(&adap->list);

/* wait for sysfs to drop all references */
wait_for_completion(&adap->dev_released);
Expand Down Expand Up @@ -592,9 +584,12 @@ int i2c_register_driver(struct module *owner, struct i2c_driver *driver)
if (driver->attach_adapter) {
struct i2c_adapter *adapter;

list_for_each_entry(adapter, &adapters, list) {
down(&i2c_adapter_class.sem);
list_for_each_entry(adapter, &i2c_adapter_class.devices,
dev.node) {
driver->attach_adapter(adapter);
}
up(&i2c_adapter_class.sem);
}

mutex_unlock(&core_lists);
Expand All @@ -609,7 +604,7 @@ EXPORT_SYMBOL(i2c_register_driver);
*/
void i2c_del_driver(struct i2c_driver *driver)
{
struct list_head *item1, *item2, *_n;
struct list_head *item2, *_n;
struct i2c_client *client;
struct i2c_adapter *adap;

Expand All @@ -623,8 +618,8 @@ void i2c_del_driver(struct i2c_driver *driver)
* attached. If so, detach them to be able to kill the driver
* afterwards.
*/
list_for_each(item1,&adapters) {
adap = list_entry(item1, struct i2c_adapter, list);
down(&i2c_adapter_class.sem);
list_for_each_entry(adap, &i2c_adapter_class.devices, dev.node) {
if (driver->detach_adapter) {
if (driver->detach_adapter(adap)) {
dev_err(&adap->dev, "detach_adapter failed "
Expand All @@ -648,6 +643,7 @@ void i2c_del_driver(struct i2c_driver *driver)
}
}
}
up(&i2c_adapter_class.sem);

unregister:
driver_unregister(&driver->driver);
Expand Down
1 change: 0 additions & 1 deletion trunk/include/linux/i2c.h
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,6 @@ struct i2c_adapter {

int nr;
struct list_head clients;
struct list_head list;
char name[48];
struct completion dev_released;
};
Expand Down

0 comments on commit ad2bef3

Please sign in to comment.