Commit 5ae44b73 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by James Bottomley

[PATCH] small lasi700 update

 - move the struct parisc_driver down like in most drivers, avoids
   two forward-declarations
 - give lasi700_scsi_tbl and lasi700_driver_callback sensible names
 - properly return -ENOMEM instead of 1 on kmalloc failure
 - check scsi_add_host return value
parent 7ab0490d
...@@ -59,7 +59,7 @@ MODULE_AUTHOR("James Bottomley"); ...@@ -59,7 +59,7 @@ MODULE_AUTHOR("James Bottomley");
MODULE_DESCRIPTION("lasi700 SCSI Driver"); MODULE_DESCRIPTION("lasi700 SCSI Driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
static struct parisc_device_id lasi700_scsi_tbl[] = { static struct parisc_device_id lasi700_ids[] = {
LASI700_ID_TABLE, LASI700_ID_TABLE,
LASI710_ID_TABLE, LASI710_ID_TABLE,
{ 0 } { 0 }
...@@ -72,15 +72,8 @@ static Scsi_Host_Template lasi700_template = { ...@@ -72,15 +72,8 @@ static Scsi_Host_Template lasi700_template = {
}; };
MODULE_DEVICE_TABLE(parisc, lasi700_scsi_tbl); MODULE_DEVICE_TABLE(parisc, lasi700_scsi_tbl);
static struct parisc_driver lasi700_driver = {
.name = "Lasi SCSI",
.id_table = lasi700_scsi_tbl,
.probe = lasi700_driver_callback,
.remove = __devexit_p(lasi700_driver_remove),
};
static int __init static int __init
lasi700_driver_callback(struct parisc_device *dev) lasi700_probe(struct parisc_device *dev)
{ {
unsigned long base = dev->hpa + LASI_SCSI_CORE_OFFSET; unsigned long base = dev->hpa + LASI_SCSI_CORE_OFFSET;
struct NCR_700_Host_Parameters *hostdata; struct NCR_700_Host_Parameters *hostdata;
...@@ -90,7 +83,7 @@ lasi700_driver_callback(struct parisc_device *dev) ...@@ -90,7 +83,7 @@ lasi700_driver_callback(struct parisc_device *dev)
if (!hostdata) { if (!hostdata) {
printk(KERN_ERR "%s: Failed to allocate host data\n", printk(KERN_ERR "%s: Failed to allocate host data\n",
dev->dev.bus_id); dev->dev.bus_id);
return 1; return -ENOMEM;
} }
memset(hostdata, 0, sizeof(struct NCR_700_Host_Parameters)); memset(hostdata, 0, sizeof(struct NCR_700_Host_Parameters));
...@@ -123,15 +116,17 @@ lasi700_driver_callback(struct parisc_device *dev) ...@@ -123,15 +116,17 @@ lasi700_driver_callback(struct parisc_device *dev)
goto out_put_host; goto out_put_host;
} }
if (scsi_add_host(host, &dev->dev))
goto out_free_irq;
dev_set_drvdata(&dev->dev, host); dev_set_drvdata(&dev->dev, host);
scsi_add_host(host, &dev->dev); /* XXX handle failure */
scsi_scan_host(host); scsi_scan_host(host);
return 0; return 0;
out_free_irq:
free_irq(host->irq, host);
out_put_host: out_put_host:
scsi_host_put(host); scsi_host_put(host);
out_kfree: out_kfree:
kfree(hostdata); kfree(hostdata);
return -ENODEV; return -ENODEV;
...@@ -152,6 +147,13 @@ lasi700_driver_remove(struct parisc_device *dev) ...@@ -152,6 +147,13 @@ lasi700_driver_remove(struct parisc_device *dev)
return 0; return 0;
} }
static struct parisc_driver lasi700_driver = {
.name = "Lasi SCSI",
.id_table = lasi700_ids,
.probe = lasi700_probe,
.remove = __devexit_p(lasi700_driver_remove),
};
static int __init static int __init
lasi700_init(void) lasi700_init(void)
{ {
......
...@@ -25,9 +25,6 @@ ...@@ -25,9 +25,6 @@
#ifndef _LASI700_H #ifndef _LASI700_H
#define _LASI700_H #define _LASI700_H
static int lasi700_driver_callback(struct parisc_device *dev);
static int lasi700_driver_remove(struct parisc_device *dev);
#define LASI_710_SVERSION 0x082 #define LASI_710_SVERSION 0x082
#define LASI_700_SVERSION 0x071 #define LASI_700_SVERSION 0x071
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment