ieee1394: convert ieee1394 from "struct class_device" to "struct device"

Here is a straightforward conversion to "struct device". The "struct
class_device" will be removed from the kernel.

It seems to work fine for me with and without CONFIG_SYSFS_DEPRECATED
set.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This commit is contained in:
Kay Sievers 2007-05-25 11:50:53 +02:00 committed by Stefan Richter
parent 59337087cb
commit dd7f2928d8
7 changed files with 86 additions and 84 deletions

View file

@ -2280,7 +2280,7 @@ static void dv1394_remove_host(struct hpsb_host *host)
} while (video); } while (video);
if (found_ohci_card) if (found_ohci_card)
class_device_destroy(hpsb_protocol_class, MKDEV(IEEE1394_MAJOR, device_destroy(hpsb_protocol_class, MKDEV(IEEE1394_MAJOR,
IEEE1394_MINOR_BLOCK_DV1394 * 16 + (host->id << 2))); IEEE1394_MINOR_BLOCK_DV1394 * 16 + (host->id << 2)));
} }
@ -2295,9 +2295,9 @@ static void dv1394_add_host(struct hpsb_host *host)
ohci = (struct ti_ohci *)host->hostdata; ohci = (struct ti_ohci *)host->hostdata;
class_device_create(hpsb_protocol_class, NULL, MKDEV( device_create(hpsb_protocol_class, NULL, MKDEV(
IEEE1394_MAJOR, IEEE1394_MINOR_BLOCK_DV1394 * 16 + (id<<2)), IEEE1394_MAJOR, IEEE1394_MINOR_BLOCK_DV1394 * 16 + (id<<2)),
NULL, "dv1394-%d", id); "dv1394-%d", id);
dv1394_init(ohci, DV1394_NTSC, MODE_RECEIVE); dv1394_init(ohci, DV1394_NTSC, MODE_RECEIVE);
dv1394_init(ohci, DV1394_NTSC, MODE_TRANSMIT); dv1394_init(ohci, DV1394_NTSC, MODE_TRANSMIT);

View file

@ -156,13 +156,13 @@ struct hpsb_host *hpsb_alloc_host(struct hpsb_host_driver *drv, size_t extra,
h->device.parent = dev; h->device.parent = dev;
snprintf(h->device.bus_id, BUS_ID_SIZE, "fw-host%d", h->id); snprintf(h->device.bus_id, BUS_ID_SIZE, "fw-host%d", h->id);
h->class_dev.dev = &h->device; h->host_dev.parent = &h->device;
h->class_dev.class = &hpsb_host_class; h->host_dev.class = &hpsb_host_class;
snprintf(h->class_dev.class_id, BUS_ID_SIZE, "fw-host%d", h->id); snprintf(h->host_dev.bus_id, BUS_ID_SIZE, "fw-host%d", h->id);
if (device_register(&h->device)) if (device_register(&h->device))
goto fail; goto fail;
if (class_device_register(&h->class_dev)) { if (device_register(&h->host_dev)) {
device_unregister(&h->device); device_unregister(&h->device);
goto fail; goto fail;
} }
@ -202,7 +202,7 @@ void hpsb_remove_host(struct hpsb_host *host)
host->driver = &dummy_driver; host->driver = &dummy_driver;
highlevel_remove_host(host); highlevel_remove_host(host);
class_device_unregister(&host->class_dev); device_unregister(&host->host_dev);
device_unregister(&host->device); device_unregister(&host->device);
} }

View file

@ -57,7 +57,7 @@ struct hpsb_host {
struct hpsb_host_driver *driver; struct hpsb_host_driver *driver;
struct pci_dev *pdev; struct pci_dev *pdev;
struct device device; struct device device;
struct class_device class_dev; struct device host_dev;
struct delayed_work delayed_reset; struct delayed_work delayed_reset;
unsigned config_roms:31; unsigned config_roms:31;

View file

@ -154,7 +154,7 @@ struct host_info {
}; };
static int nodemgr_bus_match(struct device * dev, struct device_driver * drv); static int nodemgr_bus_match(struct device * dev, struct device_driver * drv);
static int nodemgr_uevent(struct class_device *cdev, char **envp, int num_envp, static int nodemgr_uevent(struct device *dev, char **envp, int num_envp,
char *buffer, int buffer_size); char *buffer, int buffer_size);
static void nodemgr_resume_ne(struct node_entry *ne); static void nodemgr_resume_ne(struct node_entry *ne);
static void nodemgr_remove_ne(struct node_entry *ne); static void nodemgr_remove_ne(struct node_entry *ne);
@ -165,37 +165,38 @@ struct bus_type ieee1394_bus_type = {
.match = nodemgr_bus_match, .match = nodemgr_bus_match,
}; };
static void host_cls_release(struct class_device *class_dev) static void host_cls_release(struct device *dev)
{ {
put_device(&container_of((class_dev), struct hpsb_host, class_dev)->device); put_device(&container_of((dev), struct hpsb_host, host_dev)->device);
} }
struct class hpsb_host_class = { struct class hpsb_host_class = {
.name = "ieee1394_host", .name = "ieee1394_host",
.release = host_cls_release, .dev_release = host_cls_release,
}; };
static void ne_cls_release(struct class_device *class_dev) static void ne_cls_release(struct device *dev)
{ {
put_device(&container_of((class_dev), struct node_entry, class_dev)->device); put_device(&container_of((dev), struct node_entry, node_dev)->device);
} }
static struct class nodemgr_ne_class = { static struct class nodemgr_ne_class = {
.name = "ieee1394_node", .name = "ieee1394_node",
.release = ne_cls_release, .dev_release = ne_cls_release,
}; };
static void ud_cls_release(struct class_device *class_dev) static void ud_cls_release(struct device *dev)
{ {
put_device(&container_of((class_dev), struct unit_directory, class_dev)->device); put_device(&container_of((dev), struct unit_directory, unit_dev)->device);
} }
/* The name here is only so that unit directory hotplug works with old /* The name here is only so that unit directory hotplug works with old
* style hotplug, which only ever did unit directories anyway. */ * style hotplug, which only ever did unit directories anyway.
*/
static struct class nodemgr_ud_class = { static struct class nodemgr_ud_class = {
.name = "ieee1394", .name = "ieee1394",
.release = ud_cls_release, .dev_release = ud_cls_release,
.uevent = nodemgr_uevent, .dev_uevent = nodemgr_uevent,
}; };
static struct hpsb_highlevel nodemgr_highlevel; static struct hpsb_highlevel nodemgr_highlevel;
@ -730,11 +731,11 @@ static DEFINE_MUTEX(nodemgr_serialize_remove_uds);
static void nodemgr_remove_uds(struct node_entry *ne) static void nodemgr_remove_uds(struct node_entry *ne)
{ {
struct class_device *cdev; struct device *dev;
struct unit_directory *tmp, *ud; struct unit_directory *tmp, *ud;
/* Iteration over nodemgr_ud_class.children has to be protected by /* Iteration over nodemgr_ud_class.devices has to be protected by
* nodemgr_ud_class.sem, but class_device_unregister() will eventually * nodemgr_ud_class.sem, but device_unregister() will eventually
* take nodemgr_ud_class.sem too. Therefore pick out one ud at a time, * take nodemgr_ud_class.sem too. Therefore pick out one ud at a time,
* release the semaphore, and then unregister the ud. Since this code * release the semaphore, and then unregister the ud. Since this code
* may be called from other contexts besides the knodemgrds, protect the * may be called from other contexts besides the knodemgrds, protect the
@ -744,9 +745,9 @@ static void nodemgr_remove_uds(struct node_entry *ne)
for (;;) { for (;;) {
ud = NULL; ud = NULL;
down(&nodemgr_ud_class.sem); down(&nodemgr_ud_class.sem);
list_for_each_entry(cdev, &nodemgr_ud_class.children, node) { list_for_each_entry(dev, &nodemgr_ud_class.devices, node) {
tmp = container_of(cdev, struct unit_directory, tmp = container_of(dev, struct unit_directory,
class_dev); unit_dev);
if (tmp->ne == ne) { if (tmp->ne == ne) {
ud = tmp; ud = tmp;
break; break;
@ -755,7 +756,7 @@ static void nodemgr_remove_uds(struct node_entry *ne)
up(&nodemgr_ud_class.sem); up(&nodemgr_ud_class.sem);
if (ud == NULL) if (ud == NULL)
break; break;
class_device_unregister(&ud->class_dev); device_unregister(&ud->unit_dev);
device_unregister(&ud->device); device_unregister(&ud->device);
} }
mutex_unlock(&nodemgr_serialize_remove_uds); mutex_unlock(&nodemgr_serialize_remove_uds);
@ -772,10 +773,9 @@ static void nodemgr_remove_ne(struct node_entry *ne)
HPSB_DEBUG("Node removed: ID:BUS[" NODE_BUS_FMT "] GUID[%016Lx]", HPSB_DEBUG("Node removed: ID:BUS[" NODE_BUS_FMT "] GUID[%016Lx]",
NODE_BUS_ARGS(ne->host, ne->nodeid), (unsigned long long)ne->guid); NODE_BUS_ARGS(ne->host, ne->nodeid), (unsigned long long)ne->guid);
nodemgr_remove_uds(ne); nodemgr_remove_uds(ne);
class_device_unregister(&ne->class_dev); device_unregister(&ne->node_dev);
device_unregister(dev); device_unregister(dev);
put_device(dev); put_device(dev);
@ -783,7 +783,9 @@ static void nodemgr_remove_ne(struct node_entry *ne)
static int __nodemgr_remove_host_dev(struct device *dev, void *data) static int __nodemgr_remove_host_dev(struct device *dev, void *data)
{ {
nodemgr_remove_ne(container_of(dev, struct node_entry, device)); if (dev->bus == &ieee1394_bus_type)
nodemgr_remove_ne(container_of(dev, struct node_entry,
device));
return 0; return 0;
} }
@ -850,14 +852,14 @@ static struct node_entry *nodemgr_create_node(octlet_t guid, struct csr1212_csr
snprintf(ne->device.bus_id, BUS_ID_SIZE, "%016Lx", snprintf(ne->device.bus_id, BUS_ID_SIZE, "%016Lx",
(unsigned long long)(ne->guid)); (unsigned long long)(ne->guid));
ne->class_dev.dev = &ne->device; ne->node_dev.parent = &ne->device;
ne->class_dev.class = &nodemgr_ne_class; ne->node_dev.class = &nodemgr_ne_class;
snprintf(ne->class_dev.class_id, BUS_ID_SIZE, "%016Lx", snprintf(ne->node_dev.bus_id, BUS_ID_SIZE, "%016Lx",
(unsigned long long)(ne->guid)); (unsigned long long)(ne->guid));
if (device_register(&ne->device)) if (device_register(&ne->device))
goto fail_devreg; goto fail_devreg;
if (class_device_register(&ne->class_dev)) if (device_register(&ne->node_dev))
goto fail_classdevreg; goto fail_classdevreg;
get_device(&ne->device); get_device(&ne->device);
@ -885,12 +887,12 @@ static struct node_entry *nodemgr_create_node(octlet_t guid, struct csr1212_csr
static struct node_entry *find_entry_by_guid(u64 guid) static struct node_entry *find_entry_by_guid(u64 guid)
{ {
struct class_device *cdev; struct device *dev;
struct node_entry *ne, *ret_ne = NULL; struct node_entry *ne, *ret_ne = NULL;
down(&nodemgr_ne_class.sem); down(&nodemgr_ne_class.sem);
list_for_each_entry(cdev, &nodemgr_ne_class.children, node) { list_for_each_entry(dev, &nodemgr_ne_class.devices, node) {
ne = container_of(cdev, struct node_entry, class_dev); ne = container_of(dev, struct node_entry, node_dev);
if (ne->guid == guid) { if (ne->guid == guid) {
ret_ne = ne; ret_ne = ne;
@ -906,12 +908,12 @@ static struct node_entry *find_entry_by_guid(u64 guid)
static struct node_entry *find_entry_by_nodeid(struct hpsb_host *host, static struct node_entry *find_entry_by_nodeid(struct hpsb_host *host,
nodeid_t nodeid) nodeid_t nodeid)
{ {
struct class_device *cdev; struct device *dev;
struct node_entry *ne, *ret_ne = NULL; struct node_entry *ne, *ret_ne = NULL;
down(&nodemgr_ne_class.sem); down(&nodemgr_ne_class.sem);
list_for_each_entry(cdev, &nodemgr_ne_class.children, node) { list_for_each_entry(dev, &nodemgr_ne_class.devices, node) {
ne = container_of(cdev, struct node_entry, class_dev); ne = container_of(dev, struct node_entry, node_dev);
if (ne->host == host && ne->nodeid == nodeid) { if (ne->host == host && ne->nodeid == nodeid) {
ret_ne = ne; ret_ne = ne;
@ -935,14 +937,14 @@ static void nodemgr_register_device(struct node_entry *ne,
snprintf(ud->device.bus_id, BUS_ID_SIZE, "%s-%u", snprintf(ud->device.bus_id, BUS_ID_SIZE, "%s-%u",
ne->device.bus_id, ud->id); ne->device.bus_id, ud->id);
ud->class_dev.dev = &ud->device; ud->unit_dev.parent = &ud->device;
ud->class_dev.class = &nodemgr_ud_class; ud->unit_dev.class = &nodemgr_ud_class;
snprintf(ud->class_dev.class_id, BUS_ID_SIZE, "%s-%u", snprintf(ud->unit_dev.bus_id, BUS_ID_SIZE, "%s-%u",
ne->device.bus_id, ud->id); ne->device.bus_id, ud->id);
if (device_register(&ud->device)) if (device_register(&ud->device))
goto fail_devreg; goto fail_devreg;
if (class_device_register(&ud->class_dev)) if (device_register(&ud->unit_dev))
goto fail_classdevreg; goto fail_classdevreg;
get_device(&ud->device); get_device(&ud->device);
@ -1159,7 +1161,7 @@ static void nodemgr_process_root_directory(struct host_info *hi, struct node_ent
#ifdef CONFIG_HOTPLUG #ifdef CONFIG_HOTPLUG
static int nodemgr_uevent(struct class_device *cdev, char **envp, int num_envp, static int nodemgr_uevent(struct device *dev, char **envp, int num_envp,
char *buffer, int buffer_size) char *buffer, int buffer_size)
{ {
struct unit_directory *ud; struct unit_directory *ud;
@ -1169,10 +1171,10 @@ static int nodemgr_uevent(struct class_device *cdev, char **envp, int num_envp,
/* ieee1394:venNmoNspNverN */ /* ieee1394:venNmoNspNverN */
char buf[8 + 1 + 3 + 8 + 2 + 8 + 2 + 8 + 3 + 8 + 1]; char buf[8 + 1 + 3 + 8 + 2 + 8 + 2 + 8 + 3 + 8 + 1];
if (!cdev) if (!dev)
return -ENODEV; return -ENODEV;
ud = container_of(cdev, struct unit_directory, class_dev); ud = container_of(dev, struct unit_directory, unit_dev);
if (ud->ne->in_limbo || ud->ignore_driver) if (ud->ne->in_limbo || ud->ignore_driver)
return -ENODEV; return -ENODEV;
@ -1207,7 +1209,7 @@ do { \
#else #else
static int nodemgr_uevent(struct class_device *cdev, char **envp, int num_envp, static int nodemgr_uevent(struct device *dev, char **envp, int num_envp,
char *buffer, int buffer_size) char *buffer, int buffer_size)
{ {
return -ENODEV; return -ENODEV;
@ -1378,7 +1380,7 @@ static void nodemgr_node_scan(struct host_info *hi, int generation)
static void nodemgr_suspend_ne(struct node_entry *ne) static void nodemgr_suspend_ne(struct node_entry *ne)
{ {
struct class_device *cdev; struct device *dev;
struct unit_directory *ud; struct unit_directory *ud;
HPSB_DEBUG("Node suspended: ID:BUS[" NODE_BUS_FMT "] GUID[%016Lx]", HPSB_DEBUG("Node suspended: ID:BUS[" NODE_BUS_FMT "] GUID[%016Lx]",
@ -1388,8 +1390,8 @@ static void nodemgr_suspend_ne(struct node_entry *ne)
WARN_ON(device_create_file(&ne->device, &dev_attr_ne_in_limbo)); WARN_ON(device_create_file(&ne->device, &dev_attr_ne_in_limbo));
down(&nodemgr_ud_class.sem); down(&nodemgr_ud_class.sem);
list_for_each_entry(cdev, &nodemgr_ud_class.children, node) { list_for_each_entry(dev, &nodemgr_ud_class.devices, node) {
ud = container_of(cdev, struct unit_directory, class_dev); ud = container_of(dev, struct unit_directory, unit_dev);
if (ud->ne != ne) if (ud->ne != ne)
continue; continue;
@ -1404,15 +1406,15 @@ static void nodemgr_suspend_ne(struct node_entry *ne)
static void nodemgr_resume_ne(struct node_entry *ne) static void nodemgr_resume_ne(struct node_entry *ne)
{ {
struct class_device *cdev; struct device *dev;
struct unit_directory *ud; struct unit_directory *ud;
ne->in_limbo = 0; ne->in_limbo = 0;
device_remove_file(&ne->device, &dev_attr_ne_in_limbo); device_remove_file(&ne->device, &dev_attr_ne_in_limbo);
down(&nodemgr_ud_class.sem); down(&nodemgr_ud_class.sem);
list_for_each_entry(cdev, &nodemgr_ud_class.children, node) { list_for_each_entry(dev, &nodemgr_ud_class.devices, node) {
ud = container_of(cdev, struct unit_directory, class_dev); ud = container_of(dev, struct unit_directory, unit_dev);
if (ud->ne != ne) if (ud->ne != ne)
continue; continue;
@ -1430,11 +1432,11 @@ static void nodemgr_update_pdrv(struct node_entry *ne)
{ {
struct unit_directory *ud; struct unit_directory *ud;
struct hpsb_protocol_driver *pdrv; struct hpsb_protocol_driver *pdrv;
struct class_device *cdev; struct device *dev;
down(&nodemgr_ud_class.sem); down(&nodemgr_ud_class.sem);
list_for_each_entry(cdev, &nodemgr_ud_class.children, node) { list_for_each_entry(dev, &nodemgr_ud_class.devices, node) {
ud = container_of(cdev, struct unit_directory, class_dev); ud = container_of(dev, struct unit_directory, unit_dev);
if (ud->ne != ne) if (ud->ne != ne)
continue; continue;
@ -1509,7 +1511,7 @@ static void nodemgr_probe_ne(struct host_info *hi, struct node_entry *ne, int ge
static void nodemgr_node_probe(struct host_info *hi, int generation) static void nodemgr_node_probe(struct host_info *hi, int generation)
{ {
struct hpsb_host *host = hi->host; struct hpsb_host *host = hi->host;
struct class_device *cdev; struct device *dev;
struct node_entry *ne; struct node_entry *ne;
/* Do some processing of the nodes we've probed. This pulls them /* Do some processing of the nodes we've probed. This pulls them
@ -1522,13 +1524,13 @@ static void nodemgr_node_probe(struct host_info *hi, int generation)
* improvement...) */ * improvement...) */
down(&nodemgr_ne_class.sem); down(&nodemgr_ne_class.sem);
list_for_each_entry(cdev, &nodemgr_ne_class.children, node) { list_for_each_entry(dev, &nodemgr_ne_class.devices, node) {
ne = container_of(cdev, struct node_entry, class_dev); ne = container_of(dev, struct node_entry, node_dev);
if (!ne->needs_probe) if (!ne->needs_probe)
nodemgr_probe_ne(hi, ne, generation); nodemgr_probe_ne(hi, ne, generation);
} }
list_for_each_entry(cdev, &nodemgr_ne_class.children, node) { list_for_each_entry(dev, &nodemgr_ne_class.devices, node) {
ne = container_of(cdev, struct node_entry, class_dev); ne = container_of(dev, struct node_entry, node_dev);
if (ne->needs_probe) if (ne->needs_probe)
nodemgr_probe_ne(hi, ne, generation); nodemgr_probe_ne(hi, ne, generation);
} }
@ -1756,13 +1758,13 @@ static int nodemgr_host_thread(void *__hi)
*/ */
int nodemgr_for_each_host(void *data, int (*cb)(struct hpsb_host *, void *)) int nodemgr_for_each_host(void *data, int (*cb)(struct hpsb_host *, void *))
{ {
struct class_device *cdev; struct device *dev;
struct hpsb_host *host; struct hpsb_host *host;
int error = 0; int error = 0;
down(&hpsb_host_class.sem); down(&hpsb_host_class.sem);
list_for_each_entry(cdev, &hpsb_host_class.children, node) { list_for_each_entry(dev, &hpsb_host_class.devices, node) {
host = container_of(cdev, struct hpsb_host, class_dev); host = container_of(dev, struct hpsb_host, host_dev);
if ((error = cb(host, data))) if ((error = cb(host, data)))
break; break;

View file

@ -84,7 +84,7 @@ struct unit_directory {
int length; /* Number of quadlets */ int length; /* Number of quadlets */
struct device device; struct device device;
struct class_device class_dev; struct device unit_dev;
struct csr1212_keyval *ud_kv; struct csr1212_keyval *ud_kv;
u32 lun; /* logical unit number immediate value */ u32 lun; /* logical unit number immediate value */
@ -107,7 +107,7 @@ struct node_entry {
u32 capabilities; u32 capabilities;
struct device device; struct device device;
struct class_device class_dev; struct device node_dev;
/* Means this node is not attached anymore */ /* Means this node is not attached anymore */
int in_limbo; int in_limbo;

View file

@ -3160,9 +3160,9 @@ static int __init init_raw1394(void)
hpsb_register_highlevel(&raw1394_highlevel); hpsb_register_highlevel(&raw1394_highlevel);
if (IS_ERR if (IS_ERR
(class_device_create (device_create(
(hpsb_protocol_class, NULL, hpsb_protocol_class, NULL,
MKDEV(IEEE1394_MAJOR, IEEE1394_MINOR_BLOCK_RAW1394 * 16), NULL, MKDEV(IEEE1394_MAJOR, IEEE1394_MINOR_BLOCK_RAW1394 * 16),
RAW1394_DEVICE_NAME))) { RAW1394_DEVICE_NAME))) {
ret = -EFAULT; ret = -EFAULT;
goto out_unreg; goto out_unreg;
@ -3189,9 +3189,9 @@ static int __init init_raw1394(void)
goto out; goto out;
out_dev: out_dev:
class_device_destroy(hpsb_protocol_class, device_destroy(hpsb_protocol_class,
MKDEV(IEEE1394_MAJOR, MKDEV(IEEE1394_MAJOR,
IEEE1394_MINOR_BLOCK_RAW1394 * 16)); IEEE1394_MINOR_BLOCK_RAW1394 * 16));
out_unreg: out_unreg:
hpsb_unregister_highlevel(&raw1394_highlevel); hpsb_unregister_highlevel(&raw1394_highlevel);
out: out:
@ -3200,9 +3200,9 @@ static int __init init_raw1394(void)
static void __exit cleanup_raw1394(void) static void __exit cleanup_raw1394(void)
{ {
class_device_destroy(hpsb_protocol_class, device_destroy(hpsb_protocol_class,
MKDEV(IEEE1394_MAJOR, MKDEV(IEEE1394_MAJOR,
IEEE1394_MINOR_BLOCK_RAW1394 * 16)); IEEE1394_MINOR_BLOCK_RAW1394 * 16));
cdev_del(&raw1394_cdev); cdev_del(&raw1394_cdev);
hpsb_unregister_highlevel(&raw1394_highlevel); hpsb_unregister_highlevel(&raw1394_highlevel);
hpsb_unregister_protocol(&raw1394_driver); hpsb_unregister_protocol(&raw1394_driver);

View file

@ -1340,9 +1340,9 @@ static void video1394_add_host (struct hpsb_host *host)
hpsb_set_hostinfo_key(&video1394_highlevel, host, ohci->host->id); hpsb_set_hostinfo_key(&video1394_highlevel, host, ohci->host->id);
minor = IEEE1394_MINOR_BLOCK_VIDEO1394 * 16 + ohci->host->id; minor = IEEE1394_MINOR_BLOCK_VIDEO1394 * 16 + ohci->host->id;
class_device_create(hpsb_protocol_class, NULL, MKDEV( device_create(hpsb_protocol_class, NULL,
IEEE1394_MAJOR, minor), MKDEV(IEEE1394_MAJOR, minor),
NULL, "%s-%d", VIDEO1394_DRIVER_NAME, ohci->host->id); "%s-%d", VIDEO1394_DRIVER_NAME, ohci->host->id);
} }
@ -1351,8 +1351,8 @@ static void video1394_remove_host (struct hpsb_host *host)
struct ti_ohci *ohci = hpsb_get_hostinfo(&video1394_highlevel, host); struct ti_ohci *ohci = hpsb_get_hostinfo(&video1394_highlevel, host);
if (ohci) if (ohci)
class_device_destroy(hpsb_protocol_class, MKDEV(IEEE1394_MAJOR, device_destroy(hpsb_protocol_class, MKDEV(IEEE1394_MAJOR,
IEEE1394_MINOR_BLOCK_VIDEO1394 * 16 + ohci->host->id)); IEEE1394_MINOR_BLOCK_VIDEO1394 * 16 + ohci->host->id));
return; return;
} }