[svn-commits] tzafrir: branch 1.4 r3669 - /branches/1.4/wcfxo.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Fri Jan 11 16:07:45 CST 2008


Author: tzafrir
Date: Fri Jan 11 16:07:44 2008
New Revision: 3669

URL: http://svn.digium.com/view/zaptel?view=rev&rev=3669
Log:
* Reduce indentation in wcfxo.c .
* Also improve an error message there.

Modified:
    branches/1.4/wcfxo.c

Modified: branches/1.4/wcfxo.c
URL: http://svn.digium.com/view/zaptel/branches/1.4/wcfxo.c?view=diff&rev=3669&r1=3668&r2=3669
==============================================================================
--- branches/1.4/wcfxo.c (original)
+++ branches/1.4/wcfxo.c Fri Jan 11 16:07:44 2008
@@ -845,7 +845,6 @@
 
 static int __devinit wcfxo_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
-	int res;
 	struct wcfxo *wc;
 	struct wcfxo_desc *d = (struct wcfxo_desc *)ent->driver_data;
 	int x;
@@ -853,93 +852,95 @@
 	for (x=0;x<WC_MAX_IFACES;x++)
 		if (!ifaces[x]) break;
 	if (x >= WC_MAX_IFACES) {
-		printk("Too many interfaces\n");
+		printk(KERN_ERR "Too many interfaces: Found %d, can only handle %d.\n",
+				x, WC_MAX_IFACES - 1);
 		return -EIO;
 	}
 	
-	if (pci_enable_device(pdev)) {
-		res = -EIO;
-	} else {
-		wc = kmalloc(sizeof(struct wcfxo), GFP_KERNEL);
-		if (wc) {
-			ifaces[x] = wc;
-			memset(wc, 0, sizeof(struct wcfxo));
-			wc->ioaddr = pci_resource_start(pdev, 0);
-			wc->dev = pdev;
-			wc->pos = x;
-			wc->variety = d->name;
-			wc->flags = d->flags;
-			/* Keep track of whether we need to free the region */
-			if (request_region(wc->ioaddr, 0xff, "wcfxo")) 
-				wc->freeregion = 1;
-
-			/* Allocate enough memory for two zt chunks, receive and transmit.  Each sample uses
-			   32 bits.  Allocate an extra set just for control too */
-			wc->writechunk = (int *)pci_alloc_consistent(pdev, ZT_MAX_CHUNKSIZE * 2 * 2 * 2 * 4, &wc->writedma);
-			if (!wc->writechunk) {
-				printk("wcfxo: Unable to allocate DMA-able memory\n");
-				if (wc->freeregion)
-					release_region(wc->ioaddr, 0xff);
-				return -ENOMEM;
-			}
-
-			wc->readchunk = wc->writechunk + ZT_MAX_CHUNKSIZE * 4;	/* in doublewords */
-			wc->readdma = wc->writedma + ZT_MAX_CHUNKSIZE * 16;		/* in bytes */
-
-			if (wcfxo_initialize(wc)) {
-				printk("wcfxo: Unable to intialize modem\n");
-				if (wc->freeregion)
-					release_region(wc->ioaddr, 0xff);
-				kfree(wc);
-				return -EIO;
-			}
-
-			/* Enable bus mastering */
-			pci_set_master(pdev);
-
-			/* Keep track of which device we are */
-			pci_set_drvdata(pdev, wc);
-
-			if (request_irq(pdev->irq, wcfxo_interrupt, ZAP_IRQ_SHARED, "wcfxo", wc)) {
-				printk("wcfxo: Unable to request IRQ %d\n", pdev->irq);
-				if (wc->freeregion)
-					release_region(wc->ioaddr, 0xff);
-				kfree(wc);
-				return -EIO;
-			}
-
-
-			wcfxo_hardware_init(wc);
-			/* Enable interrupts */
-			wcfxo_enable_interrupts(wc);
-			/* Initialize Write/Buffers to all blank data */
-			memset((void *)wc->writechunk,0,ZT_MAX_CHUNKSIZE * 2 * 2 * 2 * 4);
-			/* Start DMA */
-			wcfxo_start_dma(wc);
-
-			/* Initialize DAA (after it's started) */
-			if (wcfxo_init_daa(wc)) {
-				printk("Failed to initailize DAA, giving up...\n");
-				wcfxo_stop_dma(wc);
-				wcfxo_disable_interrupts(wc);
-				zt_unregister(&wc->span);
-				free_irq(pdev->irq, wc);
-
-				/* Reset PCI chip and registers */
-				outb(0x0e, wc->ioaddr + WC_CNTL);
-				
-				if (wc->freeregion)
-					release_region(wc->ioaddr, 0xff);
-				kfree(wc);
-				return -EIO;
-			}
-			wcfxo_set_daa_mode(wc);
-			printk("Found a Wildcard FXO: %s\n", wc->variety);
-			res = 0;
-		} else
-			res = -ENOMEM;
-	}
-	return res;
+	if (pci_enable_device(pdev))
+		return -EIO;
+
+	wc = kmalloc(sizeof(struct wcfxo), GFP_KERNEL);
+	if (!wc) {
+		printk(KERN_ERR "wcfxo: Failed initializinf card. Not enough memory.");
+		return -ENOMEM;
+	}
+
+	ifaces[x] = wc;
+	memset(wc, 0, sizeof(struct wcfxo));
+	wc->ioaddr = pci_resource_start(pdev, 0);
+	wc->dev = pdev;
+	wc->pos = x;
+	wc->variety = d->name;
+	wc->flags = d->flags;
+	/* Keep track of whether we need to free the region */
+	if (request_region(wc->ioaddr, 0xff, "wcfxo")) 
+		wc->freeregion = 1;
+
+	/* Allocate enough memory for two zt chunks, receive and transmit.  Each sample uses
+	   32 bits.  Allocate an extra set just for control too */
+	wc->writechunk = (int *)pci_alloc_consistent(pdev, ZT_MAX_CHUNKSIZE * 2 * 2 * 2 * 4, &wc->writedma);
+	if (!wc->writechunk) {
+		printk("wcfxo: Unable to allocate DMA-able memory\n");
+		if (wc->freeregion)
+			release_region(wc->ioaddr, 0xff);
+		return -ENOMEM;
+	}
+
+	wc->readchunk = wc->writechunk + ZT_MAX_CHUNKSIZE * 4;	/* in doublewords */
+	wc->readdma = wc->writedma + ZT_MAX_CHUNKSIZE * 16;		/* in bytes */
+
+	if (wcfxo_initialize(wc)) {
+		printk("wcfxo: Unable to intialize modem\n");
+		if (wc->freeregion)
+			release_region(wc->ioaddr, 0xff);
+		kfree(wc);
+		return -EIO;
+	}
+
+	/* Enable bus mastering */
+	pci_set_master(pdev);
+
+	/* Keep track of which device we are */
+	pci_set_drvdata(pdev, wc);
+
+	if (request_irq(pdev->irq, wcfxo_interrupt, ZAP_IRQ_SHARED, "wcfxo", wc)) {
+		printk("wcfxo: Unable to request IRQ %d\n", pdev->irq);
+		if (wc->freeregion)
+			release_region(wc->ioaddr, 0xff);
+		kfree(wc);
+		return -EIO;
+	}
+
+
+	wcfxo_hardware_init(wc);
+	/* Enable interrupts */
+	wcfxo_enable_interrupts(wc);
+	/* Initialize Write/Buffers to all blank data */
+	memset((void *)wc->writechunk,0,ZT_MAX_CHUNKSIZE * 2 * 2 * 2 * 4);
+	/* Start DMA */
+	wcfxo_start_dma(wc);
+
+	/* Initialize DAA (after it's started) */
+	if (wcfxo_init_daa(wc)) {
+		printk("Failed to initailize DAA, giving up...\n");
+		wcfxo_stop_dma(wc);
+		wcfxo_disable_interrupts(wc);
+		zt_unregister(&wc->span);
+		free_irq(pdev->irq, wc);
+
+		/* Reset PCI chip and registers */
+		outb(0x0e, wc->ioaddr + WC_CNTL);
+
+		if (wc->freeregion)
+			release_region(wc->ioaddr, 0xff);
+		kfree(wc);
+		return -EIO;
+	}
+	wcfxo_set_daa_mode(wc);
+	printk("Found a Wildcard FXO: %s\n", wc->variety);
+
+	return 0;
 }
 
 static void wcfxo_release(struct wcfxo *wc)




More information about the svn-commits mailing list