diff options
Diffstat (limited to 'drivers/s390/cio/css.c')
| -rw-r--r-- | drivers/s390/cio/css.c | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/drivers/s390/cio/css.c b/drivers/s390/cio/css.c index e565193650c7..2d319fb812ca 100644 --- a/drivers/s390/cio/css.c +++ b/drivers/s390/cio/css.c | |||
| @@ -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); |
