From 6c89184b5081e8398f7ff37ebae7654c2b32b829 Mon Sep 17 00:00:00 2001 From: Cornelia Huck Date: Tue, 5 Feb 2008 16:50:36 +0100 Subject: [PATCH] --- yaml --- r: 83293 b: refs/heads/master c: 01bc8ad165490458a8feb744c8f401c1a7098e3a h: refs/heads/master i: 83291: 5c7b4e29f1dc2ae1d1fa273d3cf239298e813f42 v: v3 --- [refs] | 2 +- trunk/drivers/s390/cio/ccwgroup.c | 12 ++++++++++++ trunk/include/asm-s390/ccwgroup.h | 2 ++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 86ee0397eb87..400b603bf10f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2fffc9355e6240466d1af764b0dcdede52085f7c +refs/heads/master: 01bc8ad165490458a8feb744c8f401c1a7098e3a diff --git a/trunk/drivers/s390/cio/ccwgroup.c b/trunk/drivers/s390/cio/ccwgroup.c index 3964056a9a47..03914fa81174 100644 --- a/trunk/drivers/s390/cio/ccwgroup.c +++ b/trunk/drivers/s390/cio/ccwgroup.c @@ -391,12 +391,24 @@ ccwgroup_remove (struct device *dev) return 0; } +static void ccwgroup_shutdown(struct device *dev) +{ + struct ccwgroup_device *gdev; + struct ccwgroup_driver *gdrv; + + gdev = to_ccwgroupdev(dev); + gdrv = to_ccwgroupdrv(dev->driver); + if (gdrv && gdrv->shutdown) + gdrv->shutdown(gdev); +} + static struct bus_type ccwgroup_bus_type = { .name = "ccwgroup", .match = ccwgroup_bus_match, .uevent = ccwgroup_uevent, .probe = ccwgroup_probe, .remove = ccwgroup_remove, + .shutdown = ccwgroup_shutdown, }; /** diff --git a/trunk/include/asm-s390/ccwgroup.h b/trunk/include/asm-s390/ccwgroup.h index 7109c7cab87e..289053ef5e60 100644 --- a/trunk/include/asm-s390/ccwgroup.h +++ b/trunk/include/asm-s390/ccwgroup.h @@ -37,6 +37,7 @@ struct ccwgroup_device { * @remove: function called on remove * @set_online: function called when device is set online * @set_offline: function called when device is set offline + * @shutdown: function called when device is shut down * @driver: embedded driver structure */ struct ccwgroup_driver { @@ -49,6 +50,7 @@ struct ccwgroup_driver { void (*remove) (struct ccwgroup_device *); int (*set_online) (struct ccwgroup_device *); int (*set_offline) (struct ccwgroup_device *); + void (*shutdown)(struct ccwgroup_device *); struct device_driver driver; };