Module Name: src Committed By: pgoyette Date: Fri Jun 16 22:39:34 UTC 2017
Modified Files: src/distrib/sets/lists/man: mi src/share/man/man4: Makefile src/sys/arch/arm/xscale: files.pxa2x0 pxa2x0_gpio.c src/sys/arch/evbarm/conf: GUMSTIX Added Files: src/share/man/man4: pxagpio.4 Log Message: Add gpio support for Xscale >From Stephan Meisenger in PR/52163 To generate a diff of this commit: cvs rdiff -u -r1.1558 -r1.1559 src/distrib/sets/lists/man/mi cvs rdiff -u -r1.640 -r1.641 src/share/man/man4/Makefile cvs rdiff -u -r0 -r1.1 src/share/man/man4/pxagpio.4 cvs rdiff -u -r1.18 -r1.19 src/sys/arch/arm/xscale/files.pxa2x0 cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/xscale/pxa2x0_gpio.c cvs rdiff -u -r1.90 -r1.91 src/sys/arch/evbarm/conf/GUMSTIX Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/distrib/sets/lists/man/mi diff -u src/distrib/sets/lists/man/mi:1.1558 src/distrib/sets/lists/man/mi:1.1559 --- src/distrib/sets/lists/man/mi:1.1558 Tue Jun 13 06:39:09 2017 +++ src/distrib/sets/lists/man/mi Fri Jun 16 22:39:34 2017 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.1558 2017/06/13 06:39:09 nat Exp $ +# $NetBSD: mi,v 1.1559 2017/06/16 22:39:34 pgoyette Exp $ # # Note: don't delete entries from here - mark them as "obsolete" instead. # @@ -1579,6 +1579,7 @@ ./usr/share/man/cat4/puffs.0 man-puffs-catman .cat ./usr/share/man/cat4/pwdog.0 man-sys-catman .cat ./usr/share/man/cat4/px.0 man-sys-catman .cat +./usr/share/man/cat4/pxagpio.0 man-sys-catman .cat ./usr/share/man/cat4/pxaip.0 man-sys-catman .cat ./usr/share/man/cat4/pxg.0 man-sys-catman .cat ./usr/share/man/cat4/qe.0 man-sys-catman .cat @@ -4630,6 +4631,7 @@ ./usr/share/man/html4/puffs.html man-sys-htmlman html ./usr/share/man/html4/pwdog.html man-sys-htmlman html ./usr/share/man/html4/px.html man-sys-htmlman html +./usr/share/man/html4/pxagpio.html man-sys-htmlman html ./usr/share/man/html4/pxaip.html man-sys-htmlman html ./usr/share/man/html4/pxg.html man-sys-htmlman html ./usr/share/man/html4/qe.html man-sys-htmlman html @@ -7583,6 +7585,7 @@ ./usr/share/man/man4/puffs.4 man-sys-man .man ./usr/share/man/man4/pwdog.4 man-sys-man .man ./usr/share/man/man4/px.4 man-sys-man .man +./usr/share/man/man4/pxagpio.4 man-sys-man .man ./usr/share/man/man4/pxaip.4 man-sys-man .man ./usr/share/man/man4/pxg.4 man-sys-man .man ./usr/share/man/man4/qe.4 man-sys-man .man Index: src/share/man/man4/Makefile diff -u src/share/man/man4/Makefile:1.640 src/share/man/man4/Makefile:1.641 --- src/share/man/man4/Makefile:1.640 Fri Jun 16 22:13:25 2017 +++ src/share/man/man4/Makefile Fri Jun 16 22:39:34 2017 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.640 2017/06/16 22:13:25 pgoyette Exp $ +# $NetBSD: Makefile,v 1.641 2017/06/16 22:39:34 pgoyette Exp $ # @(#)Makefile 8.1 (Berkeley) 6/18/93 MAN= aac.4 ac97.4 acardide.4 aceride.4 acphy.4 \ @@ -51,8 +51,8 @@ MAN= aac.4 ac97.4 acardide.4 aceride.4 a pcppi.4 pcscp.4 pcweasel.4 pdcide.4 pdcsata.4 piixide.4 piixpcib.4 \ piixpm.4 pim.4 plip.4 pm3fb.4 pms.4 pmu.4 pnaphy.4 ppbus.4 ppp.4 \ pppoe.4 \ - pseye.4 ptcd.4 ptm.4 pty.4 puc.4 pud.4 puffs.4 pwdog.4 px.4 pxaip.4 \ - pxg.4 qe.4 qec.4 qsphy.4 \ + pseye.4 ptcd.4 ptm.4 pty.4 puc.4 pud.4 puffs.4 pwdog.4 px.4 pxagpio.4 \ + pxaip.4 pxg.4 qe.4 qec.4 qsphy.4 \ raid.4 ral.4 ray.4 rcons.4 rdcphy.4 re.4 rgephy.4 rlphy.4 \ rnd.4 route.4 rs5c372rtc.4 rtk.4 rtsx.4 rtw.4 rtwn.4 rum.4 run.4 \ s390rtc.4 satalink.4 sbus.4 scc.4 schide.4 \ Index: src/sys/arch/arm/xscale/files.pxa2x0 diff -u src/sys/arch/arm/xscale/files.pxa2x0:1.18 src/sys/arch/arm/xscale/files.pxa2x0:1.19 --- src/sys/arch/arm/xscale/files.pxa2x0:1.18 Wed Jun 6 20:21:45 2012 +++ src/sys/arch/arm/xscale/files.pxa2x0 Fri Jun 16 22:39:34 2017 @@ -1,4 +1,4 @@ -# $NetBSD: files.pxa2x0,v 1.18 2012/06/06 20:21:45 skrll Exp $ +# $NetBSD: files.pxa2x0,v 1.19 2017/06/16 22:39:34 pgoyette Exp $ # # Configuration info for Intel PXA2[751]0 CPU support # @@ -21,7 +21,7 @@ file arch/arm/xscale/pxa2x0_intr.c pxai defflag opt_pxa2x0_gpio.h PXAGPIO_HAS_GPION_INTRS # GPIO controller -device pxagpio +device pxagpio: gpiobus attach pxagpio at pxaip file arch/arm/xscale/pxa2x0_gpio.c pxagpio needs-flag Index: src/sys/arch/arm/xscale/pxa2x0_gpio.c diff -u src/sys/arch/arm/xscale/pxa2x0_gpio.c:1.16 src/sys/arch/arm/xscale/pxa2x0_gpio.c:1.17 --- src/sys/arch/arm/xscale/pxa2x0_gpio.c:1.16 Mon Nov 12 18:00:38 2012 +++ src/sys/arch/arm/xscale/pxa2x0_gpio.c Fri Jun 16 22:39:34 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: pxa2x0_gpio.c,v 1.16 2012/11/12 18:00:38 skrll Exp $ */ +/* $NetBSD: pxa2x0_gpio.c,v 1.17 2017/06/16 22:39:34 pgoyette Exp $ */ /* * Copyright 2003 Wasabi Systems, Inc. @@ -36,8 +36,9 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pxa2x0_gpio.c,v 1.16 2012/11/12 18:00:38 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pxa2x0_gpio.c,v 1.17 2017/06/16 22:39:34 pgoyette Exp $"); +#include "gpio.h" #include "opt_pxa2x0_gpio.h" #include <sys/param.h> @@ -55,6 +56,9 @@ __KERNEL_RCSID(0, "$NetBSD: pxa2x0_gpio. #include "locators.h" +#include <sys/gpio.h> +#include <dev/gpio/gpiovar.h> + struct gpio_irq_handler { struct gpio_irq_handler *gh_next; int (*gh_func)(void *); @@ -75,11 +79,19 @@ struct pxagpio_softc { #else struct gpio_irq_handler *sc_handlers[2]; #endif + struct gpio_chipset_tag sc_gpio_gc; + gpio_pin_t sc_gpio_pins[GPIO_NPINS]; }; static int pxagpio_match(device_t, cfdata_t, void *); static void pxagpio_attach(device_t, device_t, void *); +#if NGPIO > 0 +static int pxa2x0_gpio_pin_read(void *, int); +static void pxa2x0_gpio_pin_write(void *, int, int); +static void pxa2x0_gpio_pin_ctl(void *, int, int); +#endif + CFATTACH_DECL_NEW(pxagpio, sizeof(struct pxagpio_softc), pxagpio_match, pxagpio_attach, NULL, NULL); @@ -137,6 +149,11 @@ pxagpio_attach(device_t parent, device_t { struct pxagpio_softc *sc = device_private(self); struct pxaip_attach_args *pxa = aux; +#if NGPIO > 0 + struct gpiobus_attach_args gba; + int pin, maxpin; + u_int func; +#endif sc->sc_dev = self; sc->sc_bust = pxa->pxa_iot; @@ -185,6 +202,42 @@ pxagpio_attach(device_t parent, device_t sc->sc_irqcookie[0] = sc->sc_irqcookie[1] = NULL; pxagpio_softc = sc; +#if NGPIO > 0 +#if defined(CPU_XSCALE_PXA250) && defined(CPU_XSCALE_PXA270) + maxpin = CPU_IS_PXA270 ? PXA270_GPIO_NPINS : PXA250_GPIO_NPINS; +#else + maxpin = GPIO_NPINS; +#endif + for (pin = 0; pin < maxpin; ++pin) { + + sc->sc_gpio_pins[pin].pin_num = pin; + func = pxa2x0_gpio_get_function(pin); + + if (GPIO_IS_GPIO(func)) { + sc->sc_gpio_pins[pin].pin_caps = GPIO_PIN_INPUT | + GPIO_PIN_OUTPUT; + sc->sc_gpio_pins[pin].pin_state = + pxa2x0_gpio_pin_read(sc, pin); + } else { + sc->sc_gpio_pins[pin].pin_caps = 0; + sc->sc_gpio_pins[pin].pin_state = 0; + } + } + + /* create controller tag */ + sc->sc_gpio_gc.gp_cookie = sc; + sc->sc_gpio_gc.gp_pin_read = pxa2x0_gpio_pin_read; + sc->sc_gpio_gc.gp_pin_write = pxa2x0_gpio_pin_write; + sc->sc_gpio_gc.gp_pin_ctl = pxa2x0_gpio_pin_ctl; + + gba.gba_gc = &sc->sc_gpio_gc; + gba.gba_pins = sc->sc_gpio_pins; + gba.gba_npins = maxpin; + + config_found_ia(self, "gpiobus", &gba, gpiobus_print); +#else + aprint_normal_dev(sc->sc_dev, "no GPIO configured in kernel\n"); +#endif } void @@ -668,6 +721,34 @@ pxa2x0_gpio_set_intr_level(u_int gpio, i splx(s); } +#if NGPIO > 0 +/* GPIO support functions */ +static int +pxa2x0_gpio_pin_read(void *arg, int pin) +{ + return pxa2x0_gpio_get_bit(pin); +} + +static void +pxa2x0_gpio_pin_write(void *arg, int pin, int value) +{ + if (value == GPIO_PIN_HIGH) { + pxa2x0_gpio_set_bit(pin); + } else { + pxa2x0_gpio_clear_bit(pin); + } +} + +static void +pxa2x0_gpio_pin_ctl(void *arg, int pin, int flags) +{ + if (flags & GPIO_PIN_OUTPUT) { + pxa2x0_gpio_set_function(pin, GPIO_OUT); + } else if (flags & GPIO_PIN_INPUT) { + pxa2x0_gpio_set_function(pin, GPIO_IN); + } +} +#endif #if defined(CPU_XSCALE_PXA250) /* Index: src/sys/arch/evbarm/conf/GUMSTIX diff -u src/sys/arch/evbarm/conf/GUMSTIX:1.90 src/sys/arch/evbarm/conf/GUMSTIX:1.91 --- src/sys/arch/evbarm/conf/GUMSTIX:1.90 Sun Feb 19 07:47:00 2017 +++ src/sys/arch/evbarm/conf/GUMSTIX Fri Jun 16 22:39:34 2017 @@ -1,4 +1,4 @@ -# $NetBSD: GUMSTIX,v 1.90 2017/02/19 07:47:00 rin Exp $ +# $NetBSD: GUMSTIX,v 1.91 2017/06/16 22:39:34 pgoyette Exp $ # # GUMSTIX -- Gumstix. Inc. gumstix platforms kernel # @@ -179,6 +179,7 @@ pxaintc0 at pxaip? # interrupt contro options PXAGPIO_HAS_GPION_INTRS pxagpio0 at pxaip? # GPIO +gpio* at gpiobus? pxartc0 at pxaip? addr 0x40900000 # RTC # cotulla integrated 16550 UARTs Added files: Index: src/share/man/man4/pxagpio.4 diff -u /dev/null src/share/man/man4/pxagpio.4:1.1 --- /dev/null Fri Jun 16 22:39:34 2017 +++ src/share/man/man4/pxagpio.4 Fri Jun 16 22:39:34 2017 @@ -0,0 +1,67 @@ +.\" +.\" Copyright (c) 2017 The NetBSD Foundation, Inc. +.\" All rights reserved. +.\" +.\" This code is derived from software contributed to The NetBSD Foundation +.\" by Steve Woodford. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +.\" POSSIBILITY OF SUCH DAMAGE. +.\" +.Dd April 15, 2017 +.Dt PXAGPIO 4 +.Os +.Sh NAME +.Nm pxaip +.Nd Intel Xscale PXA250/PXA270 GPIO Controller +.Sh SYNOPSIS +.Cd "pxagpio* at pxaip?" +.Cd "gpio* at gpiobus?" +.Sh DESCRIPTION +.Nm +is an on-board GPIO controller found in XScale PXA250, PXA255, PXA270, +PXA271, PXA272 and PXA273 processors manufactured by Intel and Marvell +Technology. +The driver does support either 86 pins for PXA250 and 121 pins for PXA270 +processor family. +Access to the pins is provided by the +.Xr gpio 4 +interface. The driver does support GPIO_PIN_INPUT and GPIO_PIN_OUTPUT. +GPIO pins being used in alternate configurations are not available +for GPIO operations. +.Sh SEE ALSO +.Xr gpio 4 , +.Xr pxagpio 4 +.Sh HISTORY +The +.Nm +driver first appeared in +.Nx 2.0 . GPIO attachment appeared in +.Nx 8.0 . +.Sh AUTHORS +.An -nosplit +The +.Nm +driver was written by +.An Steve Woodford +.Aq Mt s...@netbsd.org . +This manual page was contributed by +.An Stephan Meisinger .