diff options
Diffstat (limited to 'drivers/s390/cio/ccwgroup.c')
-rw-r--r-- | drivers/s390/cio/ccwgroup.c | 67 |
1 files changed, 50 insertions, 17 deletions
diff --git a/drivers/s390/cio/ccwgroup.c b/drivers/s390/cio/ccwgroup.c index b0a18f5176aa..9c3b9ea1e66f 100644 --- a/drivers/s390/cio/ccwgroup.c +++ b/drivers/s390/cio/ccwgroup.c | |||
@@ -152,16 +152,24 @@ __ccwgroup_create_symlinks(struct ccwgroup_device *gdev) | |||
152 | return 0; | 152 | return 0; |
153 | } | 153 | } |
154 | 154 | ||
155 | /* | 155 | /** |
156 | * try to add a new ccwgroup device for one driver | 156 | * ccwgroup_create() - create and register a ccw group device |
157 | * argc and argv[] are a list of bus_id's of devices | 157 | * @root: parent device for the new device |
158 | * belonging to the driver. | 158 | * @creator_id: identifier of creating driver |
159 | * @cdrv: ccw driver of slave devices | ||
160 | * @argc: number of slave devices | ||
161 | * @argv: bus ids of slave devices | ||
162 | * | ||
163 | * Create and register a new ccw group device as a child of @root. Slave | ||
164 | * devices are obtained from the list of bus ids given in @argv[] and must all | ||
165 | * belong to @cdrv. | ||
166 | * Returns: | ||
167 | * %0 on success and an error code on failure. | ||
168 | * Context: | ||
169 | * non-atomic | ||
159 | */ | 170 | */ |
160 | int | 171 | int ccwgroup_create(struct device *root, unsigned int creator_id, |
161 | ccwgroup_create(struct device *root, | 172 | struct ccw_driver *cdrv, int argc, char *argv[]) |
162 | unsigned int creator_id, | ||
163 | struct ccw_driver *cdrv, | ||
164 | int argc, char *argv[]) | ||
165 | { | 173 | { |
166 | struct ccwgroup_device *gdev; | 174 | struct ccwgroup_device *gdev; |
167 | int i; | 175 | int i; |
@@ -390,8 +398,13 @@ static struct bus_type ccwgroup_bus_type = { | |||
390 | .remove = ccwgroup_remove, | 398 | .remove = ccwgroup_remove, |
391 | }; | 399 | }; |
392 | 400 | ||
393 | int | 401 | /** |
394 | ccwgroup_driver_register (struct ccwgroup_driver *cdriver) | 402 | * ccwgroup_driver_register() - register a ccw group driver |
403 | * @cdriver: driver to be registered | ||
404 | * | ||
405 | * This function is mainly a wrapper around driver_register(). | ||
406 | */ | ||
407 | int ccwgroup_driver_register(struct ccwgroup_driver *cdriver) | ||
395 | { | 408 | { |
396 | /* register our new driver with the core */ | 409 | /* register our new driver with the core */ |
397 | cdriver->driver.bus = &ccwgroup_bus_type; | 410 | cdriver->driver.bus = &ccwgroup_bus_type; |
@@ -406,8 +419,13 @@ __ccwgroup_match_all(struct device *dev, void *data) | |||
406 | return 1; | 419 | return 1; |
407 | } | 420 | } |
408 | 421 | ||
409 | void | 422 | /** |
410 | ccwgroup_driver_unregister (struct ccwgroup_driver *cdriver) | 423 | * ccwgroup_driver_unregister() - deregister a ccw group driver |
424 | * @cdriver: driver to be deregistered | ||
425 | * | ||
426 | * This function is mainly a wrapper around driver_unregister(). | ||
427 | */ | ||
428 | void ccwgroup_driver_unregister(struct ccwgroup_driver *cdriver) | ||
411 | { | 429 | { |
412 | struct device *dev; | 430 | struct device *dev; |
413 | 431 | ||
@@ -427,8 +445,16 @@ ccwgroup_driver_unregister (struct ccwgroup_driver *cdriver) | |||
427 | driver_unregister(&cdriver->driver); | 445 | driver_unregister(&cdriver->driver); |
428 | } | 446 | } |
429 | 447 | ||
430 | int | 448 | /** |
431 | ccwgroup_probe_ccwdev(struct ccw_device *cdev) | 449 | * ccwgroup_probe_ccwdev() - probe function for slave devices |
450 | * @cdev: ccw device to be probed | ||
451 | * | ||
452 | * This is a dummy probe function for ccw devices that are slave devices in | ||
453 | * a ccw group device. | ||
454 | * Returns: | ||
455 | * always %0 | ||
456 | */ | ||
457 | int ccwgroup_probe_ccwdev(struct ccw_device *cdev) | ||
432 | { | 458 | { |
433 | return 0; | 459 | return 0; |
434 | } | 460 | } |
@@ -452,8 +478,15 @@ __ccwgroup_get_gdev_by_cdev(struct ccw_device *cdev) | |||
452 | return NULL; | 478 | return NULL; |
453 | } | 479 | } |
454 | 480 | ||
455 | void | 481 | /** |
456 | ccwgroup_remove_ccwdev(struct ccw_device *cdev) | 482 | * ccwgroup_remove_ccwdev() - remove function for slave devices |
483 | * @cdev: ccw device to be removed | ||
484 | * | ||
485 | * This is a remove function for ccw devices that are slave devices in a ccw | ||
486 | * group device. It sets the ccw device offline and also deregisters the | ||
487 | * embedding ccw group device. | ||
488 | */ | ||
489 | void ccwgroup_remove_ccwdev(struct ccw_device *cdev) | ||
457 | { | 490 | { |
458 | struct ccwgroup_device *gdev; | 491 | struct ccwgroup_device *gdev; |
459 | 492 | ||