* [2.6 patch] SCSI dc395x.c: make a function static
@ 2004-11-15 1:56 Adrian Bunk
2004-11-15 20:22 ` Jamie Lenehan
0 siblings, 1 reply; 5+ messages in thread
From: Adrian Bunk @ 2004-11-15 1:56 UTC (permalink / raw)
To: oliver, aliakc, lenehan; +Cc: James.Bottomley, linux-scsi, linux-kernel
The patch below makes the needlessly global function adapter_init_chip
static.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
--- linux-2.6.10-rc1-mm5-full/drivers/scsi/dc395x.c.old 2004-11-13 20:58:56.000000000 +0100
+++ linux-2.6.10-rc1-mm5-full/drivers/scsi/dc395x.c 2004-11-13 20:59:09.000000000 +0100
@@ -4447,7 +4447,7 @@
*
* @acb: The adapter which we are to init.
**/
-void __init adapter_init_chip(struct AdapterCtlBlk *acb)
+static void __init adapter_init_chip(struct AdapterCtlBlk *acb)
{
struct NvRamType *eeprom = &acb->eeprom;
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [2.6 patch] SCSI dc395x.c: make a function static 2004-11-15 1:56 [2.6 patch] SCSI dc395x.c: make a function static Adrian Bunk @ 2004-11-15 20:22 ` Jamie Lenehan 2004-11-15 20:26 ` [2.6 patch] SCSI dc395x.c: store pci device pointer Jamie Lenehan 0 siblings, 1 reply; 5+ messages in thread From: Jamie Lenehan @ 2004-11-15 20:22 UTC (permalink / raw) To: Adrian Bunk; +Cc: aliakc, James.Bottomley, linux-scsi On Mon, Nov 15, 2004 at 02:56:09AM +0100, Adrian Bunk wrote: > The patch below makes the needlessly global function adapter_init_chip > static. James, please apply this patch. Thanks. Jamie. > Signed-off-by: Adrian Bunk <bunk@stusta.de> > > --- linux-2.6.10-rc1-mm5-full/drivers/scsi/dc395x.c.old 2004-11-13 20:58:56.000000000 +0100 > +++ linux-2.6.10-rc1-mm5-full/drivers/scsi/dc395x.c 2004-11-13 20:59:09.000000000 +0100 > @@ -4447,7 +4447,7 @@ > * > * @acb: The adapter which we are to init. > **/ > -void __init adapter_init_chip(struct AdapterCtlBlk *acb) > +static void __init adapter_init_chip(struct AdapterCtlBlk *acb) > { > struct NvRamType *eeprom = &acb->eeprom; > > -- Jamie Lenehan <lenehan@twibble.org> ^ permalink raw reply [flat|nested] 5+ messages in thread
* [2.6 patch] SCSI dc395x.c: store pci device pointer 2004-11-15 20:22 ` Jamie Lenehan @ 2004-11-15 20:26 ` Jamie Lenehan 2004-11-15 20:28 ` [2.6 patch] SCSI dc395x.c: Fix type for irq and io ports Jamie Lenehan 0 siblings, 1 reply; 5+ messages in thread From: Jamie Lenehan @ 2004-11-15 20:26 UTC (permalink / raw) To: Adrian Bunk; +Cc: linux-scsi Store the PCI device pointer into the adapter control block. This is used in the pci_map_*/pci_unmap_* calls and previously it would have been set to NULL. This appears to be no problem for x86 but is a problem for sparc64. Signed-off-by: Jamie Lenehan <lenehan@twibble.org> diff -du -r a/drivers/scsi/dc395x.c b/drivers/scsi/dc395x.c --- a/drivers/scsi/dc395x.c 2004-06-30 20:10:13.939701006 +1000 +++ b/drivers/scsi/dc395x.c 2004-06-30 20:10:38.683969224 +1000 @@ -4820,6 +4820,7 @@ } acb = (struct AdapterCtlBlk*)scsi_host->hostdata; acb->scsi_host = scsi_host; + acb->dev = dev; /* initialise the adapter and everything we need */ if (adapter_init(acb, io_port_base, io_port_len, irq)) { -- Jamie Lenehan <lenehan@twibble.org> ^ permalink raw reply [flat|nested] 5+ messages in thread
* [2.6 patch] SCSI dc395x.c: Fix type for irq and io ports 2004-11-15 20:26 ` [2.6 patch] SCSI dc395x.c: store pci device pointer Jamie Lenehan @ 2004-11-15 20:28 ` Jamie Lenehan 2004-11-15 20:30 ` [2.6 patch] SCSI dc395x.c: Call pci_disable during cleanup Jamie Lenehan 0 siblings, 1 reply; 5+ messages in thread From: Jamie Lenehan @ 2004-11-15 20:28 UTC (permalink / raw) To: linux-scsi; +Cc: dc395x Store the port and irq in unsigned long and unsigned int's instead of as u16's and u8's. The later was fine on x86 but not on sparc64. Signed-off-by: Jamie Lenehan <lenehan@twibble.org> diff -du -r a/drivers/scsi/dc395x.c b/drivers/scsi/dc395x.c --- a/drivers/scsi/dc395x.c 2004-06-30 20:11:42.631830402 +1000 +++ b/drivers/scsi/dc395x.c 2004-06-30 20:11:49.038417547 +1000 @@ -295,8 +295,8 @@ struct AdapterCtlBlk { struct Scsi_Host *scsi_host; - u16 io_port_base; - u16 io_port_len; + unsigned long io_port_base; + unsigned long io_port_len; struct list_head dcb_list; /* head of going dcb list */ struct DeviceCtlBlk *dcb_run_robin; @@ -311,7 +311,7 @@ u8 sel_timeout; - u8 irq_level; + unsigned int irq_level; u8 tag_max_num; u8 acb_flag; u8 gmode2; @@ -3931,7 +3931,7 @@ * * @io_port: base I/O address **/ -static void __init trms1040_wait_30us(u16 io_port) +static void __init trms1040_wait_30us(unsigned long io_port) { /* ScsiPortStallExecution(30); wait 30 us */ outb(5, io_port + TRM_S1040_GEN_TIMER); @@ -3948,7 +3948,7 @@ * @cmd: SB + op code (command) to send * @addr: address to send **/ -static void __init trms1040_write_cmd(u16 io_port, u8 cmd, u8 addr) +static void __init trms1040_write_cmd(unsigned long io_port, u8 cmd, u8 addr) { int i; u8 send_data; @@ -3993,7 +3993,7 @@ * @addr: offset into EEPROM * @byte: bytes to write **/ -static void __init trms1040_set_data(u16 io_port, u8 addr, u8 byte) +static void __init trms1040_set_data(unsigned long io_port, u8 addr, u8 byte) { int i; u8 send_data; @@ -4047,7 +4047,7 @@ * @eeprom: the data to write * @io_port: the base io port **/ -static void __init trms1040_write_all(struct NvRamType *eeprom, u16 io_port) +static void __init trms1040_write_all(struct NvRamType *eeprom, unsigned long io_port) { u8 *b_eeprom = (u8 *)eeprom; u8 addr; @@ -4087,7 +4087,7 @@ * * Returns the the byte read. **/ -static u8 __init trms1040_get_data(u16 io_port, u8 addr) +static u8 __init trms1040_get_data(unsigned long io_port, u8 addr) { int i; u8 read_byte; @@ -4125,7 +4125,7 @@ * @eeprom: where to store the data * @io_port: the base io port **/ -static void __init trms1040_read_all(struct NvRamType *eeprom, u16 io_port) +static void __init trms1040_read_all(struct NvRamType *eeprom, unsigned long io_port) { u8 *b_eeprom = (u8 *)eeprom; u8 addr; @@ -4155,7 +4155,7 @@ * @eeprom: caller allocated strcuture to read the eeprom data into * @io_port: io port to read from **/ -static void __init check_eeprom(struct NvRamType *eeprom, u16 io_port) +static void __init check_eeprom(struct NvRamType *eeprom, unsigned long io_port) { u16 *w_eeprom = (u16 *)eeprom; u16 w_addr; @@ -4500,11 +4500,11 @@ * Returns 0 if the initialization succeeds, any other value on * failure. **/ -static int __init adapter_init(struct AdapterCtlBlk *acb, u32 io_port, - u32 io_port_len, u8 irq) +static int __init adapter_init(struct AdapterCtlBlk *acb, + unsigned long io_port, u32 io_port_len, unsigned int irq) { if (!request_region(io_port, io_port_len, DC395X_NAME)) { - dprintkl(KERN_ERR, "Failed to reserve IO region 0x%x\n", io_port); + dprintkl(KERN_ERR, "Failed to reserve IO region 0x%lx\n", io_port); goto failed; } /* store port base to indicate we have registered it */ @@ -4520,7 +4520,7 @@ acb->irq_level = irq; /* get eeprom configuration information and command line settings etc */ - check_eeprom(&acb->eeprom, (u16)io_port); + check_eeprom(&acb->eeprom, io_port); print_eeprom_settings(&acb->eeprom); /* setup adapter control block */ @@ -4638,8 +4638,8 @@ SPRINTF("SCSI Host Nr %i, ", host->host_no); SPRINTF("DC395U/UW/F DC315/U %s\n", (acb->config & HCC_WIDE_CARD) ? "Wide" : ""); - SPRINTF("io_port_base 0x%04x, ", acb->io_port_base); - SPRINTF("irq_level 0x%02x, ", acb->irq_level); + SPRINTF("io_port_base 0x%04lx, ", acb->io_port_base); + SPRINTF("irq_level 0x%04x, ", acb->irq_level); SPRINTF(" SelTimeout %ims\n", (1638 * acb->sel_timeout) / 1000); SPRINTF("MaxID %i, MaxLUN %i, ", host->max_id, host->max_lun); @@ -4794,9 +4794,9 @@ { struct Scsi_Host *scsi_host; struct AdapterCtlBlk *acb; - unsigned int io_port_base; + unsigned long io_port_base; unsigned int io_port_len; - u8 irq; + unsigned int irq; dprintkdbg(DBG_0, "Init one instance (%s)\n", pci_name(dev)); banner_display(); @@ -4809,7 +4809,7 @@ io_port_base = pci_resource_start(dev, 0) & PCI_BASE_ADDRESS_IO_MASK; io_port_len = pci_resource_len(dev, 0); irq = dev->irq; - dprintkdbg(DBG_0, "IO_PORT=%04x, IRQ=%x\n", io_port_base, dev->irq); + dprintkdbg(DBG_0, "IO_PORT=0x%04lx, IRQ=0x%x\n", io_port_base, dev->irq); /* allocate scsi host information (includes out adapter) */ scsi_host = scsi_host_alloc(&dc395x_driver_template, -- Jamie Lenehan <lenehan@twibble.org> ^ permalink raw reply [flat|nested] 5+ messages in thread
* [2.6 patch] SCSI dc395x.c: Call pci_disable during cleanup. 2004-11-15 20:28 ` [2.6 patch] SCSI dc395x.c: Fix type for irq and io ports Jamie Lenehan @ 2004-11-15 20:30 ` Jamie Lenehan 0 siblings, 0 replies; 5+ messages in thread From: Jamie Lenehan @ 2004-11-15 20:30 UTC (permalink / raw) To: linux-scsi; +Cc: dc395x Call pci_disable_device if initialisation fails and during cleanup. Signed-off-by: Jamie Lenehan <lenehan@twibble.org> diff -du -r a/drivers/scsi/dc395x.c b/drivers/scsi/dc395x.c --- a/drivers/scsi/dc395x.c 2004-06-30 20:33:16.815742524 +1000 +++ b/drivers/scsi/dc395x.c 2004-06-30 20:37:59.465770335 +1000 @@ -4789,8 +4789,8 @@ static int __devinit dc395x_init_one(struct pci_dev *dev, const struct pci_device_id *id) { - struct Scsi_Host *scsi_host; - struct AdapterCtlBlk *acb; + struct Scsi_Host *scsi_host = NULL; + struct AdapterCtlBlk *acb = NULL; unsigned long io_port_base; unsigned int io_port_len; unsigned int irq; @@ -4813,7 +4813,7 @@ sizeof(struct AdapterCtlBlk)); if (!scsi_host) { dprintkl(KERN_INFO, "scsi_host_alloc failed\n"); - return -ENOMEM; + goto fail; } acb = (struct AdapterCtlBlk*)scsi_host->hostdata; acb->scsi_host = scsi_host; @@ -4822,8 +4822,7 @@ /* initialise the adapter and everything we need */ if (adapter_init(acb, io_port_base, io_port_len, irq)) { dprintkl(KERN_INFO, "adapter init failed\n"); - scsi_host_put(scsi_host); - return -ENODEV; + goto fail; } pci_set_master(dev); @@ -4831,14 +4830,20 @@ /* get the scsi mid level to scan for new devices on the bus */ if (scsi_add_host(scsi_host, &dev->dev)) { dprintkl(KERN_ERR, "scsi_add_host failed\n"); - adapter_uninit(acb); - scsi_host_put(scsi_host); - return -ENODEV; + goto fail; } pci_set_drvdata(dev, scsi_host); scsi_scan_host(scsi_host); return 0; + +fail: + if (acb != NULL) + adapter_uninit(acb); + if (scsi_host != NULL) + scsi_host_put(scsi_host); + pci_disable_device(dev); + return -ENODEV; } @@ -4857,6 +4862,7 @@ scsi_remove_host(scsi_host); adapter_uninit(acb); + pci_disable_device(dev); scsi_host_put(scsi_host); pci_set_drvdata(dev, NULL); } -- Jamie Lenehan <lenehan@twibble.org> ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2004-11-15 20:30 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2004-11-15 1:56 [2.6 patch] SCSI dc395x.c: make a function static Adrian Bunk 2004-11-15 20:22 ` Jamie Lenehan 2004-11-15 20:26 ` [2.6 patch] SCSI dc395x.c: store pci device pointer Jamie Lenehan 2004-11-15 20:28 ` [2.6 patch] SCSI dc395x.c: Fix type for irq and io ports Jamie Lenehan 2004-11-15 20:30 ` [2.6 patch] SCSI dc395x.c: Call pci_disable during cleanup Jamie Lenehan
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.