]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/s390/cio/device.c
Driver core: change add_uevent_var to use a struct
[linux-2.6-omap-h63xx.git] / drivers / s390 / cio / device.c
index 6b264bdb5bfb1c09097f5133a44becedda7c3865..606bb53e9faef9ad8fba8320a6c624b06965cff7 100644 (file)
@@ -78,45 +78,37 @@ static int snprint_alias(char *buf, size_t size,
 
 /* Set up environment variables for ccw device uevent. Return 0 on success,
  * non-zero otherwise. */
-static int ccw_uevent(struct device *dev, char **envp, int num_envp,
-                     char *buffer, int buffer_size)
+static int ccw_uevent(struct device *dev, struct kobj_uevent_env *env)
 {
        struct ccw_device *cdev = to_ccwdev(dev);
        struct ccw_device_id *id = &(cdev->id);
-       int i = 0;
-       int len = 0;
        int ret;
        char modalias_buf[30];
 
        /* CU_TYPE= */
-       ret = add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &len,
-                            "CU_TYPE=%04X", id->cu_type);
+       ret = add_uevent_var(env, "CU_TYPE=%04X", id->cu_type);
        if (ret)
                return ret;
 
        /* CU_MODEL= */
-       ret = add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &len,
-                            "CU_MODEL=%02X", id->cu_model);
+       ret = add_uevent_var(env, "CU_MODEL=%02X", id->cu_model);
        if (ret)
                return ret;
 
        /* The next two can be zero, that's ok for us */
        /* DEV_TYPE= */
-       ret = add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &len,
-                            "DEV_TYPE=%04X", id->dev_type);
+       ret = add_uevent_var(env, "DEV_TYPE=%04X", id->dev_type);
        if (ret)
                return ret;
 
        /* DEV_MODEL= */
-       ret = add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &len,
-                            "DEV_MODEL=%02X", id->dev_model);
+       ret = add_uevent_var(env, "DEV_MODEL=%02X", id->dev_model);
        if (ret)
                return ret;
 
        /* MODALIAS=  */
        snprint_alias(modalias_buf, sizeof(modalias_buf), id, "");
-       ret = add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &len,
-                            "MODALIAS=%s", modalias_buf);
+       ret = add_uevent_var(env, "MODALIAS=%s", modalias_buf);
        return ret;
 }
 
@@ -272,7 +264,7 @@ modalias_show (struct device *dev, struct device_attribute *attr, char *buf)
        struct ccw_device_id *id = &(cdev->id);
        int len;
 
-       len = snprint_alias(buf, PAGE_SIZE, id, "\n") + 1;
+       len = snprint_alias(buf, PAGE_SIZE, id, "\n");
 
        return len > PAGE_SIZE ? PAGE_SIZE : len;
 }
@@ -338,15 +330,20 @@ ccw_device_remove_disconnected(struct ccw_device *cdev)
                rc = device_schedule_callback(&cdev->dev,
                                              ccw_device_remove_orphan_cb);
                if (rc)
-                       dev_info(&cdev->dev, "Couldn't unregister orphan\n");
+                       CIO_MSG_EVENT(2, "Couldn't unregister orphan "
+                                     "0.%x.%04x\n",
+                                     cdev->private->dev_id.ssid,
+                                     cdev->private->dev_id.devno);
                return;
        }
        /* Deregister subchannel, which will kill the ccw device. */
        rc = device_schedule_callback(cdev->dev.parent,
                                      ccw_device_remove_sch_cb);
        if (rc)
-               dev_info(&cdev->dev,
-                        "Couldn't unregister disconnected device\n");
+               CIO_MSG_EVENT(2, "Couldn't unregister disconnected device "
+                             "0.%x.%04x\n",
+                             cdev->private->dev_id.ssid,
+                             cdev->private->dev_id.devno);
 }
 
 int
@@ -379,8 +376,10 @@ ccw_device_set_offline(struct ccw_device *cdev)
        if (ret == 0)
                wait_event(cdev->private->wait_q, dev_fsm_final_state(cdev));
        else {
-               pr_debug("ccw_device_offline returned %d, device %s\n",
-                        ret, cdev->dev.bus_id);
+               CIO_MSG_EVENT(2, "ccw_device_offline returned %d, "
+                             "device 0.%x.%04x\n",
+                             ret, cdev->private->dev_id.ssid,
+                             cdev->private->dev_id.devno);
                cdev->online = 1;
        }
        return ret;
@@ -402,8 +401,10 @@ ccw_device_set_online(struct ccw_device *cdev)
        if (ret == 0)
                wait_event(cdev->private->wait_q, dev_fsm_final_state(cdev));
        else {
-               pr_debug("ccw_device_online returned %d, device %s\n",
-                        ret, cdev->dev.bus_id);
+               CIO_MSG_EVENT(2, "ccw_device_online returned %d, "
+                             "device 0.%x.%04x\n",
+                             ret, cdev->private->dev_id.ssid,
+                             cdev->private->dev_id.devno);
                return ret;
        }
        if (cdev->private->state != DEV_STATE_ONLINE)
@@ -417,9 +418,11 @@ ccw_device_set_online(struct ccw_device *cdev)
        spin_unlock_irq(cdev->ccwlock);
        if (ret == 0)
                wait_event(cdev->private->wait_q, dev_fsm_final_state(cdev));
-       else 
-               pr_debug("ccw_device_offline returned %d, device %s\n",
-                        ret, cdev->dev.bus_id);
+       else
+               CIO_MSG_EVENT(2, "ccw_device_offline returned %d, "
+                             "device 0.%x.%04x\n",
+                             ret, cdev->private->dev_id.ssid,
+                             cdev->private->dev_id.devno);
        return (ret == 0) ? -ENODEV : ret;
 }
 
@@ -439,9 +442,10 @@ static int online_store_recog_and_online(struct ccw_device *cdev)
        if (cdev->id.cu_type == 0) {
                ret = ccw_device_recognition(cdev);
                if (ret) {
-                       printk(KERN_WARNING"Couldn't start recognition "
-                              "for device %s (ret=%d)\n",
-                              cdev->dev.bus_id, ret);
+                       CIO_MSG_EVENT(0, "Couldn't start recognition "
+                                     "for device 0.%x.%04x (ret=%d)\n",
+                                     cdev->private->dev_id.ssid,
+                                     cdev->private->dev_id.devno, ret);
                        return ret;
                }
                wait_event(cdev->private->wait_q,
@@ -461,8 +465,8 @@ static void online_store_handle_online(struct ccw_device *cdev, int force)
        if (force && cdev->private->state == DEV_STATE_BOXED) {
                ret = ccw_device_stlck(cdev);
                if (ret) {
-                       printk(KERN_WARNING"ccw_device_stlck for device %s "
-                              "returned %d!\n", cdev->dev.bus_id, ret);
+                       dev_warn(&cdev->dev,
+                                "ccw_device_stlck returned %d!\n", ret);
                        return;
                }
                if (cdev->id.cu_type == 0)
@@ -893,8 +897,10 @@ io_subchannel_register(struct work_struct *work)
                        ret = device_reprobe(&cdev->dev);
                        if (ret)
                                /* We can't do much here. */
-                               dev_info(&cdev->dev, "device_reprobe() returned"
-                                        " %d\n", ret);
+                               CIO_MSG_EVENT(2, "device_reprobe() returned"
+                                             " %d for 0.%x.%04x\n", ret,
+                                             cdev->private->dev_id.ssid,
+                                             cdev->private->dev_id.devno);
                }
                goto out;
        }
@@ -907,8 +913,9 @@ io_subchannel_register(struct work_struct *work)
        /* make it known to the system */
        ret = ccw_device_register(cdev);
        if (ret) {
-               printk (KERN_WARNING "%s: could not register %s\n",
-                       __func__, cdev->dev.bus_id);
+               CIO_MSG_EVENT(0, "Could not register ccw dev 0.%x.%04x: %d\n",
+                             cdev->private->dev_id.ssid,
+                             cdev->private->dev_id.devno, ret);
                put_device(&cdev->dev);
                spin_lock_irqsave(sch->lock, flags);
                sch->dev.driver_data = NULL;
@@ -1361,7 +1368,6 @@ ccw_device_remove (struct device *dev)
        struct ccw_driver *cdrv = cdev->drv;
        int ret;
 
-       pr_debug("removing device %s\n", cdev->dev.bus_id);
        if (cdrv->remove)
                cdrv->remove(cdev);
        if (cdev->online) {
@@ -1374,8 +1380,10 @@ ccw_device_remove (struct device *dev)
                                   dev_fsm_final_state(cdev));
                else
                        //FIXME: we can't fail!
-                       pr_debug("ccw_device_offline returned %d, device %s\n",
-                                ret, cdev->dev.bus_id);
+                       CIO_MSG_EVENT(2, "ccw_device_offline returned %d, "
+                                     "device 0.%x.%04x\n",
+                                     ret, cdev->private->dev_id.ssid,
+                                     cdev->private->dev_id.devno);
        }
        ccw_device_set_timeout(cdev, 0);
        cdev->drv = NULL;