Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 77176
b: refs/heads/master
c: 25b7bb5
h: refs/heads/master
v: v3
  • Loading branch information
Cornelia Huck authored and Martin Schwidefsky committed Jan 26, 2008
1 parent 669b455 commit 3bcfb62
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 7 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 98c13c283a4e8b7f844f1f470abd7c756248fcc4
refs/heads/master: 25b7bb5838ab81b68a9de72df577103d8b4aba3c
27 changes: 27 additions & 0 deletions trunk/drivers/s390/cio/css.c
Original file line number Diff line number Diff line change
Expand Up @@ -837,6 +837,33 @@ struct bus_type css_bus_type = {
.shutdown = css_shutdown,
};

/**
* css_driver_register - register a css driver
* @cdrv: css driver to register
*
* This is mainly a wrapper around driver_register that sets name
* and bus_type in the embedded struct device_driver correctly.
*/
int css_driver_register(struct css_driver *cdrv)
{
cdrv->drv.name = cdrv->name;
cdrv->drv.bus = &css_bus_type;
return driver_register(&cdrv->drv);
}
EXPORT_SYMBOL_GPL(css_driver_register);

/**
* css_driver_unregister - unregister a css driver
* @cdrv: css driver to unregister
*
* This is a wrapper around driver_unregister.
*/
void css_driver_unregister(struct css_driver *cdrv)
{
driver_unregister(&cdrv->drv);
}
EXPORT_SYMBOL_GPL(css_driver_unregister);

subsys_initcall(init_channel_subsystem);

MODULE_LICENSE("GPL");
Expand Down
4 changes: 4 additions & 0 deletions trunk/drivers/s390/cio/css.h
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ struct css_driver {
int (*probe)(struct subchannel *);
int (*remove)(struct subchannel *);
void (*shutdown)(struct subchannel *);
const char *name;
};

#define to_cssdriver(n) container_of(n, struct css_driver, drv)
Expand All @@ -141,6 +142,9 @@ struct css_driver {
*/
extern struct bus_type css_bus_type;

extern int css_driver_register(struct css_driver *);
extern void css_driver_unregister(struct css_driver *);

extern void css_sch_device_unregister(struct subchannel *);
extern struct subchannel * get_subchannel_by_schid(struct subchannel_id);
extern int css_init_done;
Expand Down
10 changes: 4 additions & 6 deletions trunk/drivers/s390/cio/device.c
Original file line number Diff line number Diff line change
Expand Up @@ -125,10 +125,7 @@ static void io_subchannel_shutdown(struct subchannel *);

static struct css_driver io_subchannel_driver = {
.subchannel_type = SUBCHANNEL_TYPE_IO,
.drv = {
.name = "io_subchannel",
.bus = &css_bus_type,
},
.name = "io_subchannel",
.irq = io_subchannel_irq,
.notify = io_subchannel_notify,
.verify = io_subchannel_verify,
Expand Down Expand Up @@ -167,7 +164,8 @@ init_ccw_bus_type (void)
if ((ret = bus_register (&ccw_bus_type)))
goto out_err;

if ((ret = driver_register(&io_subchannel_driver.drv)))
ret = css_driver_register(&io_subchannel_driver);
if (ret)
goto out_err;

wait_event(ccw_device_init_wq,
Expand All @@ -187,7 +185,7 @@ init_ccw_bus_type (void)
static void __exit
cleanup_ccw_bus_type (void)
{
driver_unregister(&io_subchannel_driver.drv);
css_driver_unregister(&io_subchannel_driver);
bus_unregister(&ccw_bus_type);
destroy_workqueue(ccw_device_notify_work);
destroy_workqueue(ccw_device_work);
Expand Down

0 comments on commit 3bcfb62

Please sign in to comment.