[S390] cio: Get rid of _ccw_device_get_device_number().
[firefly-linux-kernel-4.4.55.git] / drivers / s390 / char / raw3270.c
index e95b56f810dbb25e1e4aea8730e6fa271c1bbcd3..f6ef90ee3e7d83d06090ff594818d2f40fdd6c85 100644 (file)
@@ -29,7 +29,7 @@
 #include <linux/device.h>
 #include <linux/mutex.h>
 
-struct class *class3270;
+static struct class *class3270;
 
 /* The main 3270 data structure. */
 struct raw3270 {
@@ -86,7 +86,7 @@ DECLARE_WAIT_QUEUE_HEAD(raw3270_wait_queue);
 /*
  * Encode array for 12 bit 3270 addresses.
  */
-unsigned char raw3270_ebcgraf[64] =    {
+static unsigned char raw3270_ebcgraf[64] =     {
        0x40, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
        0xc8, 0xc9, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
        0x50, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
@@ -555,7 +555,7 @@ raw3270_start_init(struct raw3270 *rp, struct raw3270_view *view,
 #ifdef CONFIG_TN3270_CONSOLE
        if (raw3270_registered == 0) {
                spin_lock_irqsave(get_ccwdev_lock(view->dev->cdev), flags);
-               rq->callback = 0;
+               rq->callback = NULL;
                rc = __raw3270_start(rp, view, rq);
                if (rc == 0)
                        while (!raw3270_request_final(rq)) {
@@ -589,9 +589,10 @@ static int
 __raw3270_size_device_vm(struct raw3270 *rp)
 {
        int rc, model;
+       struct ccw_dev_id dev_id;
 
-       raw3270_init_diag210.vrdcdvno = 
-               _ccw_device_get_device_number(rp->cdev);
+       ccw_device_get_id(rp->cdev, &dev_id);
+       raw3270_init_diag210.vrdcdvno = dev_id.devno;
        raw3270_init_diag210.vrdclen = sizeof(struct diag210);
        rc = diag210(&raw3270_init_diag210);
        if (rc)
@@ -719,8 +720,8 @@ raw3270_size_device(struct raw3270 *rp)
                rc = __raw3270_size_device_vm(rp);
        else
                rc = __raw3270_size_device(rp);
-       raw3270_init_view.dev = 0;
-       rp->view = 0;
+       raw3270_init_view.dev = NULL;
+       rp->view = NULL;
        up(&raw3270_init_sem);
        if (rc == 0) {  /* Found something. */
                /* Try to find a model. */
@@ -761,8 +762,8 @@ raw3270_reset_device(struct raw3270 *rp)
        rp->view = &raw3270_init_view;
        raw3270_init_view.dev = rp;
        rc = raw3270_start_init(rp, &raw3270_init_view, &rp->init_request);
-       raw3270_init_view.dev = 0;
-       rp->view = 0;
+       raw3270_init_view.dev = NULL;
+       rp->view = NULL;
        up(&raw3270_init_sem);
        return rc;
 }
@@ -934,7 +935,7 @@ raw3270_activate_view(struct raw3270_view *view)
        else if (!test_bit(RAW3270_FLAGS_READY, &rp->flags))
                rc = -ENODEV;
        else {
-               oldview = 0;
+               oldview = NULL;
                if (rp->view) {
                        oldview = rp->view;
                        oldview->fn->deactivate(oldview);
@@ -951,7 +952,7 @@ raw3270_activate_view(struct raw3270_view *view)
                                                rp->view = nv;
                                                if (nv->fn->activate(nv) == 0)
                                                        break;
-                                               rp->view = 0;
+                                               rp->view = NULL;
                                        }
                        }
                }
@@ -975,7 +976,7 @@ raw3270_deactivate_view(struct raw3270_view *view)
        spin_lock_irqsave(get_ccwdev_lock(rp->cdev), flags);
        if (rp->view == view) {
                view->fn->deactivate(view);
-               rp->view = 0;
+               rp->view = NULL;
                /* Move deactivated view to end of list. */
                list_del_init(&view->list);
                list_add_tail(&view->list, &rp->view_list);
@@ -985,7 +986,7 @@ raw3270_deactivate_view(struct raw3270_view *view)
                                rp->view = view;
                                if (view->fn->activate(view) == 0)
                                        break;
-                               rp->view = 0;
+                               rp->view = NULL;
                        }
                }
        }
@@ -1076,7 +1077,7 @@ raw3270_del_view(struct raw3270_view *view)
        spin_lock_irqsave(get_ccwdev_lock(rp->cdev), flags);
        if (rp->view == view) {
                view->fn->deactivate(view);
-               rp->view = 0;
+               rp->view = NULL;
        }
        list_del_init(&view->list);
        if (!rp->view && test_bit(RAW3270_FLAGS_READY, &rp->flags)) {
@@ -1106,10 +1107,10 @@ raw3270_delete_device(struct raw3270 *rp)
 
        /* Remove from device chain. */
        mutex_lock(&raw3270_mutex);
-       if (rp->clttydev)
+       if (rp->clttydev && !IS_ERR(rp->clttydev))
                class_device_destroy(class3270,
                                     MKDEV(IBM_TTY3270_MAJOR, rp->minor));
-       if (rp->cltubdev)
+       if (rp->cltubdev && !IS_ERR(rp->cltubdev))
                class_device_destroy(class3270,
                                     MKDEV(IBM_FS3270_MAJOR, rp->minor));
        list_del_init(&rp->list);
@@ -1117,9 +1118,9 @@ raw3270_delete_device(struct raw3270 *rp)
 
        /* Disconnect from ccw_device. */
        cdev = rp->cdev;
-       rp->cdev = 0;
-       cdev->dev.driver_data = 0;
-       cdev->handler = 0;
+       rp->cdev = NULL;
+       cdev->dev.driver_data = NULL;
+       cdev->handler = NULL;
 
        /* Put ccw_device structure. */
        put_device(&cdev->dev);
@@ -1144,7 +1145,7 @@ raw3270_model_show(struct device *dev, struct device_attribute *attr, char *buf)
        return snprintf(buf, PAGE_SIZE, "%i\n",
                        ((struct raw3270 *) dev->driver_data)->model);
 }
-static DEVICE_ATTR(model, 0444, raw3270_model_show, 0);
+static DEVICE_ATTR(model, 0444, raw3270_model_show, NULL);
 
 static ssize_t
 raw3270_rows_show(struct device *dev, struct device_attribute *attr, char *buf)
@@ -1152,7 +1153,7 @@ raw3270_rows_show(struct device *dev, struct device_attribute *attr, char *buf)
        return snprintf(buf, PAGE_SIZE, "%i\n",
                        ((struct raw3270 *) dev->driver_data)->rows);
 }
-static DEVICE_ATTR(rows, 0444, raw3270_rows_show, 0);
+static DEVICE_ATTR(rows, 0444, raw3270_rows_show, NULL);
 
 static ssize_t
 raw3270_columns_show(struct device *dev, struct device_attribute *attr, char *buf)
@@ -1160,7 +1161,7 @@ raw3270_columns_show(struct device *dev, struct device_attribute *attr, char *bu
        return snprintf(buf, PAGE_SIZE, "%i\n",
                        ((struct raw3270 *) dev->driver_data)->cols);
 }
-static DEVICE_ATTR(columns, 0444, raw3270_columns_show, 0);
+static DEVICE_ATTR(columns, 0444, raw3270_columns_show, NULL);
 
 static struct attribute * raw3270_attrs[] = {
        &dev_attr_model.attr,
@@ -1173,21 +1174,37 @@ static struct attribute_group raw3270_attr_group = {
        .attrs = raw3270_attrs,
 };
 
-static void
-raw3270_create_attributes(struct raw3270 *rp)
+static int raw3270_create_attributes(struct raw3270 *rp)
 {
-       //FIXME: check return code
-       sysfs_create_group(&rp->cdev->dev.kobj, &raw3270_attr_group);
-       rp->clttydev =
-               class_device_create(class3270, NULL,
-                                   MKDEV(IBM_TTY3270_MAJOR, rp->minor),
-                                   &rp->cdev->dev, "tty%s",
-                                   rp->cdev->dev.bus_id);
-       rp->cltubdev =
-               class_device_create(class3270, NULL,
-                                   MKDEV(IBM_FS3270_MAJOR, rp->minor),
-                                   &rp->cdev->dev, "tub%s",
-                                   rp->cdev->dev.bus_id);
+       int rc;
+
+       rc = sysfs_create_group(&rp->cdev->dev.kobj, &raw3270_attr_group);
+       if (rc)
+               goto out;
+
+       rp->clttydev = class_device_create(class3270, NULL,
+                                          MKDEV(IBM_TTY3270_MAJOR, rp->minor),
+                                          &rp->cdev->dev, "tty%s",
+                                          rp->cdev->dev.bus_id);
+       if (IS_ERR(rp->clttydev)) {
+               rc = PTR_ERR(rp->clttydev);
+               goto out_ttydev;
+       }
+
+       rp->cltubdev = class_device_create(class3270, NULL,
+                                          MKDEV(IBM_FS3270_MAJOR, rp->minor),
+                                          &rp->cdev->dev, "tub%s",
+                                          rp->cdev->dev.bus_id);
+       if (!IS_ERR(rp->cltubdev))
+               goto out;
+
+       rc = PTR_ERR(rp->cltubdev);
+       class_device_destroy(class3270, MKDEV(IBM_TTY3270_MAJOR, rp->minor));
+
+out_ttydev:
+       sysfs_remove_group(&rp->cdev->dev.kobj, &raw3270_attr_group);
+out:
+       return rc;
 }
 
 /*
@@ -1255,7 +1272,9 @@ raw3270_set_online (struct ccw_device *cdev)
        rc = raw3270_reset_device(rp);
        if (rc)
                goto failure;
-       raw3270_create_attributes(rp);
+       rc = raw3270_create_attributes(rp);
+       if (rc)
+               goto failure;
        set_bit(RAW3270_FLAGS_READY, &rp->flags);
        mutex_lock(&raw3270_mutex);
        list_for_each_entry(np, &raw3270_notifier, list)
@@ -1296,7 +1315,7 @@ raw3270_remove (struct ccw_device *cdev)
        spin_lock_irqsave(get_ccwdev_lock(cdev), flags);
        if (rp->view) {
                rp->view->fn->deactivate(rp->view);
-               rp->view = 0;
+               rp->view = NULL;
        }
        while (!list_empty(&rp->view_list)) {
                v = list_entry(rp->view_list.next, struct raw3270_view, list);