Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 22 Jun 2009 20:38:55 +0000 (UTC)
From:      Sam Leffler <sam@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r194653 - head/sys/arm/xscale/ixp425
Message-ID:  <200906222038.n5MKctca051938@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: sam
Date: Mon Jun 22 20:38:55 2009
New Revision: 194653
URL: http://svn.freebsd.org/changeset/base/194653

Log:
  add ixp425_set_gpio to program the gpio interrupt type

Modified:
  head/sys/arm/xscale/ixp425/avila_ata.c
  head/sys/arm/xscale/ixp425/ixp425.c
  head/sys/arm/xscale/ixp425/ixp425var.h

Modified: head/sys/arm/xscale/ixp425/avila_ata.c
==============================================================================
--- head/sys/arm/xscale/ixp425/avila_ata.c	Mon Jun 22 20:36:22 2009	(r194652)
+++ head/sys/arm/xscale/ixp425/avila_ata.c	Mon Jun 22 20:38:55 2009	(r194653)
@@ -218,16 +218,7 @@ ata_avila_attach(device_t dev)
 	rman_set_bustag(&sc->sc_alt_ata, &sc->sc_expbus_tag);
 	rman_set_bushandle(&sc->sc_alt_ata, sc->sc_alt_ioh);
 
-	GPIO_CONF_WRITE_4(sa, IXP425_GPIO_GPOER, 
-	    GPIO_CONF_READ_4(sa, IXP425_GPIO_GPOER) | (1<<config->gpin));
-	/* set interrupt type */
-	GPIO_CONF_WRITE_4(sa, GPIO_TYPE_REG(config->gpin),
-	    (GPIO_CONF_READ_4(sa, GPIO_TYPE_REG(config->gpin)) &~
-	     GPIO_TYPE(config->gpin, GPIO_TYPE_MASK)) |
-	     GPIO_TYPE(config->gpin, GPIO_TYPE_EDG_RISING));
-
-	/* clear ISR */
-	GPIO_CONF_WRITE_4(sa, IXP425_GPIO_GPISR, (1<<config->gpin));
+	ixp425_set_gpio(sa, config->gpin, GPIO_TYPE_EDG_RISING);
 
 	/* configure CS1/3 window, leaving timing unchanged */
 	EXP_BUS_WRITE_4(sc, sc->sc_16bit_off,

Modified: head/sys/arm/xscale/ixp425/ixp425.c
==============================================================================
--- head/sys/arm/xscale/ixp425/ixp425.c	Mon Jun 22 20:36:22 2009	(r194652)
+++ head/sys/arm/xscale/ixp425/ixp425.c	Mon Jun 22 20:38:55 2009	(r194653)
@@ -159,6 +159,25 @@ DB_SHOW_COMMAND(gpio, db_show_gpio)
 }
 #endif
 
+void
+ixp425_set_gpio(struct ixp425_softc *sc, int pin, int type)
+{
+	uint32_t gpiotr = GPIO_CONF_READ_4(sc, GPIO_TYPE_REG(pin));
+
+	/* clear interrupt type */
+	GPIO_CONF_WRITE_4(sc, GPIO_TYPE_REG(pin),
+	    gpiotr &~ GPIO_TYPE(pin, GPIO_TYPE_MASK));
+	/* clear any pending interrupt */
+	GPIO_CONF_WRITE_4(sc, IXP425_GPIO_GPISR, (1<<pin));
+	/* set new interrupt type */
+	GPIO_CONF_WRITE_4(sc, GPIO_TYPE_REG(pin),
+	    gpiotr | GPIO_TYPE(pin, type));
+
+	/* configure gpio line as an input */
+	GPIO_CONF_WRITE_4(sc, IXP425_GPIO_GPOER, 
+	    GPIO_CONF_READ_4(sc, IXP425_GPIO_GPOER) | (1<<pin));
+}
+
 static __inline void
 ixp425_gpio_ack(int irq)
 {

Modified: head/sys/arm/xscale/ixp425/ixp425var.h
==============================================================================
--- head/sys/arm/xscale/ixp425/ixp425var.h	Mon Jun 22 20:36:22 2009	(r194652)
+++ head/sys/arm/xscale/ixp425/ixp425var.h	Mon Jun 22 20:38:55 2009	(r194653)
@@ -65,6 +65,8 @@ struct ixp425_softc {
 	bus_dma_tag_t sc_dmat;
 };
 
+void	ixp425_set_gpio(struct ixp425_softc *sc, int pin, int type);
+
 struct ixppcib_softc {
 	device_t                sc_dev;
 	



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