]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/misc/tifm_7xx1.c
Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/cpufreq
[mv-sheeva.git] / drivers / misc / tifm_7xx1.c
index a7ed30446185b31f90e959fc05aa888b551d2384..2ab7add78f94259c79106dceb6eeeeacbcf952c2 100644 (file)
@@ -33,9 +33,10 @@ static void tifm_7xx1_eject(struct tifm_adapter *fm, struct tifm_dev *sock)
        spin_unlock_irqrestore(&fm->lock, flags);
 }
 
-static void tifm_7xx1_remove_media(void *adapter)
+static void tifm_7xx1_remove_media(struct work_struct *work)
 {
-       struct tifm_adapter *fm = adapter;
+       struct tifm_adapter *fm =
+               container_of(work, struct tifm_adapter, media_remover);
        unsigned long flags;
        int cnt;
        struct tifm_dev *sock;
@@ -48,7 +49,7 @@ static void tifm_7xx1_remove_media(void *adapter)
                        printk(KERN_INFO DRIVER_NAME
                               ": demand removing card from socket %d\n", cnt);
                        sock = fm->sockets[cnt];
-                       fm->sockets[cnt] = 0;
+                       fm->sockets[cnt] = NULL;
                        fm->remove_mask &= ~(1 << cnt);
 
                        writel(0x0e00, sock->addr + SOCK_CONTROL);
@@ -67,7 +68,7 @@ static void tifm_7xx1_remove_media(void *adapter)
        class_device_put(&fm->cdev);
 }
 
-static irqreturn_t tifm_7xx1_isr(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t tifm_7xx1_isr(int irq, void *dev_id)
 {
        struct tifm_adapter *fm = dev_id;
        unsigned int irq_status;
@@ -118,7 +119,7 @@ static irqreturn_t tifm_7xx1_isr(int irq, void *dev_id, struct pt_regs *regs)
        return IRQ_HANDLED;
 }
 
-static tifm_media_id tifm_7xx1_toggle_sock_power(char *sock_addr, int is_x2)
+static tifm_media_id tifm_7xx1_toggle_sock_power(char __iomem *sock_addr, int is_x2)
 {
        unsigned int s_state;
        int cnt;
@@ -163,20 +164,22 @@ static tifm_media_id tifm_7xx1_toggle_sock_power(char *sock_addr, int is_x2)
        return (readl(sock_addr + SOCK_PRESENT_STATE) >> 4) & 7;
 }
 
-inline static char *tifm_7xx1_sock_addr(char *base_addr, unsigned int sock_num)
+inline static char __iomem *
+tifm_7xx1_sock_addr(char __iomem *base_addr, unsigned int sock_num)
 {
        return base_addr + ((sock_num + 1) << 10);
 }
 
-static void tifm_7xx1_insert_media(void *adapter)
+static void tifm_7xx1_insert_media(struct work_struct *work)
 {
-       struct tifm_adapter *fm = adapter;
+       struct tifm_adapter *fm =
+               container_of(work, struct tifm_adapter, media_inserter);
        unsigned long flags;
        tifm_media_id media_id;
        char *card_name = "xx";
        int cnt, ok_to_register;
        unsigned int insert_mask;
-       struct tifm_dev *new_sock = 0;
+       struct tifm_dev *new_sock = NULL;
 
        if (!class_device_get(&fm->cdev))
                return;
@@ -230,7 +233,7 @@ static void tifm_7xx1_insert_media(void *adapter)
                                if (!ok_to_register ||
                                            device_register(&new_sock->dev)) {
                                        spin_lock_irqsave(&fm->lock, flags);
-                                       fm->sockets[cnt] = 0;
+                                       fm->sockets[cnt] = NULL;
                                        spin_unlock_irqrestore(&fm->lock,
                                                                flags);
                                        tifm_free_device(&new_sock->dev);
@@ -260,7 +263,7 @@ static int tifm_7xx1_suspend(struct pci_dev *dev, pm_message_t state)
        spin_unlock_irqrestore(&fm->lock, flags);
        flush_workqueue(fm->wq);
 
-       tifm_7xx1_remove_media(fm);
+       tifm_7xx1_remove_media(&fm->media_remover);
 
        pci_set_power_state(dev, PCI_D3hot);
         pci_disable_device(dev);
@@ -327,8 +330,8 @@ static int tifm_7xx1_probe(struct pci_dev *dev,
        if (!fm->sockets)
                goto err_out_free;
 
-       INIT_WORK(&fm->media_inserter, tifm_7xx1_insert_media, fm);
-       INIT_WORK(&fm->media_remover, tifm_7xx1_remove_media, fm);
+       INIT_WORK(&fm->media_inserter, tifm_7xx1_insert_media);
+       INIT_WORK(&fm->media_remover, tifm_7xx1_remove_media);
        fm->eject = tifm_7xx1_eject;
        pci_set_drvdata(dev, fm);
 
@@ -383,14 +386,14 @@ static void tifm_7xx1_remove(struct pci_dev *dev)
 
        flush_workqueue(fm->wq);
 
-       tifm_7xx1_remove_media(fm);
+       tifm_7xx1_remove_media(&fm->media_remover);
 
        writel(TIFM_IRQ_SETALL, fm->addr + FM_CLEAR_INTERRUPT_ENABLE);
        free_irq(dev->irq, fm);
 
        tifm_remove_adapter(fm);
 
-       pci_set_drvdata(dev, 0);
+       pci_set_drvdata(dev, NULL);
 
        iounmap(fm->addr);
        pci_intx(dev, 0);