]> Pileus Git - ~andy/linux/blobdiff - drivers/scsi/mesh.c
Merge master.kernel.org:/home/rmk/linux-2.6-arm
[~andy/linux] / drivers / scsi / mesh.c
index 85f3a74ac421850990c806978442aa0d29d72eb0..ff1933298da682c5f1b0704cbee9c4b81f6d083a 100644 (file)
@@ -1715,9 +1715,12 @@ static int mesh_host_reset(struct scsi_cmnd *cmd)
        struct mesh_state *ms = (struct mesh_state *) cmd->device->host->hostdata;
        volatile struct mesh_regs __iomem *mr = ms->mesh;
        volatile struct dbdma_regs __iomem *md = ms->dma;
+       unsigned long flags;
 
        printk(KERN_DEBUG "mesh_host_reset\n");
 
+       spin_lock_irqsave(ms->host->host_lock, flags);
+
        /* Reset the controller & dbdma channel */
        out_le32(&md->control, (RUN|PAUSE|FLUSH|WAKE) << 16);   /* stop dma */
        out_8(&mr->exception, 0xff);    /* clear all exception bits */
@@ -1739,6 +1742,7 @@ static int mesh_host_reset(struct scsi_cmnd *cmd)
        /* Complete pending commands */
        handle_reset(ms);
        
+       spin_unlock_irqrestore(ms->host->host_lock, flags);
        return SUCCESS;
 }
 
@@ -1757,7 +1761,7 @@ static void set_mesh_power(struct mesh_state *ms, int state)
 
 
 #ifdef CONFIG_PM
-static int mesh_suspend(struct macio_dev *mdev, u32 state)
+static int mesh_suspend(struct macio_dev *mdev, pm_message_t state)
 {
        struct mesh_state *ms = (struct mesh_state *)macio_get_drvdata(mdev);
        unsigned long flags;
@@ -1843,7 +1847,7 @@ static struct scsi_host_template mesh_template = {
        .use_clustering                 = DISABLE_CLUSTERING,
 };
 
-static int mesh_probe(struct macio_dev *mdev, const struct of_match *match)
+static int mesh_probe(struct macio_dev *mdev, const struct of_device_id *match)
 {
        struct device_node *mesh = macio_get_of_node(mdev);
        struct pci_dev* pdev = macio_get_pci_dev(mdev);
@@ -2008,20 +2012,18 @@ static int mesh_remove(struct macio_dev *mdev)
 }
 
 
-static struct of_match mesh_match[] = 
+static struct of_device_id mesh_match[] = 
 {
        {
        .name           = "mesh",
-       .type           = OF_ANY_MATCH,
-       .compatible     = OF_ANY_MATCH
        },
        {
-       .name           = OF_ANY_MATCH,
        .type           = "scsi",
        .compatible     = "chrp,mesh0"
        },
        {},
 };
+MODULE_DEVICE_TABLE (of, mesh_match);
 
 static struct macio_driver mesh_driver = 
 {