• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/s390/cio/

Lines Matching refs:gdev

35 	struct ccwgroup_device *gdev;
38 gdev = to_ccwgroupdev(dev);
41 if (gdev->creator_id == gdrv->driver_id)
56 __ccwgroup_remove_symlinks(struct ccwgroup_device *gdev)
61 for (i = 0; i < gdev->count; i++) {
63 sysfs_remove_link(&gdev->dev.kobj, str);
64 sysfs_remove_link(&gdev->cdev[i]->dev.kobj, "group_device");
75 struct ccwgroup_device *gdev = to_ccwgroupdev(dev);
77 mutex_lock(&gdev->reg_mutex);
78 if (device_is_registered(&gdev->dev)) {
79 __ccwgroup_remove_symlinks(gdev);
82 mutex_unlock(&gdev->reg_mutex);
88 struct ccwgroup_device *gdev;
91 gdev = to_ccwgroupdev(dev);
94 if (atomic_cmpxchg(&gdev->onoff, 0, 1) != 0)
96 if (gdev->state != CCWGROUP_OFFLINE) {
108 atomic_set(&gdev->onoff, 0);
119 struct ccwgroup_device *gdev;
122 gdev = to_ccwgroupdev(dev);
124 for (i = 0; i < gdev->count; i++) {
125 if (gdev->cdev[i]) {
126 spin_lock_irq(gdev->cdev[i]->ccwlock);
127 if (dev_get_drvdata(&gdev->cdev[i]->dev) == gdev)
128 dev_set_drvdata(&gdev->cdev[i]->dev, NULL);
129 spin_unlock_irq(gdev->cdev[i]->ccwlock);
130 put_device(&gdev->cdev[i]->dev);
133 kfree(gdev);
137 __ccwgroup_create_symlinks(struct ccwgroup_device *gdev)
142 for (i = 0; i < gdev->count; i++) {
143 rc = sysfs_create_link(&gdev->cdev[i]->dev.kobj, &gdev->dev.kobj,
147 sysfs_remove_link(&gdev->cdev[i]->dev.kobj,
152 for (i = 0; i < gdev->count; i++) {
154 rc = sysfs_create_link(&gdev->dev.kobj, &gdev->cdev[i]->dev.kobj,
159 sysfs_remove_link(&gdev->dev.kobj, str);
161 for (i = 0; i < gdev->count; i++)
162 sysfs_remove_link(&gdev->cdev[i]->dev.kobj,
226 struct ccwgroup_device *gdev;
231 gdev = kzalloc(sizeof(*gdev) + num_devices * sizeof(gdev->cdev[0]),
233 if (!gdev)
236 atomic_set(&gdev->onoff, 0);
237 mutex_init(&gdev->reg_mutex);
238 mutex_lock(&gdev->reg_mutex);
239 gdev->creator_id = creator_id;
240 gdev->count = num_devices;
241 gdev->dev.bus = &ccwgroup_bus_type;
242 gdev->dev.parent = root;
243 gdev->dev.release = ccwgroup_release;
244 device_initialize(&gdev->dev);
255 gdev->cdev[i] = get_ccwdev_by_busid(cdrv, tmp_bus_id);
260 if (!gdev->cdev[i]
261 || gdev->cdev[i]->id.driver_info !=
262 gdev->cdev[0]->id.driver_info) {
267 spin_lock_irq(gdev->cdev[i]->ccwlock);
268 if (dev_get_drvdata(&gdev->cdev[i]->dev)) {
269 spin_unlock_irq(gdev->cdev[i]->ccwlock);
273 dev_set_drvdata(&gdev->cdev[i]->dev, gdev);
274 spin_unlock_irq(gdev->cdev[i]->ccwlock);
287 dev_set_name(&gdev->dev, "%s", dev_name(&gdev->cdev[0]->dev));
289 rc = device_add(&gdev->dev);
292 get_device(&gdev->dev);
293 rc = device_create_file(&gdev->dev, &dev_attr_ungroup);
296 device_unregister(&gdev->dev);
300 rc = __ccwgroup_create_symlinks(gdev);
302 mutex_unlock(&gdev->reg_mutex);
303 put_device(&gdev->dev);
306 device_remove_file(&gdev->dev, &dev_attr_ungroup);
307 device_unregister(&gdev->dev);
310 if (gdev->cdev[i]) {
311 spin_lock_irq(gdev->cdev[i]->ccwlock);
312 if (dev_get_drvdata(&gdev->cdev[i]->dev) == gdev)
313 dev_set_drvdata(&gdev->cdev[i]->dev, NULL);
314 spin_unlock_irq(gdev->cdev[i]->ccwlock);
315 put_device(&gdev->cdev[i]->dev);
316 gdev->cdev[i] = NULL;
318 mutex_unlock(&gdev->reg_mutex);
319 put_device(&gdev->dev);
358 ccwgroup_set_online(struct ccwgroup_device *gdev)
363 if (atomic_cmpxchg(&gdev->onoff, 0, 1) != 0)
365 if (gdev->state == CCWGROUP_ONLINE) {
369 if (!gdev->dev.driver) {
373 gdrv = to_ccwgroupdrv (gdev->dev.driver);
374 if ((ret = gdrv->set_online ? gdrv->set_online(gdev) : 0))
377 gdev->state = CCWGROUP_ONLINE;
379 atomic_set(&gdev->onoff, 0);
384 ccwgroup_set_offline(struct ccwgroup_device *gdev)
389 if (atomic_cmpxchg(&gdev->onoff, 0, 1) != 0)
391 if (gdev->state == CCWGROUP_OFFLINE) {
395 if (!gdev->dev.driver) {
399 gdrv = to_ccwgroupdrv (gdev->dev.driver);
400 if ((ret = gdrv->set_offline ? gdrv->set_offline(gdev) : 0))
403 gdev->state = CCWGROUP_OFFLINE;
405 atomic_set(&gdev->onoff, 0);
412 struct ccwgroup_device *gdev;
420 gdev = to_ccwgroupdev(dev);
431 ret = ccwgroup_set_online(gdev);
433 ret = ccwgroup_set_offline(gdev);
456 struct ccwgroup_device *gdev;
461 gdev = to_ccwgroupdev(dev);
467 ret = gdrv->probe ? gdrv->probe(gdev) : -ENODEV;
477 struct ccwgroup_device *gdev;
486 gdev = to_ccwgroupdev(dev);
490 gdrv->remove(gdev);
497 struct ccwgroup_device *gdev;
503 gdev = to_ccwgroupdev(dev);
507 gdrv->shutdown(gdev);
512 struct ccwgroup_device *gdev = to_ccwgroupdev(dev);
513 struct ccwgroup_driver *gdrv = to_ccwgroupdrv(gdev->dev.driver);
516 if (atomic_read(&gdev->onoff))
519 if (!gdev->dev.driver || gdev->state != CCWGROUP_ONLINE)
522 return gdrv->prepare ? gdrv->prepare(gdev) : 0;
527 struct ccwgroup_device *gdev = to_ccwgroupdev(dev);
530 if (!gdev->dev.driver || gdev->state != CCWGROUP_ONLINE)
534 gdrv->complete(gdev);
539 struct ccwgroup_device *gdev = to_ccwgroupdev(dev);
540 struct ccwgroup_driver *gdrv = to_ccwgroupdrv(gdev->dev.driver);
542 if (!gdev->dev.driver || gdev->state != CCWGROUP_ONLINE)
545 return gdrv->freeze ? gdrv->freeze(gdev) : 0;
550 struct ccwgroup_device *gdev = to_ccwgroupdev(dev);
551 struct ccwgroup_driver *gdrv = to_ccwgroupdrv(gdev->dev.driver);
553 if (!gdev->dev.driver || gdev->state != CCWGROUP_ONLINE)
556 return gdrv->thaw ? gdrv->thaw(gdev) : 0;
561 struct ccwgroup_device *gdev = to_ccwgroupdev(dev);
562 struct ccwgroup_driver *gdrv = to_ccwgroupdrv(gdev->dev.driver);
564 if (!gdev->dev.driver || gdev->state != CCWGROUP_ONLINE)
567 return gdrv->restore ? gdrv->restore(gdev) : 0;
637 struct ccwgroup_device *gdev = to_ccwgroupdev(dev);
639 mutex_lock(&gdev->reg_mutex);
640 __ccwgroup_remove_symlinks(gdev);
642 mutex_unlock(&gdev->reg_mutex);
666 struct ccwgroup_device *gdev;
668 gdev = dev_get_drvdata(&cdev->dev);
669 if (gdev) {
670 if (get_device(&gdev->dev)) {
671 mutex_lock(&gdev->reg_mutex);
672 if (device_is_registered(&gdev->dev))
673 return gdev;
674 mutex_unlock(&gdev->reg_mutex);
675 put_device(&gdev->dev);
692 struct ccwgroup_device *gdev;
697 gdev = __ccwgroup_get_gdev_by_cdev(cdev);
698 if (gdev) {
699 __ccwgroup_remove_symlinks(gdev);
700 device_unregister(&gdev->dev);
701 mutex_unlock(&gdev->reg_mutex);
702 put_device(&gdev->dev);