rtc: use class iteration api

Convert to use the class iteration api.

Signed-off-by: Dave Young <hidave.darkstar@gmail.com>
Cc: Alessandro Zummo <a.zummo@towertech.it>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Dave Young 2008-01-22 14:00:34 +08:00 committed by Greg Kroah-Hartman
parent 443cad920a
commit 71da890509

View file

@ -251,20 +251,23 @@ void rtc_update_irq(struct rtc_device *rtc,
} }
EXPORT_SYMBOL_GPL(rtc_update_irq); EXPORT_SYMBOL_GPL(rtc_update_irq);
static int __rtc_match(struct device *dev, void *data)
{
char *name = (char *)data;
if (strncmp(dev->bus_id, name, BUS_ID_SIZE) == 0)
return 1;
return 0;
}
struct rtc_device *rtc_class_open(char *name) struct rtc_device *rtc_class_open(char *name)
{ {
struct device *dev; struct device *dev;
struct rtc_device *rtc = NULL; struct rtc_device *rtc = NULL;
down(&rtc_class->sem); dev = class_find_device(rtc_class, name, __rtc_match);
list_for_each_entry(dev, &rtc_class->devices, node) { if (dev)
if (strncmp(dev->bus_id, name, BUS_ID_SIZE) == 0) { rtc = to_rtc_device(dev);
dev = get_device(dev);
if (dev)
rtc = to_rtc_device(dev);
break;
}
}
if (rtc) { if (rtc) {
if (!try_module_get(rtc->owner)) { if (!try_module_get(rtc->owner)) {
@ -272,7 +275,6 @@ struct rtc_device *rtc_class_open(char *name)
rtc = NULL; rtc = NULL;
} }
} }
up(&rtc_class->sem);
return rtc; return rtc;
} }