aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/ccwgroup.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/cio/ccwgroup.c')
-rw-r--r--drivers/s390/cio/ccwgroup.c67
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 */
160int 171int ccwgroup_create(struct device *root, unsigned int creator_id,
161ccwgroup_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
393int 401/**
394ccwgroup_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 */
407int 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
409void 422/**
410ccwgroup_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 */
428void 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
430int 448/**
431ccwgroup_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 */
457int 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
455void 481/**
456ccwgroup_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 */
489void ccwgroup_remove_ccwdev(struct ccw_device *cdev)
457{ 490{
458 struct ccwgroup_device *gdev; 491 struct ccwgroup_device *gdev;
459 492