mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 19:56:18 +00:00
ieee1394: ohci1394: unroll a macro with return
We don't want to hide something like return in a preprocessor macro. Unroll the macro and use a goto, which also reduces the size of ohci1394.ko. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This commit is contained in:
parent
e351c4d069
commit
d09c680383
1 changed files with 54 additions and 38 deletions
|
@ -2984,13 +2984,6 @@ static struct hpsb_host_driver ohci1394_driver = {
|
||||||
* PCI Driver Interface functions *
|
* PCI Driver Interface functions *
|
||||||
***********************************/
|
***********************************/
|
||||||
|
|
||||||
#define FAIL(err, fmt, args...) \
|
|
||||||
do { \
|
|
||||||
PRINT_G(KERN_ERR, fmt , ## args); \
|
|
||||||
ohci1394_pci_remove(dev); \
|
|
||||||
return err; \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_PMAC
|
#ifdef CONFIG_PPC_PMAC
|
||||||
static void ohci1394_pmac_on(struct pci_dev *dev)
|
static void ohci1394_pmac_on(struct pci_dev *dev)
|
||||||
{
|
{
|
||||||
|
@ -3026,15 +3019,21 @@ static int __devinit ohci1394_pci_probe(struct pci_dev *dev,
|
||||||
struct hpsb_host *host;
|
struct hpsb_host *host;
|
||||||
struct ti_ohci *ohci; /* shortcut to currently handled device */
|
struct ti_ohci *ohci; /* shortcut to currently handled device */
|
||||||
resource_size_t ohci_base;
|
resource_size_t ohci_base;
|
||||||
|
int err = -ENOMEM;
|
||||||
|
|
||||||
ohci1394_pmac_on(dev);
|
ohci1394_pmac_on(dev);
|
||||||
if (pci_enable_device(dev))
|
if (pci_enable_device(dev)) {
|
||||||
FAIL(-ENXIO, "Failed to enable OHCI hardware");
|
PRINT_G(KERN_ERR, "Failed to enable OHCI hardware");
|
||||||
|
err = -ENXIO;
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
pci_set_master(dev);
|
pci_set_master(dev);
|
||||||
|
|
||||||
host = hpsb_alloc_host(&ohci1394_driver, sizeof(struct ti_ohci), &dev->dev);
|
host = hpsb_alloc_host(&ohci1394_driver, sizeof(struct ti_ohci), &dev->dev);
|
||||||
if (!host) FAIL(-ENOMEM, "Failed to allocate host structure");
|
if (!host) {
|
||||||
|
PRINT_G(KERN_ERR, "Failed to allocate host structure");
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
ohci = host->hostdata;
|
ohci = host->hostdata;
|
||||||
ohci->dev = dev;
|
ohci->dev = dev;
|
||||||
ohci->host = host;
|
ohci->host = host;
|
||||||
|
@ -3083,15 +3082,20 @@ static int __devinit ohci1394_pci_probe(struct pci_dev *dev,
|
||||||
(unsigned long long)pci_resource_len(dev, 0));
|
(unsigned long long)pci_resource_len(dev, 0));
|
||||||
|
|
||||||
if (!request_mem_region(ohci_base, OHCI1394_REGISTER_SIZE,
|
if (!request_mem_region(ohci_base, OHCI1394_REGISTER_SIZE,
|
||||||
OHCI1394_DRIVER_NAME))
|
OHCI1394_DRIVER_NAME)) {
|
||||||
FAIL(-ENOMEM, "MMIO resource (0x%llx - 0x%llx) unavailable",
|
PRINT_G(KERN_ERR, "MMIO resource (0x%llx - 0x%llx) unavailable",
|
||||||
(unsigned long long)ohci_base,
|
(unsigned long long)ohci_base,
|
||||||
(unsigned long long)ohci_base + OHCI1394_REGISTER_SIZE);
|
(unsigned long long)ohci_base + OHCI1394_REGISTER_SIZE);
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
ohci->init_state = OHCI_INIT_HAVE_MEM_REGION;
|
ohci->init_state = OHCI_INIT_HAVE_MEM_REGION;
|
||||||
|
|
||||||
ohci->registers = ioremap(ohci_base, OHCI1394_REGISTER_SIZE);
|
ohci->registers = ioremap(ohci_base, OHCI1394_REGISTER_SIZE);
|
||||||
if (ohci->registers == NULL)
|
if (ohci->registers == NULL) {
|
||||||
FAIL(-ENXIO, "Failed to remap registers - card not accessible");
|
PRINT_G(KERN_ERR, "Failed to remap registers");
|
||||||
|
err = -ENXIO;
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
ohci->init_state = OHCI_INIT_HAVE_IOMAPPING;
|
ohci->init_state = OHCI_INIT_HAVE_IOMAPPING;
|
||||||
DBGMSG("Remapped memory spaces reg 0x%p", ohci->registers);
|
DBGMSG("Remapped memory spaces reg 0x%p", ohci->registers);
|
||||||
|
|
||||||
|
@ -3099,16 +3103,20 @@ static int __devinit ohci1394_pci_probe(struct pci_dev *dev,
|
||||||
ohci->csr_config_rom_cpu =
|
ohci->csr_config_rom_cpu =
|
||||||
pci_alloc_consistent(ohci->dev, OHCI_CONFIG_ROM_LEN,
|
pci_alloc_consistent(ohci->dev, OHCI_CONFIG_ROM_LEN,
|
||||||
&ohci->csr_config_rom_bus);
|
&ohci->csr_config_rom_bus);
|
||||||
if (ohci->csr_config_rom_cpu == NULL)
|
if (ohci->csr_config_rom_cpu == NULL) {
|
||||||
FAIL(-ENOMEM, "Failed to allocate buffer config rom");
|
PRINT_G(KERN_ERR, "Failed to allocate buffer config rom");
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
ohci->init_state = OHCI_INIT_HAVE_CONFIG_ROM_BUFFER;
|
ohci->init_state = OHCI_INIT_HAVE_CONFIG_ROM_BUFFER;
|
||||||
|
|
||||||
/* self-id dma buffer allocation */
|
/* self-id dma buffer allocation */
|
||||||
ohci->selfid_buf_cpu =
|
ohci->selfid_buf_cpu =
|
||||||
pci_alloc_consistent(ohci->dev, OHCI1394_SI_DMA_BUF_SIZE,
|
pci_alloc_consistent(ohci->dev, OHCI1394_SI_DMA_BUF_SIZE,
|
||||||
&ohci->selfid_buf_bus);
|
&ohci->selfid_buf_bus);
|
||||||
if (ohci->selfid_buf_cpu == NULL)
|
if (ohci->selfid_buf_cpu == NULL) {
|
||||||
FAIL(-ENOMEM, "Failed to allocate DMA buffer for self-id packets");
|
PRINT_G(KERN_ERR, "Failed to allocate self-ID buffer");
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
ohci->init_state = OHCI_INIT_HAVE_SELFID_BUFFER;
|
ohci->init_state = OHCI_INIT_HAVE_SELFID_BUFFER;
|
||||||
|
|
||||||
if ((unsigned long)ohci->selfid_buf_cpu & 0x1fff)
|
if ((unsigned long)ohci->selfid_buf_cpu & 0x1fff)
|
||||||
|
@ -3124,28 +3132,32 @@ static int __devinit ohci1394_pci_probe(struct pci_dev *dev,
|
||||||
if (alloc_dma_rcv_ctx(ohci, &ohci->ar_req_context,
|
if (alloc_dma_rcv_ctx(ohci, &ohci->ar_req_context,
|
||||||
DMA_CTX_ASYNC_REQ, 0, AR_REQ_NUM_DESC,
|
DMA_CTX_ASYNC_REQ, 0, AR_REQ_NUM_DESC,
|
||||||
AR_REQ_BUF_SIZE, AR_REQ_SPLIT_BUF_SIZE,
|
AR_REQ_BUF_SIZE, AR_REQ_SPLIT_BUF_SIZE,
|
||||||
OHCI1394_AsReqRcvContextBase) < 0)
|
OHCI1394_AsReqRcvContextBase) < 0) {
|
||||||
FAIL(-ENOMEM, "Failed to allocate AR Req context");
|
PRINT_G(KERN_ERR, "Failed to allocate AR Req context");
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
/* AR DMA response context allocation */
|
/* AR DMA response context allocation */
|
||||||
if (alloc_dma_rcv_ctx(ohci, &ohci->ar_resp_context,
|
if (alloc_dma_rcv_ctx(ohci, &ohci->ar_resp_context,
|
||||||
DMA_CTX_ASYNC_RESP, 0, AR_RESP_NUM_DESC,
|
DMA_CTX_ASYNC_RESP, 0, AR_RESP_NUM_DESC,
|
||||||
AR_RESP_BUF_SIZE, AR_RESP_SPLIT_BUF_SIZE,
|
AR_RESP_BUF_SIZE, AR_RESP_SPLIT_BUF_SIZE,
|
||||||
OHCI1394_AsRspRcvContextBase) < 0)
|
OHCI1394_AsRspRcvContextBase) < 0) {
|
||||||
FAIL(-ENOMEM, "Failed to allocate AR Resp context");
|
PRINT_G(KERN_ERR, "Failed to allocate AR Resp context");
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
/* AT DMA request context */
|
/* AT DMA request context */
|
||||||
if (alloc_dma_trm_ctx(ohci, &ohci->at_req_context,
|
if (alloc_dma_trm_ctx(ohci, &ohci->at_req_context,
|
||||||
DMA_CTX_ASYNC_REQ, 0, AT_REQ_NUM_DESC,
|
DMA_CTX_ASYNC_REQ, 0, AT_REQ_NUM_DESC,
|
||||||
OHCI1394_AsReqTrContextBase) < 0)
|
OHCI1394_AsReqTrContextBase) < 0) {
|
||||||
FAIL(-ENOMEM, "Failed to allocate AT Req context");
|
PRINT_G(KERN_ERR, "Failed to allocate AT Req context");
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
/* AT DMA response context */
|
/* AT DMA response context */
|
||||||
if (alloc_dma_trm_ctx(ohci, &ohci->at_resp_context,
|
if (alloc_dma_trm_ctx(ohci, &ohci->at_resp_context,
|
||||||
DMA_CTX_ASYNC_RESP, 1, AT_RESP_NUM_DESC,
|
DMA_CTX_ASYNC_RESP, 1, AT_RESP_NUM_DESC,
|
||||||
OHCI1394_AsRspTrContextBase) < 0)
|
OHCI1394_AsRspTrContextBase) < 0) {
|
||||||
FAIL(-ENOMEM, "Failed to allocate AT Resp context");
|
PRINT_G(KERN_ERR, "Failed to allocate AT Resp context");
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
/* Start off with a soft reset, to clear everything to a sane
|
/* Start off with a soft reset, to clear everything to a sane
|
||||||
* state. */
|
* state. */
|
||||||
ohci_soft_reset(ohci);
|
ohci_soft_reset(ohci);
|
||||||
|
@ -3188,9 +3200,10 @@ static int __devinit ohci1394_pci_probe(struct pci_dev *dev,
|
||||||
* by that point.
|
* by that point.
|
||||||
*/
|
*/
|
||||||
if (request_irq(dev->irq, ohci_irq_handler, IRQF_SHARED,
|
if (request_irq(dev->irq, ohci_irq_handler, IRQF_SHARED,
|
||||||
OHCI1394_DRIVER_NAME, ohci))
|
OHCI1394_DRIVER_NAME, ohci)) {
|
||||||
FAIL(-ENOMEM, "Failed to allocate shared interrupt %d", dev->irq);
|
PRINT_G(KERN_ERR, "Failed to allocate interrupt %d", dev->irq);
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
ohci->init_state = OHCI_INIT_HAVE_IRQ;
|
ohci->init_state = OHCI_INIT_HAVE_IRQ;
|
||||||
ohci_initialize(ohci);
|
ohci_initialize(ohci);
|
||||||
|
|
||||||
|
@ -3210,13 +3223,16 @@ static int __devinit ohci1394_pci_probe(struct pci_dev *dev,
|
||||||
host->middle_addr_space = OHCI1394_MIDDLE_ADDRESS_SPACE;
|
host->middle_addr_space = OHCI1394_MIDDLE_ADDRESS_SPACE;
|
||||||
|
|
||||||
/* Tell the highlevel this host is ready */
|
/* Tell the highlevel this host is ready */
|
||||||
if (hpsb_add_host(host))
|
if (hpsb_add_host(host)) {
|
||||||
FAIL(-ENOMEM, "Failed to register host with highlevel");
|
PRINT_G(KERN_ERR, "Failed to register host with highlevel");
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
ohci->init_state = OHCI_INIT_DONE;
|
ohci->init_state = OHCI_INIT_DONE;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
#undef FAIL
|
err:
|
||||||
|
ohci1394_pci_remove(dev);
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ohci1394_pci_remove(struct pci_dev *dev)
|
static void ohci1394_pci_remove(struct pci_dev *dev)
|
||||||
|
|
Loading…
Reference in a new issue