Module Name: src Committed By: bouyer Date: Sun Jun 23 11:09:54 UTC 2013
Modified Files: src/distrib/sets/lists/man [netbsd-5]: mi src/share/man/man4 [netbsd-5]: Makefile gpio.4 src/sys/arch/i386/conf [netbsd-5]: ALL files.i386 Added Files: src/share/man/man4 [netbsd-5]: ptcd.4 src/sys/dev/isa [netbsd-5]: ptcd.c Log Message: Pull up following revision(s) (requested by mbalmer in ticket #1863): distrib/sets/lists/man/mi: revision 1.1411 share/man/man4/gpio.4: revision 1.24 sys/arch/i386/conf/ALL: revision 1.348 sys/arch/i386/conf/files.i386: revision 1.369 sys/dev/isa/ptcd.c: revision 1.1 share/man/man4/Makefile: revision 1.593 share/man/man4/ptcd.4: revision 1.1, 1.3, 1.4 ptcd(4) is a device driver for the cash drawer port found on Protech PS3100 point of sale terminals. It controls the cash drawer using a gpio(4) device that attaches at ptcd0: Pin 0 controls the drawer, pin 1 reports the current state. For details read the manual page. Mention ptcd(4) in the synopsis. To generate a diff of this commit: cvs rdiff -u -r1.1109.2.22 -r1.1109.2.23 src/distrib/sets/lists/man/mi cvs rdiff -u -r1.482.2.12 -r1.482.2.13 src/share/man/man4/Makefile cvs rdiff -u -r1.7 -r1.7.4.1 src/share/man/man4/gpio.4 cvs rdiff -u -r0 -r1.4.4.2 src/share/man/man4/ptcd.4 cvs rdiff -u -r1.183.4.10 -r1.183.4.11 src/sys/arch/i386/conf/ALL cvs rdiff -u -r1.338.6.4 -r1.338.6.5 src/sys/arch/i386/conf/files.i386 cvs rdiff -u -r0 -r1.3.4.2 src/sys/dev/isa/ptcd.c 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.1109.2.22 src/distrib/sets/lists/man/mi:1.1109.2.23 --- src/distrib/sets/lists/man/mi:1.1109.2.22 Thu Nov 8 20:08:18 2012 +++ src/distrib/sets/lists/man/mi Sun Jun 23 11:09:54 2013 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.1109.2.22 2012/11/08 20:08:18 riz Exp $ +# $NetBSD: mi,v 1.1109.2.23 2013/06/23 11:09:54 bouyer Exp $ # # Note: don't delete entries from here - mark them as "obsolete" instead. # @@ -1311,6 +1311,7 @@ ./usr/share/man/cat4/prep/nvram.0 man-sys-catman .cat ./usr/share/man/cat4/pseye.0 man-sys-catman .cat ./usr/share/man/cat4/pss.0 man-obsolete obsolete +./usr/share/man/cat4/ptcd.0 man-sys-catman .cat ./usr/share/man/cat4/ptm.0 man-sys-catman .cat ./usr/share/man/cat4/pty.0 man-sys-catman .cat ./usr/share/man/cat4/puc.0 man-sys-catman .cat @@ -3806,6 +3807,7 @@ ./usr/share/man/html4/prep/intro.html man-sys-htmlman html ./usr/share/man/html4/prep/nvram.html man-sys-htmlman html ./usr/share/man/html4/pseye.html man-sys-htmlman html +./usr/share/man/html4/ptcd.html man-sys-htmlman html ./usr/share/man/html4/ptm.html man-sys-htmlman html ./usr/share/man/html4/pty.html man-sys-htmlman html ./usr/share/man/html4/puc.html man-sys-htmlman html @@ -6209,6 +6211,7 @@ ./usr/share/man/man4/prep/nvram.4 man-sys-man .man ./usr/share/man/man4/pseye.4 man-sys-man .man ./usr/share/man/man4/pss.4 man-obsolete obsolete +./usr/share/man/man4/ptcd.4 man-sys-man .man ./usr/share/man/man4/ptm.4 man-sys-man .man ./usr/share/man/man4/pty.4 man-sys-man .man ./usr/share/man/man4/puc.4 man-sys-man .man Index: src/share/man/man4/Makefile diff -u src/share/man/man4/Makefile:1.482.2.12 src/share/man/man4/Makefile:1.482.2.13 --- src/share/man/man4/Makefile:1.482.2.12 Fri Sep 28 10:58:15 2012 +++ src/share/man/man4/Makefile Sun Jun 23 11:09:54 2013 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.482.2.12 2012/09/28 10:58:15 sborrill Exp $ +# $NetBSD: Makefile,v 1.482.2.13 2013/06/23 11:09:54 bouyer Exp $ # @(#)Makefile 8.1 (Berkeley) 6/18/93 MAN= aac.4 ac97.4 acardide.4 aceride.4 acphy.4 acpidalb.4 \ @@ -43,7 +43,7 @@ MAN= aac.4 ac97.4 acardide.4 aceride.4 a pad.4 pas.4 pcdisplay.4 pciide.4 pckbc.4 pckbd.4 pcn.4 pcppi.4 \ pcscp.4 pcweasel.4 pdcide.4 pdcsata.4 piixide.4 piixpcib.4 piixpm.4 \ pim.4 plip.4 pms.4 pmu.4 pnaphy.4 ppbus.4 ppp.4 pppoe.4 pseye.4 \ - ptm.4 pty.4 puc.4 pud.4 puffs.4 px.4 pxg.4 \ + ptcd.4 ptm.4 pty.4 puc.4 pud.4 puffs.4 px.4 pxg.4 \ qe.4 qec.4 qsphy.4 \ raid.4 ral.4 ray.4 rcons.4 re.4 rgephy.4 rlphy.4 rnd.4 route.4 \ rs5c372rtc.4 rtk.4 rtw.4 rum.4 \ Index: src/share/man/man4/gpio.4 diff -u src/share/man/man4/gpio.4:1.7 src/share/man/man4/gpio.4:1.7.4.1 --- src/share/man/man4/gpio.4:1.7 Tue Apr 29 14:07:36 2008 +++ src/share/man/man4/gpio.4 Sun Jun 23 11:09:54 2013 @@ -1,4 +1,4 @@ -.\" $NetBSD: gpio.4,v 1.7 2008/04/29 14:07:36 cegger Exp $ +.\" $NetBSD: gpio.4,v 1.7.4.1 2013/06/23 11:09:54 bouyer Exp $ .\" $OpenBSD: gpio.4,v 1.5 2004/11/23 09:39:29 reyk Exp $ .\" .\" Copyright (c) 2004 Alexander Yurchenko <gra...@openbsd.org> @@ -15,7 +15,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd January 9, 2008 +.Dd December 16, 2012 .Dt GPIO 4 .Os .Sh NAME @@ -27,6 +27,7 @@ .Cd "gpio* at gscpcib?" .Cd "gpio* at nsclpcsio?" .Cd "gpio* at ppbus?" +.Cd "gpio* at ptcd?" .Pp .In sys/types.h .In sys/gpio.h Index: src/sys/arch/i386/conf/ALL diff -u src/sys/arch/i386/conf/ALL:1.183.4.10 src/sys/arch/i386/conf/ALL:1.183.4.11 --- src/sys/arch/i386/conf/ALL:1.183.4.10 Wed Jun 19 07:50:14 2013 +++ src/sys/arch/i386/conf/ALL Sun Jun 23 11:09:54 2013 @@ -1,4 +1,4 @@ -# $NetBSD: ALL,v 1.183.4.10 2013/06/19 07:50:14 bouyer Exp $ +# $NetBSD: ALL,v 1.183.4.11 2013/06/23 11:09:54 bouyer Exp $ # From NetBSD: GENERIC,v 1.787 2006/10/01 18:37:54 bouyer Exp # # ALL machine description file @@ -17,7 +17,7 @@ include "arch/i386/conf/std.i386" options INCLUDE_CONFIG_FILE # embed config file in kernel binary -#ident "ALL-$Revision: 1.183.4.10 $" +#ident "ALL-$Revision: 1.183.4.11 $" maxusers 32 # estimated number of users @@ -477,6 +477,10 @@ isa0 at mainbus? isa0 at pceb? isa0 at pcib? +# Protech PS3100 cash drawer port +ptcd0 at isa? +gpio* at ptcd? + # PCMCIA bus support pcmcia* at pcic? controller ? socket ? pcmcia* at tcic? controller ? socket ? Index: src/sys/arch/i386/conf/files.i386 diff -u src/sys/arch/i386/conf/files.i386:1.338.6.4 src/sys/arch/i386/conf/files.i386:1.338.6.5 --- src/sys/arch/i386/conf/files.i386:1.338.6.4 Wed Oct 7 15:41:12 2009 +++ src/sys/arch/i386/conf/files.i386 Sun Jun 23 11:09:54 2013 @@ -1,4 +1,4 @@ -# $NetBSD: files.i386,v 1.338.6.4 2009/10/07 15:41:12 sborrill Exp $ +# $NetBSD: files.i386,v 1.338.6.5 2013/06/23 11:09:54 bouyer Exp $ # # new style config file for i386 architecture # @@ -250,6 +250,11 @@ include "dev/isa/files.isa" file arch/x86/isa/clock.c isa file arch/x86/isa/rtc.c isa +# Protech PS3100 cash drawer +device ptcd: gpiobus +attach ptcd at isa +file dev/isa/ptcd.c ptcd + # TSC support file arch/x86/x86/tsc.c Added files: Index: src/share/man/man4/ptcd.4 diff -u /dev/null src/share/man/man4/ptcd.4:1.4.4.2 --- /dev/null Sun Jun 23 11:09:54 2013 +++ src/share/man/man4/ptcd.4 Sun Jun 23 11:09:54 2013 @@ -0,0 +1,67 @@ +.\" $NetBSD$ +.\" +.\" Copyright (c) 2012 Marc Balmer <m...@msys.ch> +.\" All rights reserved. +.\" +.\" 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 AUTHOR ``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 AUTHOR 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 December 17, 2012 +.Dt PTCD 4 +.Os +.Sh NAME +.Nm ptcd +.Nd support for the Protech PS3100 cash drawer port +.Sh SYNOPSIS +.Cd "ptcd* at isa? port 0x48d" +.Cd "gpio* at ptcd?" +.Sh DESCRIPTION +The +.Nm +driver controls the cash drawer port of the Protech PS3100 point of sale +terminal using the GPIO subsystem. +.Pp +.Nm +provides a GPIO device with two pins: pin 0 is used to control the cash drawer +while pin 1 can be used to read the current state of the sense input pin. +A logical 0 means the cash drawer is closed, a logical 1 means the cash drawer +is open. +.Pp +To open the cash drawer, set pin 0 to logical 1 for a short period +of time (e.g. < 1 sec) and then reset the pin to logical 0. +.Sh CAVEATS +As it is not possible to detect the hardware at runtime, this driver, when +enabled, will always attach. +Only enable it in your kernel configuration if you have the proper hardware. +.Sh SEE ALSO +.Xr gpio 4 , +.Xr ibmcd 4 , +.Xr gpioctl 8 +.Sh HISTORY +The +.Nm +driver first appeared in +.Nx 6.1 . +.Sh AUTHORS +.An -nosplit +The +.Nm +driver was written by +.An Marc Balmer Aq m...@msys.ch . Index: src/sys/dev/isa/ptcd.c diff -u /dev/null src/sys/dev/isa/ptcd.c:1.3.4.2 --- /dev/null Sun Jun 23 11:09:54 2013 +++ src/sys/dev/isa/ptcd.c Sun Jun 23 11:09:54 2013 @@ -0,0 +1,180 @@ +/* $NetBSD */ + +/* + * Copyright (c) 2012 Marc Balmer <m...@msys.ch> + * All rights reserved. + * + * 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 AUTHOR ``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 AUTHOR 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. + */ + +/* + * Driver for the Protech PS3100 cash drawer port. + */ + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/device.h> +#include <sys/gpio.h> +#include <sys/kernel.h> +#include <sys/bus.h> + +#include <machine/pio.h> + +#include <dev/gpio/gpiovar.h> + +#include <dev/isa/isareg.h> +#include <dev/isa/isavar.h> + +/* + * To assert the cash drawer pulse, 0x00 must be written to I/O register 0x48f + * To stop the cash drawer pulse, 0x02 must be written to I/O register 0x48f + * To read out the current cash drawer state (sense pin), read bit 7 of + * I/O register 0x48d + */ + +#define PTCD_READ_REG 0x48d + +/* register offsets, counted from PTCD_READ_REG */ +#define PTCD_READ 0x00 +#define PTCD_WRITE 0x02 + +/* Read mask */ +#define PTCD_SENSE 0x80 + +/* Write values */ +#define PTCD_OPEN 0x00 +#define PTCD_CLOSE 0x02 + +#define PTCD_NPINS 2 +#define PIN_WRITE 0 +#define PIN_READ 1 + +#define PTCD_ADDR_SIZE 0x03 + +struct ptcd_softc { + bus_space_tag_t sc_iot; + bus_space_handle_t sc_ioh; + + /* GPIO interface */ + struct gpio_chipset_tag sc_gpio_gc; + gpio_pin_t sc_gpio_pins[PTCD_NPINS]; +}; + +int ptcd_match(device_t, struct cfdata *, void *); +void ptcd_attach(device_t, device_t, void *); + +int ptcd_gpio_pin_read(void *, int); +void ptcd_gpio_pin_write(void *, int, int); +void ptcd_gpio_pin_ctl(void *, int, int); + +CFATTACH_DECL2_NEW(ptcd, sizeof(struct ptcd_softc), ptcd_match, ptcd_attach, + NULL, NULL, NULL, NULL); + +int +ptcd_match(device_t parent, struct cfdata *match, void *aux) +{ + struct isa_attach_args *ia = aux; + + if (ia->ia_nio < 1) + return 0; + + if (ISA_DIRECT_CONFIG(ia)) + return 0; + + if (ia->ia_io[0].ir_addr != PTCD_READ_REG) + return 0; + + ia->ia_io[0].ir_size = PTCD_ADDR_SIZE; + ia->ia_niomem = 0; + ia->ia_nirq = 0; + ia->ia_ndrq = 0; + + return 1; +} + +void +ptcd_attach(device_t parent, device_t self, void *aux) +{ + struct ptcd_softc *sc; + struct isa_attach_args *ia = aux; + struct gpiobus_attach_args gba; + + sc = device_private(self); + + sc->sc_iot = ia->ia_iot; + if (bus_space_map(sc->sc_iot, ia->ia_io[0].ir_addr, PTCD_ADDR_SIZE, 0, + &sc->sc_ioh)) { + aprint_error(": can't map i/o space\n"); + return; + } + + aprint_normal(": Protech PS3100 cash drawer\n"); + + /* Initialize pins array */ + sc->sc_gpio_pins[PIN_WRITE].pin_num = 0; + sc->sc_gpio_pins[PIN_WRITE].pin_caps = GPIO_PIN_OUTPUT; + sc->sc_gpio_pins[PIN_READ].pin_num = 1; + sc->sc_gpio_pins[PIN_READ].pin_caps = GPIO_PIN_INPUT; + + /* Create controller tag */ + sc->sc_gpio_gc.gp_cookie = sc; + sc->sc_gpio_gc.gp_pin_read = ptcd_gpio_pin_read; + sc->sc_gpio_gc.gp_pin_write = ptcd_gpio_pin_write; + sc->sc_gpio_gc.gp_pin_ctl = ptcd_gpio_pin_ctl; + + gba.gba_gc = &sc->sc_gpio_gc; + gba.gba_pins = sc->sc_gpio_pins; + gba.gba_npins = PTCD_NPINS; + + /* Attach GPIO framework */ + config_found_ia(self, "gpiobus", &gba, gpiobus_print); +} + +int +ptcd_gpio_pin_read(void *arg, int pin) +{ + struct ptcd_softc *sc = arg; + uint8_t data; + + if (pin != PIN_READ) + return 0; + + data = bus_space_read_1(sc->sc_iot, sc->sc_ioh, PTCD_READ); + return data & PTCD_SENSE ? 0 : 1; +} + +void +ptcd_gpio_pin_write(void *arg, int pin, int value) +{ + struct ptcd_softc *sc = arg; + + if (pin != PIN_WRITE) + return; + + bus_space_write_1(sc->sc_iot, sc->sc_ioh, PTCD_WRITE, + value ? PTCD_OPEN : PTCD_CLOSE); +} + +void +ptcd_gpio_pin_ctl(void *arg, int pin, int flags) +{ + /* We ignore pin control requests since the pin functions are fixed. */ +}