Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Jul 2006 02:14:15 GMT
From:      Kevin Lo <kevlo@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 102515 for review
Message-ID:  <200607270214.k6R2EFfc002889@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=102515

Change 102515 by kevlo@kevlo_monet on 2006/07/27 02:13:50

	1) GPIO[13] uses to generate the PCI reset. 2) Set active low on the GPIO pin chosen to drive the PCI reset signal. See IXP42x Developer's Manual section 6.12 and Operating Manual for GW2348-4 Network Processor Section 2.4.

Affected files ...

.. //depot/projects/arm/src/sys/arm/xscale/ixp425/ixdp425_pci.c#3 edit

Differences ...

==== //depot/projects/arm/src/sys/arm/xscale/ixp425/ixdp425_pci.c#3 (text+ko) ====

@@ -60,10 +60,12 @@
 	
 	/* PCI Reset Assert */
 	reg = GPIO_CONF_READ_4(sc, IXP425_GPIO_GPOUTR);
+	reg &= ~(1U << GPIO_PCI_RESET);
 	GPIO_CONF_WRITE_4(sc, IXP425_GPIO_GPOUTR, reg & ~(1U << GPIO_PCI_RESET));
 
 	/* PCI Clock Disable */
 	reg = GPIO_CONF_READ_4(sc, IXP425_GPIO_GPCLKR);
+	reg &= ~GPCLKR_MUX14;
 	GPIO_CONF_WRITE_4(sc, IXP425_GPIO_GPCLKR, reg & ~GPCLKR_MUX14);
 
 	/*
@@ -78,6 +80,30 @@
 		(1U << GPIO_PCI_INTC) | (1U << GPIO_PCI_INTD));
 	GPIO_CONF_WRITE_4(sc, IXP425_GPIO_GPOER, reg);
 
+	/*
+	 * Set GPIO interrupt type
+	 * 	PCI_INT_A, PCI_INTB, PCI_INT_C, PCI_INT_D: Active Low
+	 */
+	reg = GPIO_CONF_READ_4(sc, GPIO_TYPE_REG(GPIO_PCI_INTA));
+	reg &= ~GPIO_TYPE(GPIO_PCI_INTA, GPIO_TYPE_MASK);
+	reg |= GPIO_TYPE(GPIO_PCI_INTA, GPIO_TYPE_ACT_LOW);
+	GPIO_CONF_WRITE_4(sc, GPIO_TYPE_REG(GPIO_PCI_INTA), reg);
+
+	reg = GPIO_CONF_READ_4(sc, GPIO_TYPE_REG(GPIO_PCI_INTB));
+	reg &= ~GPIO_TYPE(GPIO_PCI_INTB, GPIO_TYPE_MASK);
+	reg |= GPIO_TYPE(GPIO_PCI_INTB, GPIO_TYPE_ACT_LOW);
+	GPIO_CONF_WRITE_4(sc, GPIO_TYPE_REG(GPIO_PCI_INTB), reg);
+
+	reg = GPIO_CONF_READ_4(sc, GPIO_TYPE_REG(GPIO_PCI_INTC));
+	reg &= ~GPIO_TYPE(GPIO_PCI_INTC, GPIO_TYPE_MASK);
+	reg |= GPIO_TYPE(GPIO_PCI_INTC, GPIO_TYPE_ACT_LOW);
+	GPIO_CONF_WRITE_4(sc, GPIO_TYPE_REG(GPIO_PCI_INTC), reg);
+
+	reg = GPIO_CONF_READ_4(sc, GPIO_TYPE_REG(GPIO_PCI_INTD));
+	reg &= ~GPIO_TYPE(GPIO_PCI_INTD, GPIO_TYPE_MASK);
+	reg |= GPIO_TYPE(GPIO_PCI_INTD, GPIO_TYPE_ACT_LOW);
+	GPIO_CONF_WRITE_4(sc, GPIO_TYPE_REG(GPIO_PCI_INTD), reg);
+
 	/* clear ISR */
 	GPIO_CONF_WRITE_4(sc, IXP425_GPIO_GPISR,
 			  (1U << GPIO_PCI_INTA) | (1U << GPIO_PCI_INTB) |
@@ -91,6 +117,7 @@
 
 	/* PCI Clock Enable */
 	reg = GPIO_CONF_READ_4(sc, IXP425_GPIO_GPCLKR);
+	reg |= GPCLKR_MUX14;
 	GPIO_CONF_WRITE_4(sc, IXP425_GPIO_GPCLKR, reg | GPCLKR_MUX14);
 
 	/*
@@ -100,6 +127,7 @@
 	DELAY(100);
         /* PCI Reset deassert */
 	reg = GPIO_CONF_READ_4(sc, IXP425_GPIO_GPOUTR);
+	reg |= 1U << GPIO_PCI_RESET;
 	GPIO_CONF_WRITE_4(sc, IXP425_GPIO_GPOUTR, reg | (1U << GPIO_PCI_RESET));
 	sc->sc_irq_rman.rm_type = RMAN_ARRAY;
 	sc->sc_irq_rman.rm_descr = "IXP425 PCI IRQs";



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200607270214.k6R2EFfc002889>