diff options
Diffstat (limited to 'drivers/rapidio/devices/rio_mport_cdev.c')
| -rw-r--r-- | drivers/rapidio/devices/rio_mport_cdev.c | 39 |
1 files changed, 11 insertions, 28 deletions
diff --git a/drivers/rapidio/devices/rio_mport_cdev.c b/drivers/rapidio/devices/rio_mport_cdev.c index a115730ebf14..995cfeca972b 100644 --- a/drivers/rapidio/devices/rio_mport_cdev.c +++ b/drivers/rapidio/devices/rio_mport_cdev.c @@ -98,18 +98,6 @@ MODULE_PARM_DESC(dbg_level, "Debugging output level (default 0 = none)"); #endif /* - * An internal DMA coherent buffer - */ -struct mport_dma_buf { - void *ib_base; - dma_addr_t ib_phys; - u32 ib_size; - u64 ib_rio_base; - bool ib_map; - struct file *filp; -}; - -/* * Internal memory mapping structure */ enum rio_mport_map_dir { @@ -131,14 +119,6 @@ struct rio_mport_mapping { struct file *filp; }; -struct rio_mport_dma_map { - int valid; - u64 length; - void *vaddr; - dma_addr_t paddr; -}; - -#define MPORT_MAX_DMA_BUFS 16 #define MPORT_EVENT_DEPTH 10 /* @@ -250,7 +230,9 @@ static DEFINE_MUTEX(mport_devs_lock); static DECLARE_WAIT_QUEUE_HEAD(mport_cdev_wait); #endif -static struct class *dev_class; +static const struct class dev_class = { + .name = DRV_NAME, +}; static dev_t dev_number; static void mport_release_mapping(struct kref *ref); @@ -1740,7 +1722,8 @@ static int rio_mport_add_riodev(struct mport_cdev_priv *priv, err = rio_add_net(net); if (err) { rmcd_debug(RDEV, "failed to register net, err=%d", err); - kfree(net); + put_device(&net->dev); + mport->net = NULL; goto cleanup; } } @@ -2379,7 +2362,7 @@ static struct mport_dev *mport_cdev_add(struct rio_mport *mport) device_initialize(&md->dev); md->dev.devt = MKDEV(MAJOR(dev_number), mport->id); - md->dev.class = dev_class; + md->dev.class = &dev_class; md->dev.parent = &mport->dev; md->dev.release = mport_device_release; dev_set_name(&md->dev, DEV_NAME "%d", mport->id); @@ -2600,10 +2583,10 @@ static int __init mport_init(void) int ret; /* Create device class needed by udev */ - dev_class = class_create(DRV_NAME); - if (IS_ERR(dev_class)) { + ret = class_register(&dev_class); + if (ret) { rmcd_error("Unable to create " DRV_NAME " class"); - return PTR_ERR(dev_class); + return ret; } ret = alloc_chrdev_region(&dev_number, 0, RIO_MAX_MPORTS, DRV_NAME); @@ -2624,7 +2607,7 @@ static int __init mport_init(void) err_cli: unregister_chrdev_region(dev_number, RIO_MAX_MPORTS); err_chr: - class_destroy(dev_class); + class_unregister(&dev_class); return ret; } @@ -2634,7 +2617,7 @@ err_chr: static void __exit mport_exit(void) { class_interface_unregister(&rio_mport_interface); - class_destroy(dev_class); + class_unregister(&dev_class); unregister_chrdev_region(dev_number, RIO_MAX_MPORTS); } |
