.resume         = memstick_device_resume
 };
 
-static void memstick_free(struct class_device *cdev)
+static void memstick_free(struct device *dev)
 {
-       struct memstick_host *host = container_of(cdev, struct memstick_host,
-                                                 cdev);
+       struct memstick_host *host = container_of(dev, struct memstick_host,
+                                                 dev);
        kfree(host);
 }
 
 static struct class memstick_host_class = {
        .name       = "memstick_host",
-       .release    = memstick_free
+       .dev_release = memstick_free
 };
 
 static void memstick_free_card(struct device *dev)
        if (card) {
                card->host = host;
                snprintf(card->dev.bus_id, sizeof(card->dev.bus_id),
-                        "%s", host->cdev.class_id);
-               card->dev.parent = host->cdev.dev;
+                        "%s", host->dev.bus_id);
+               card->dev.parent = &host->dev;
                card->dev.bus = &memstick_bus_type;
                card->dev.release = memstick_free_card;
                card->check = memstick_dummy_check;
                                                  media_checker);
        struct memstick_dev *card;
 
-       dev_dbg(host->cdev.dev, "memstick_check started\n");
+       dev_dbg(&host->dev, "memstick_check started\n");
        mutex_lock(&host->lock);
        if (!host->card)
                memstick_power_on(host);
                        host->card = NULL;
                }
        } else {
-               dev_dbg(host->cdev.dev, "new card %02x, %02x, %02x\n",
+               dev_dbg(&host->dev, "new card %02x, %02x, %02x\n",
                        card->id.type, card->id.category, card->id.class);
                if (host->card) {
                        if (memstick_set_rw_addr(host->card)
                host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_OFF);
 
        mutex_unlock(&host->lock);
-       dev_dbg(host->cdev.dev, "memstick_check finished\n");
+       dev_dbg(&host->dev, "memstick_check finished\n");
 }
 
 /**
        if (host) {
                mutex_init(&host->lock);
                INIT_WORK(&host->media_checker, memstick_check);
-               host->cdev.class = &memstick_host_class;
-               host->cdev.dev = dev;
-               class_device_initialize(&host->cdev);
+               host->dev.class = &memstick_host_class;
+               host->dev.parent = dev;
+               device_initialize(&host->dev);
        }
        return host;
 }
        if (rc)
                return rc;
 
-       snprintf(host->cdev.class_id, BUS_ID_SIZE,
-                "memstick%u", host->id);
+       snprintf(host->dev.bus_id, BUS_ID_SIZE, "memstick%u", host->id);
 
-       rc = class_device_add(&host->cdev);
+       rc = device_add(&host->dev);
        if (rc) {
                spin_lock(&memstick_host_lock);
                idr_remove(&memstick_host_idr, host->id);
        spin_lock(&memstick_host_lock);
        idr_remove(&memstick_host_idr, host->id);
        spin_unlock(&memstick_host_lock);
-       class_device_del(&host->cdev);
+       device_del(&host->dev);
 }
 EXPORT_SYMBOL(memstick_remove_host);
 
 void memstick_free_host(struct memstick_host *host)
 {
        mutex_destroy(&host->lock);
-       class_device_put(&host->cdev);
+       put_device(&host->dev);
 }
 EXPORT_SYMBOL(memstick_free_host);
 
 
        unsigned int data_len, cmd, t_val;
 
        if (!(STATUS_HAS_MEDIA & readl(host->addr + STATUS))) {
-               dev_dbg(msh->cdev.dev, "no media status\n");
+               dev_dbg(&msh->dev, "no media status\n");
                host->req->error = -ETIME;
                return host->req->error;
        }
 
-       dev_dbg(msh->cdev.dev, "control %08x\n",
+       dev_dbg(&msh->dev, "control %08x\n",
                readl(host->addr + HOST_CONTROL));
-       dev_dbg(msh->cdev.dev, "status %08x\n", readl(host->addr + INT_STATUS));
-       dev_dbg(msh->cdev.dev, "hstatus %08x\n", readl(host->addr + STATUS));
+       dev_dbg(&msh->dev, "status %08x\n", readl(host->addr + INT_STATUS));
+       dev_dbg(&msh->dev, "hstatus %08x\n", readl(host->addr + STATUS));
 
        host->cmd_flags = 0;
        host->block_pos = 0;
        host->req->error = 0;
 
        writel(cmd, host->addr + TPC);
-       dev_dbg(msh->cdev.dev, "executing TPC %08x, len %x\n", cmd, data_len);
+       dev_dbg(&msh->dev, "executing TPC %08x, len %x\n", cmd, data_len);
 
        return 0;
 }
 
        del_timer(&host->timer);
 
-       dev_dbg(msh->cdev.dev, "c control %08x\n",
+       dev_dbg(&msh->dev, "c control %08x\n",
                readl(host->addr + HOST_CONTROL));
-       dev_dbg(msh->cdev.dev, "c status %08x\n",
+       dev_dbg(&msh->dev, "c status %08x\n",
                readl(host->addr + INT_STATUS));
-       dev_dbg(msh->cdev.dev, "c hstatus %08x\n", readl(host->addr + STATUS));
+       dev_dbg(&msh->dev, "c hstatus %08x\n", readl(host->addr + STATUS));
 
        host->req->int_reg = readl(host->addr + STATUS) & 0xff;