ibmstb4 fixes

Andreas Oberritter obi at saftware.de
Wed Jan 14 08:17:23 EST 2004


Hi Tom,

here are three trivial patches for linuxppc-2.4:
- two typo fixes for i2c and the ocp definition
- the ide driver ported to the current ocp api

Now that linuxppc_2_4_devel seems to be rather dead, would you accept a
patch that adds the smc91111 network driver to linuxppc-2.4?

What is the status of the 405 wdt driver?

Regards,
Andreas
-------------- next part --------------
===== drivers/i2c/i2c-ibm_iic.c 1.5 vs edited =====
--- 1.5/drivers/i2c/i2c-ibm_iic.c	Fri Jan  9 05:38:17 2004
+++ edited/drivers/i2c/i2c-ibm_iic.c	Tue Jan 13 21:36:14 2004
@@ -92,7 +92,7 @@
 #define IBM_IIC_IS_FAST(idx) ({ \
 		BUG_ON((idx) >= sizeof(bd->bi_iic_fast) / sizeof(bd->bi_iic_fast[0])); \
 		bd->bi_iic_fast[(idx)]; \
-	)}
+	})
 #endif /* IBM_IIC_IS_FAST */

 /* Enable/disable interrupt generation */
-------------- next part --------------
===== arch/ppc/platforms/ibmstb4.c 1.2 vs edited =====
--- 1.2/arch/ppc/platforms/ibmstb4.c	Wed Sep 24 19:16:28 2003
+++ edited/arch/ppc/platforms/ibmstb4.c	Tue Jan 13 16:37:06 2004
@@ -57,7 +57,7 @@
 	  .index	= 1,
 	  .paddr	= UART1_IO_BASE,
 	  .irq		= UART1_INT,
-	  .pm		= IBM_CPM_UART2,
+	  .pm		= IBM_CPM_UART1,
 	},
 	{ .vendor	= OCP_VENDOR_IBM,
 	  .function	= OCP_FUNC_16550,
-------------- next part --------------
===== drivers/ide/ibm_ocp_ide.c 1.1 vs edited =====
--- 1.1/drivers/ide/ibm_ocp_ide.c	Wed Mar 12 17:39:16 2003
+++ edited/drivers/ide/ibm_ocp_ide.c	Tue Jan 13 16:53:41 2004
@@ -525,14 +525,12 @@
 	return stb04xxx_ide_dma_on(drive);
 }

-static int stb04xxx_ide_dma_begin(ide_drive_t * drive, int writing)
+static int stb04xxx_ide_dma_begin(ide_drive_t * drive)
 {
 	idp->si_c0tb = (unsigned int) prd_phys;
 	idp->si_c0s0 = 0xdc800000;	/* Clear all status */
 	idp->si_c0ie = 0x90000000;	/* Enable all intr */
 	idp->si_c0dcm = 0;
-	idp->si_c0dcm =
-		(writing ? 0x09000000 : 0x01000000);
 	return 0;
 }

@@ -546,7 +544,9 @@
 	ide_set_handler(drive, &ide_dma_intr, WAIT_CMD, NULL);
 	HWIF(drive)->OUTB(writing ? WIN_WRITEDMA : WIN_READDMA,
 		 IDE_COMMAND_REG);
-	return stb04xxx_ide_dma_begin(drive, writing);
+	stb04xxx_ide_dma_begin(drive);
+	idp->si_c0dcm = (writing ? 0x09000000 : 0x01000000);
+	return 0;
 }

 static int stb04xxx_ide_dma_read(ide_drive_t * drive)
@@ -590,7 +590,7 @@
 	unsigned char *ip;
 	unsigned int uicdcr;
 	int i;
-	struct ocp_dev *ide_dev;
+	struct ocp_device *ocp;
 	int curr_ide;
 	ide_hwif_t *hwif;

@@ -605,16 +605,12 @@
 	if (data_port != 0)
 		return;
 	printk("IBM STB04xxx OCP IDE driver version %s\n", OCPVR);
-	if (!(ide_dev = ocp_alloc_dev(0)))
-		return;
-
-	ide_dev->type = IDE;
-	if ((curr_ide = ocp_register(ide_dev)) == -ENXIO) {
-		ocp_free_dev(ide_dev);
+
+	if (!(ocp = ocp_find_device(OCP_VENDOR_IBM, OCP_FUNC_IDE, OCP_ANY_INDEX))) {
 		return;
 	} else {

-		if ((idp = (ide_t *) ioremap(ide_dev->paddr,
+		if ((idp = (ide_t *) ioremap(ocp->def->paddr,
 					     IDE0_SIZE)) == NULL) {
 			printk(KERN_WARNING "ide: failed ioremap\n");
 			return;
@@ -660,7 +656,7 @@
 		hw->io_ports[IDE_CONTROL_OFFSET] = (int) (&(idp->si_c0adc));

 		if (irq)
-			*irq = ide_dev->irq;
+			*irq = ocp->def->irq;

 		pio_mode[0] = pio_mode[1] = -1;

@@ -708,6 +704,6 @@

 		memcpy(hwif->io_ports, hw->io_ports,
 		       sizeof (hw->io_ports));
-		hwif->irq = ide_dev->irq;
+		hwif->irq = ocp->def->irq;
 	}
 }


More information about the Linuxppc-dev mailing list