diff options
Diffstat (limited to 'drivers/s390/cio/css.c')
-rw-r--r-- | drivers/s390/cio/css.c | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/drivers/s390/cio/css.c b/drivers/s390/cio/css.c index e565193650c7..516108779f60 100644 --- a/drivers/s390/cio/css.c +++ b/drivers/s390/cio/css.c | |||
@@ -1,12 +1,12 @@ | |||
1 | /* | 1 | /* |
2 | * drivers/s390/cio/css.c | 2 | * drivers/s390/cio/css.c |
3 | * driver for channel subsystem | 3 | * driver for channel subsystem |
4 | * $Revision: 1.93 $ | 4 | * $Revision: 1.96 $ |
5 | * | 5 | * |
6 | * Copyright (C) 2002 IBM Deutschland Entwicklung GmbH, | 6 | * Copyright (C) 2002 IBM Deutschland Entwicklung GmbH, |
7 | * IBM Corporation | 7 | * IBM Corporation |
8 | * Author(s): Arnd Bergmann (arndb@de.ibm.com) | 8 | * Author(s): Arnd Bergmann (arndb@de.ibm.com) |
9 | * Cornelia Huck (cohuck@de.ibm.com) | 9 | * Cornelia Huck (cornelia.huck@de.ibm.com) |
10 | */ | 10 | */ |
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
@@ -542,9 +542,41 @@ css_bus_match (struct device *dev, struct device_driver *drv) | |||
542 | return 0; | 542 | return 0; |
543 | } | 543 | } |
544 | 544 | ||
545 | static int | ||
546 | css_probe (struct device *dev) | ||
547 | { | ||
548 | struct subchannel *sch; | ||
549 | |||
550 | sch = to_subchannel(dev); | ||
551 | sch->driver = container_of (dev->driver, struct css_driver, drv); | ||
552 | return (sch->driver->probe ? sch->driver->probe(sch) : 0); | ||
553 | } | ||
554 | |||
555 | static int | ||
556 | css_remove (struct device *dev) | ||
557 | { | ||
558 | struct subchannel *sch; | ||
559 | |||
560 | sch = to_subchannel(dev); | ||
561 | return (sch->driver->remove ? sch->driver->remove(sch) : 0); | ||
562 | } | ||
563 | |||
564 | static void | ||
565 | css_shutdown (struct device *dev) | ||
566 | { | ||
567 | struct subchannel *sch; | ||
568 | |||
569 | sch = to_subchannel(dev); | ||
570 | if (sch->driver->shutdown) | ||
571 | sch->driver->shutdown(sch); | ||
572 | } | ||
573 | |||
545 | struct bus_type css_bus_type = { | 574 | struct bus_type css_bus_type = { |
546 | .name = "css", | 575 | .name = "css", |
547 | .match = &css_bus_match, | 576 | .match = css_bus_match, |
577 | .probe = css_probe, | ||
578 | .remove = css_remove, | ||
579 | .shutdown = css_shutdown, | ||
548 | }; | 580 | }; |
549 | 581 | ||
550 | subsys_initcall(init_channel_subsystem); | 582 | subsys_initcall(init_channel_subsystem); |