Lines Matching defs:cdev
15 #include <linux/cdev.h>
63 static int ur_probe(struct ccw_device *cdev);
64 static void ur_remove(struct ccw_device *cdev);
65 static int ur_set_online(struct ccw_device *cdev);
66 static int ur_set_offline(struct ccw_device *cdev);
89 * (cdev) using the urd->cdev pointer. Each ccw device has a reference to the
90 * ur device using dev_get_drvdata(&cdev->dev) pointer.
94 * dev_get_drvdata(&cdev->dev)
98 * cdev references:
99 * - urdev_alloc get a cdev reference (urd->cdev)
100 * - urdev_free drops the cdev reference (urd->cdev)
102 * Setting and clearing of dev_get_drvdata(&cdev->dev) is protected by the ccwdev lock
104 static struct urdev *urdev_alloc(struct ccw_device *cdev)
111 urd->reclen = cdev->id.driver_info;
112 ccw_device_get_id(cdev, &urd->dev_id);
118 urd->cdev = cdev;
119 get_device(&cdev->dev);
126 if (urd->cdev)
127 put_device(&urd->cdev->dev);
136 static struct urdev *urdev_get_from_cdev(struct ccw_device *cdev)
141 spin_lock_irqsave(get_ccwdev_lock(cdev), flags);
142 urd = dev_get_drvdata(&cdev->dev);
145 spin_unlock_irqrestore(get_ccwdev_lock(cdev), flags);
152 struct ccw_device *cdev;
156 cdev = get_ccwdev_by_busid(&ur_driver, bus_id);
157 if (!cdev)
159 urd = urdev_get_from_cdev(cdev);
160 put_device(&cdev->dev);
255 struct ccw_device *cdev = urd->cdev;
266 spin_lock_irq(get_ccwdev_lock(cdev));
267 rc = ccw_device_start(cdev, cpa, 1, 0, 0);
268 spin_unlock_irq(get_ccwdev_lock(cdev));
291 kobject_uevent_env(&urd->cdev->dev.kobj, KOBJ_CHANGE, envp);
298 static void ur_int_handler(struct ccw_device *cdev, unsigned long intparm,
308 urd = dev_get_drvdata(&cdev->dev);
819 static int ur_probe(struct ccw_device *cdev)
824 TRACE("ur_probe: cdev=%p\n", cdev);
827 urd = urdev_alloc(cdev);
833 rc = ur_create_attributes(&cdev->dev);
849 spin_lock_irq(get_ccwdev_lock(cdev));
850 dev_set_drvdata(&cdev->dev, urd);
851 cdev->handler = ur_int_handler;
852 spin_unlock_irq(get_ccwdev_lock(cdev));
858 ur_remove_attributes(&cdev->dev);
866 static int ur_set_online(struct ccw_device *cdev)
872 TRACE("ur_set_online: cdev=%p\n", cdev);
875 urd = urdev_get_from_cdev(cdev);
903 if (urd->cdev->id.cu_type == READER_PUNCH_DEVTYPE) {
905 sprintf(node_id, "vmrdr-%s", dev_name(&cdev->dev));
907 sprintf(node_id, "vmpun-%s", dev_name(&cdev->dev));
908 } else if (urd->cdev->id.cu_type == PRINTER_DEVTYPE) {
909 sprintf(node_id, "vmprt-%s", dev_name(&cdev->dev));
915 urd->device = device_create(vmur_class, &cdev->dev,
936 static int ur_set_offline_force(struct ccw_device *cdev, int force)
941 TRACE("ur_set_offline: cdev=%p\n", cdev);
942 urd = urdev_get_from_cdev(cdev);
971 static int ur_set_offline(struct ccw_device *cdev)
976 rc = ur_set_offline_force(cdev, 0);
981 static void ur_remove(struct ccw_device *cdev)
989 if (cdev->online)
990 ur_set_offline_force(cdev, 1);
991 ur_remove_attributes(&cdev->dev);
993 spin_lock_irqsave(get_ccwdev_lock(cdev), flags);
994 urdev_put(dev_get_drvdata(&cdev->dev));
995 dev_set_drvdata(&cdev->dev, NULL);
996 cdev->handler = NULL;
997 spin_unlock_irqrestore(get_ccwdev_lock(cdev), flags);