From c05d73aa91639d534f73121800018b76b5b3f352 Mon Sep 17 00:00:00 2001 From: David Brownell Date: Sun, 12 Jun 2005 23:26:05 +0100 Subject: [PATCH] --- yaml --- r: 1958 b: refs/heads/master c: bb011b8e8eded247cb71cb6d10e47517aacbd542 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/arm/Kconfig | 4 ++- trunk/drivers/scsi/qla2xxx/qla_os.c | 55 ++++++++++++++--------------- 3 files changed, 31 insertions(+), 30 deletions(-) diff --git a/[refs] b/[refs] index bf25b6f0eff4..09b003f6b7fd 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a1541d5af66d02426655b1498f814c52347dd7d3 +refs/heads/master: bb011b8e8eded247cb71cb6d10e47517aacbd542 diff --git a/trunk/arch/arm/Kconfig b/trunk/arch/arm/Kconfig index 5eee3bcb22b5..475950c8a831 100644 --- a/trunk/arch/arm/Kconfig +++ b/trunk/arch/arm/Kconfig @@ -689,7 +689,9 @@ source "drivers/block/Kconfig" source "drivers/acorn/block/Kconfig" -if ARCH_CLPS7500 || ARCH_IOP3XX || ARCH_IXP4XX || ARCH_L7200 || ARCH_LH7A40X || ARCH_PXA || ARCH_RPC || ARCH_S3C2410 || ARCH_SA1100 || ARCH_SHARK || FOOTBRIDGE +if PCMCIA || ARCH_CLPS7500 || ARCH_IOP3XX || ARCH_IXP4XX \ + || ARCH_L7200 || ARCH_LH7A40X || ARCH_PXA || ARCH_RPC \ + || ARCH_S3C2410 || ARCH_SA1100 || ARCH_SHARK || FOOTBRIDGE source "drivers/ide/Kconfig" endif diff --git a/trunk/drivers/scsi/qla2xxx/qla_os.c b/trunk/drivers/scsi/qla2xxx/qla_os.c index d960637fd56a..3c97aa45772d 100644 --- a/trunk/drivers/scsi/qla2xxx/qla_os.c +++ b/trunk/drivers/scsi/qla2xxx/qla_os.c @@ -1150,7 +1150,7 @@ qla2x00_iospace_config(scsi_qla_host_t *ha) */ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) { - int ret = -ENODEV; + int ret; device_reg_t __iomem *reg; struct Scsi_Host *host; scsi_qla_host_t *ha; @@ -1161,7 +1161,7 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) fc_port_t *fcport; if (pci_enable_device(pdev)) - goto probe_out; + return -1; host = scsi_host_alloc(&qla2x00_driver_template, sizeof(scsi_qla_host_t)); @@ -1183,8 +1183,9 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) /* Configure PCI I/O space */ ret = qla2x00_iospace_config(ha); - if (ret) - goto probe_failed; + if (ret != 0) { + goto probe_alloc_failed; + } /* Sanitize the information from PCI BIOS. */ host->irq = pdev->irq; @@ -1257,10 +1258,23 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) qla_printk(KERN_WARNING, ha, "[ERROR] Failed to allocate memory for adapter\n"); - ret = -ENOMEM; - goto probe_failed; + goto probe_alloc_failed; } + pci_set_drvdata(pdev, ha); + host->this_id = 255; + host->cmd_per_lun = 3; + host->unique_id = ha->instance; + host->max_cmd_len = MAX_CMDSZ; + host->max_channel = ha->ports - 1; + host->max_id = ha->max_targets; + host->max_lun = ha->max_luns; + host->transportt = qla2xxx_transport_template; + if (scsi_add_host(host, &pdev->dev)) + goto probe_alloc_failed; + + qla2x00_alloc_sysfs_attr(ha); + if (qla2x00_initialize_adapter(ha) && !(ha->device_flags & DFLG_NO_CABLE)) { @@ -1271,10 +1285,11 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) "Adapter flags %x.\n", ha->host_no, ha->device_flags)); - ret = -ENODEV; goto probe_failed; } + qla2x00_init_host_attr(ha); + /* * Startup the kernel thread for this host adapter */ @@ -1284,26 +1299,17 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) qla_printk(KERN_WARNING, ha, "Unable to start DPC thread!\n"); - ret = -ENODEV; goto probe_failed; } wait_for_completion(&ha->dpc_inited); - host->this_id = 255; - host->cmd_per_lun = 3; - host->unique_id = ha->instance; - host->max_cmd_len = MAX_CMDSZ; - host->max_channel = ha->ports - 1; - host->max_lun = MAX_LUNS; - host->transportt = qla2xxx_transport_template; - if (IS_QLA2100(ha) || IS_QLA2200(ha)) ret = request_irq(host->irq, qla2100_intr_handler, SA_INTERRUPT|SA_SHIRQ, ha->brd_info->drv_name, ha); else ret = request_irq(host->irq, qla2300_intr_handler, SA_INTERRUPT|SA_SHIRQ, ha->brd_info->drv_name, ha); - if (ret) { + if (ret != 0) { qla_printk(KERN_WARNING, ha, "Failed to reserve interrupt %d already in use.\n", host->irq); @@ -1357,18 +1363,9 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) msleep(10); } - pci_set_drvdata(pdev, ha); ha->flags.init_done = 1; num_hosts++; - ret = scsi_add_host(host, &pdev->dev); - if (ret) - goto probe_failed; - - qla2x00_alloc_sysfs_attr(ha); - - qla2x00_init_host_attr(ha); - qla_printk(KERN_INFO, ha, "\n" " QLogic Fibre Channel HBA Driver: %s\n" " QLogic %s - %s\n" @@ -1387,6 +1384,9 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) probe_failed: fc_remove_host(ha->host); + scsi_remove_host(host); + +probe_alloc_failed: qla2x00_free_device(ha); scsi_host_put(host); @@ -1394,8 +1394,7 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) probe_disable_device: pci_disable_device(pdev); -probe_out: - return ret; + return -1; } EXPORT_SYMBOL_GPL(qla2x00_probe_one);