Date: Wed, 8 Jan 2003 16:34:36 -0800 (PST) From: Peter Wemm <peter@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 23451 for review Message-ID: <200301090034.h090Ya0g026680@repoman.freebsd.org>
index | next in thread | raw e-mail
http://perforce.freebsd.org/chv.cgi?CH=23451 Change 23451 by peter@peter_daintree on 2003/01/08 16:34:34 IFC @23450 Affected files ... .. //depot/projects/ia64/contrib/tcpdump/print-esp.c#4 integrate .. //depot/projects/ia64/etc/defaults/periodic.conf#7 integrate .. //depot/projects/ia64/etc/periodic/daily/150.clean-hoststat#3 integrate .. //depot/projects/ia64/release/doc/ja_JP.eucJP/early-adopter/article.sgml#4 integrate .. //depot/projects/ia64/release/doc/ja_JP.eucJP/errata/article.sgml#4 integrate .. //depot/projects/ia64/release/doc/ja_JP.eucJP/hardware/common/artheader.sgml#2 integrate .. //depot/projects/ia64/share/man/man5/periodic.conf.5#9 integrate .. //depot/projects/ia64/sys/conf/files#55 integrate .. //depot/projects/ia64/sys/dev/ata/ata-pci.c#20 integrate .. //depot/projects/ia64/sys/dev/gem/if_gem.c#11 integrate .. //depot/projects/ia64/sys/dev/gem/if_gem_pci.c#6 integrate .. //depot/projects/ia64/sys/dev/gem/if_gemvar.h#6 integrate .. //depot/projects/ia64/sys/dev/hme/if_hme.c#9 integrate .. //depot/projects/ia64/sys/dev/zs/z8530reg.h#2 integrate .. //depot/projects/ia64/sys/dev/zs/z8530var.h#1 branch .. //depot/projects/ia64/sys/dev/zs/zs.c#4 integrate .. //depot/projects/ia64/sys/dev/zs/zs_sbus.c#1 branch .. //depot/projects/ia64/sys/i386/i386/identcpu.c#11 integrate .. //depot/projects/ia64/sys/modules/Makefile#32 integrate .. //depot/projects/ia64/sys/modules/gem/Makefile#1 branch .. //depot/projects/ia64/sys/modules/if_hme/Makefile#1 branch .. //depot/projects/ia64/sys/netinet6/esp_rijndael.c#2 integrate .. //depot/projects/ia64/sys/netinet6/ipcomp_core.c#4 integrate .. //depot/projects/ia64/sys/netkey/keydb.h#3 integrate .. //depot/projects/ia64/sys/netkey/keysock.c#11 integrate .. //depot/projects/ia64/sys/ufs/ffs/fs.h#9 integrate .. //depot/projects/ia64/sys/vm/vm_page.c#34 integrate .. //depot/projects/ia64/usr.sbin/acpi/acpidump/acpi.c#8 integrate .. //depot/projects/ia64/usr.sbin/acpi/acpidump/acpidump.h#8 integrate .. //depot/projects/ia64/usr.sbin/inetd/inetd.c#11 integrate Differences ... ==== //depot/projects/ia64/contrib/tcpdump/print-esp.c#4 (text+ko) ==== @@ -50,7 +50,7 @@ #endif #include <stdio.h> -#include <stdlib.h> +#include <unistd.h> #include "ip.h" #include "esp.h" ==== //depot/projects/ia64/etc/defaults/periodic.conf#7 (text+ko) ==== @@ -10,7 +10,7 @@ # values set in this file. This eases the upgrade path when defaults # are changed and new features are added. # -# $FreeBSD: src/etc/defaults/periodic.conf,v 1.22 2002/10/25 15:16:54 thomas Exp $ +# $FreeBSD: src/etc/defaults/periodic.conf,v 1.24 2003/01/08 18:52:32 wollman Exp $ # # What files override these defaults ? @@ -60,9 +60,8 @@ daily_clean_rwho_verbose="YES" # Mention files deleted # 150.clean-hoststat -daily_clean_hoststat_enable="YES" # Delete .hoststat daily -daily_clean_hoststat_days=3 # If not modified for -daily_clean_hoststat_verbose="YES" # Mention files deleted +daily_clean_hoststat_enable="YES" # Purge sendmail host + # status cache daily # 200.backup-passwd daily_backup_passwd_enable="YES" # Backup passwd & group ==== //depot/projects/ia64/etc/periodic/daily/150.clean-hoststat#3 (text+ko) ==== @@ -1,6 +1,6 @@ #!/bin/sh # -# $FreeBSD: src/etc/periodic/daily/150.clean-hoststat,v 1.6 2002/08/12 11:09:01 schweikh Exp $ +# $FreeBSD: src/etc/periodic/daily/150.clean-hoststat,v 1.7 2003/01/08 18:51:45 wollman Exp $ # # Remove stale files in /var/spool/.hoststat # @@ -14,34 +14,13 @@ case "$daily_clean_hoststat_enable" in [Yy][Ee][Ss]) - if [ -z "$daily_clean_hoststat_days" ]; then - echo '$daily_clean_hoststat_enable is enabled but' \ - '$daily_clean_hoststat_days is not set' - rc=2 - elif [ ! -d /var/spool/.hoststat ]; then - echo '$daily_clean_hoststat_enable is enabled but' \ - "/var/spool/.hoststat doesn't exist" + if [ -z "$(sendmail -bh 2>&1)" ]; then rc=2 else echo "" - echo "Removing stale files from /var/spool/.hoststat:" - - case "$daily_clean_hoststat_verbose" in - [Yy][Ee][Ss]) - print=-print;; - *) - print=;; - esac - - if [ -d /var/spool/.hoststat ]; then - cd /var/spool/.hoststat - rc=$(find . ! -name . -mtime +$daily_clean_hoststat_days \ - -delete $print | tee /dev/stderr | wc -l) - [ -z "$print" ] && rc=0 - [ $rc -gt 1 ] && rc=1 - else - rc=3 - fi + echo "Removing stale entries from sendmail host status cache:" + rc=0 + sendmail -bH || rc=1 fi;; *) rc=0;; ==== //depot/projects/ia64/release/doc/ja_JP.eucJP/early-adopter/article.sgml#4 (text+ko) ==== @@ -24,8 +24,8 @@ <!-- FreeBSD Japanese Documentation Project - $FreeBSD: src/release/doc/ja_JP.eucJP/early-adopter/article.sgml,v 1.3 2003/01/05 19:28:05 hrs Exp $ - Original revision: 1.8 + $FreeBSD: src/release/doc/ja_JP.eucJP/early-adopter/article.sgml,v 1.4 2003/01/08 17:57:41 hrs Exp $ + Original revision: 1.9 --> <article> @@ -36,10 +36,11 @@ <corpauthor>&os; リリースエンジニアリングチーム</corpauthor> </authorgroup> - <pubdate>$FreeBSD: src/release/doc/ja_JP.eucJP/early-adopter/article.sgml,v 1.3 2003/01/05 19:28:05 hrs Exp $</pubdate> + <pubdate>$FreeBSD: src/release/doc/ja_JP.eucJP/early-adopter/article.sgml,v 1.4 2003/01/08 17:57:41 hrs Exp $</pubdate> <copyright> <year>2002</year> + <year>2003</year> <holder role="mailto:re@FreeBSD.org">&os; リリースエンジニアリングチーム</holder> </copyright> ==== //depot/projects/ia64/release/doc/ja_JP.eucJP/errata/article.sgml#4 (text+ko) ==== @@ -1,8 +1,8 @@ <!-- FreeBSD Japanese Documentation Project - $FreeBSD: src/release/doc/ja_JP.eucJP/errata/article.sgml,v 1.5 2002/03/15 09:05:23 kuriyama Exp $ - Original revision: 1.9 + $FreeBSD: src/release/doc/ja_JP.eucJP/errata/article.sgml,v 1.6 2003/01/08 17:57:41 hrs Exp $ + Original revision: 1.10 --> <!-- @@ -40,12 +40,13 @@ <corpauthor>&os; プロジェクト</corpauthor> - <pubdate>$FreeBSD: src/release/doc/ja_JP.eucJP/errata/article.sgml,v 1.5 2002/03/15 09:05:23 kuriyama Exp $</pubdate> + <pubdate>$FreeBSD: src/release/doc/ja_JP.eucJP/errata/article.sgml,v 1.6 2003/01/08 17:57:41 hrs Exp $</pubdate> <copyright> <year>2000</year> <year>2001</year> <year>2002</year> + <year>2003</year> <holder role="mailto:doc@FreeBSD.org">FreeBSD ドキュメンテーションプロジェクト</holder> </copyright> </articleinfo> ==== //depot/projects/ia64/release/doc/ja_JP.eucJP/hardware/common/artheader.sgml#2 (text+ko) ==== @@ -1,6 +1,6 @@ <!-- - $FreeBSD: src/release/doc/ja_JP.eucJP/hardware/common/artheader.sgml,v 1.1 2002/03/03 14:31:33 hrs Exp $ - Original revision: 1.3 + $FreeBSD: src/release/doc/ja_JP.eucJP/hardware/common/artheader.sgml,v 1.2 2003/01/08 17:57:41 hrs Exp $ + Original revision: 1.4 --> <articleinfo> @@ -12,6 +12,7 @@ <year>2000</year> <year>2001</year> <year>2002</year> + <year>2003</year> <holder role="mailto:doc@FreeBSD.org">The FreeBSD Documentation Project</holder> </copyright> </articleinfo> ==== //depot/projects/ia64/share/man/man5/periodic.conf.5#9 (text+ko) ==== @@ -23,7 +23,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man5/periodic.conf.5,v 1.44 2002/12/12 17:25:57 ru Exp $ +.\" $FreeBSD: src/share/man/man5/periodic.conf.5,v 1.45 2003/01/08 18:51:45 wollman Exp $ .\" .Dd June 22, 2000 .Dt PERIODIC.CONF 5 @@ -236,18 +236,16 @@ .Pq Vt bool Set to .Dq YES -if you wish old files in -.Pa /var/spool/.hoststat -to be purged. -.It Va daily_clean_hoststat_days -.Pq Vt num -Set to the number of days that files must not have been modified before -they are deleted. -.It Va daily_clean_hoststat_verbose -.Pq Vt bool -Set to -.Dq YES -if you want the removed files to be reported in your daily output. +to run +.Ic sendmail -bH +to automatically purge stale entries from +.Xr sendmail 8 Ns 's +host status cache. +Files will be deleted using the same criteria as +.Nm sendmail +would normally use when determining whether to believe the cached information, +as configured in +.Pa /etc/mail/sendmail.cf . .It Va daily_backup_passwd_enable .Pq Vt bool Set to @@ -709,7 +707,8 @@ .Xr chkgrp 8 , .Xr dump 8 , .Xr newsyslog 8 , -.Xr periodic 8 +.Xr periodic 8 , +.Xr sendmail 8 .Sh HISTORY The .Nm ==== //depot/projects/ia64/sys/conf/files#55 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.743 2003/01/04 22:07:48 jake Exp $ +# $FreeBSD: src/sys/conf/files,v 1.744 2003/01/08 23:36:59 jake Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -793,7 +793,8 @@ dev/xe/if_xe.c optional xe dev/xe/if_xe_pccard.c optional xe card dev/xe/if_xe_pccard.c optional xe pccard -dev/zs/zs.c optional zs sbus +dev/zs/zs.c optional zs +dev/zs/zs_sbus.c optional zs sbus fs/deadfs/dead_vnops.c standard fs/devfs/devfs_devs.c standard fs/devfs/devfs_rule.c standard ==== //depot/projects/ia64/sys/dev/ata/ata-pci.c#20 (text+ko) ==== @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/ata/ata-pci.c,v 1.52 2003/01/08 16:51:41 sos Exp $ + * $FreeBSD: src/sys/dev/ata/ata-pci.c,v 1.53 2003/01/08 17:44:36 sos Exp $ */ #include "opt_ata.h" @@ -287,10 +287,22 @@ } return "Promise TX2 ATA100 controller"; + case 0x5275105a: + case 0x7275105a: + { + uintptr_t devid = 0; + + /* if we are on a SuperTrak SX6000 dont attach */ + if (!BUS_READ_IVAR(device_get_parent(GRANDPARENT(dev)), + GRANDPARENT(dev), PCI_IVAR_DEVID, &devid) && + devid == 0x09628086 && + pci_get_class(GRANDPARENT(dev)) == PCIC_BRIDGE) + break; + } + /* FALLTHROUGH */ + case 0x4d69105a: - case 0x5275105a: case 0x6269105a: - case 0x7275105a: return "Promise TX2 ATA133 controller"; case 0x00041103: ==== //depot/projects/ia64/sys/dev/gem/if_gem.c#11 (text+ko) ==== @@ -26,7 +26,7 @@ * * from: NetBSD: gem.c,v 1.21 2002/06/01 23:50:58 lukem Exp * - * $FreeBSD: src/sys/dev/gem/if_gem.c,v 1.11 2003/01/06 22:09:01 tmm Exp $ + * $FreeBSD: src/sys/dev/gem/if_gem.c,v 1.12 2003/01/08 20:12:45 tmm Exp $ */ /* @@ -350,6 +350,55 @@ return (error); } +void +gem_detach(sc) + struct gem_softc *sc; +{ + struct ifnet *ifp = &sc->sc_arpcom.ac_if; + int i; + + ether_ifdetach(ifp); + gem_stop(ifp, 1); + device_delete_child(sc->sc_dev, sc->sc_miibus); + + for (i = 0; i < GEM_NRXDESC; i++) { + if (sc->sc_rxsoft[i].rxs_dmamap != NULL) + bus_dmamap_destroy(sc->sc_rdmatag, + sc->sc_rxsoft[i].rxs_dmamap); + } + for (i = 0; i < GEM_TXQUEUELEN; i++) { + if (sc->sc_txsoft[i].txs_dmamap != NULL) + bus_dmamap_destroy(sc->sc_tdmatag, + sc->sc_txsoft[i].txs_dmamap); + } + bus_dmamap_unload(sc->sc_cdmatag, sc->sc_cddmamap); + bus_dmamem_free(sc->sc_cdmatag, sc->sc_control_data, + sc->sc_cddmamap); + bus_dma_tag_destroy(sc->sc_cdmatag); + bus_dma_tag_destroy(sc->sc_tdmatag); + bus_dma_tag_destroy(sc->sc_rdmatag); + bus_dma_tag_destroy(sc->sc_pdmatag); +} + +void +gem_suspend(sc) + struct gem_softc *sc; +{ + struct ifnet *ifp = &sc->sc_arpcom.ac_if; + + gem_stop(ifp, 0); +} + +void +gem_resume(sc) + struct gem_softc *sc; +{ + struct ifnet *ifp = &sc->sc_arpcom.ac_if; + + if (ifp->if_flags & IFF_UP) + gem_init(ifp); +} + static void gem_cddma_callback(xsc, segs, nsegs, error) void *xsc; @@ -1833,43 +1882,3 @@ chipit: bus_space_write_4(t, h, GEM_MAC_RX_CONFIG, v); } - -#if notyet - -/* - * gem_power: - * - * Power management (suspend/resume) hook. - */ -void -static gem_power(why, arg) - int why; - void *arg; -{ - struct gem_softc *sc = arg; - struct ifnet *ifp = &sc->sc_arpcom.ac_if; - int s; - - s = splnet(); - switch (why) { - case PWR_SUSPEND: - case PWR_STANDBY: - gem_stop(ifp, 1); - if (sc->sc_power != NULL) - (*sc->sc_power)(sc, why); - break; - case PWR_RESUME: - if (ifp->if_flags & IFF_UP) { - if (sc->sc_power != NULL) - (*sc->sc_power)(sc, why); - gem_init(ifp); - } - break; - case PWR_SOFTSUSPEND: - case PWR_SOFTSTANDBY: - case PWR_SOFTRESUME: - break; - } - splx(s); -} -#endif ==== //depot/projects/ia64/sys/dev/gem/if_gem_pci.c#6 (text+ko) ==== @@ -26,7 +26,7 @@ * * from: NetBSD: if_gem_pci.c,v 1.7 2001/10/18 15:09:15 thorpej Exp * - * $FreeBSD: src/sys/dev/gem/if_gem_pci.c,v 1.5 2002/07/10 10:24:23 benno Exp $ + * $FreeBSD: src/sys/dev/gem/if_gem_pci.c,v 1.6 2003/01/08 20:12:45 tmm Exp $ */ /* @@ -77,12 +77,19 @@ static int gem_pci_probe(device_t); static int gem_pci_attach(device_t); - +static int gem_pci_detach(device_t); +static int gem_pci_suspend(device_t); +static int gem_pci_resume(device_t); static device_method_t gem_pci_methods[] = { /* Device interface */ DEVMETHOD(device_probe, gem_pci_probe), DEVMETHOD(device_attach, gem_pci_attach), + DEVMETHOD(device_detach, gem_pci_detach), + DEVMETHOD(device_suspend, gem_pci_suspend), + DEVMETHOD(device_resume, gem_pci_resume), + /* Use the suspend handler here, it is all that is required. */ + DEVMETHOD(device_shutdown, gem_pci_suspend), /* bus interface */ DEVMETHOD(bus_print_child, bus_generic_print_child), @@ -202,3 +209,40 @@ bus_release_resource(dev, SYS_RES_MEMORY, gsc->gsc_srid, gsc->gsc_sres); return (ENXIO); } + +static int +gem_pci_detach(dev) + device_t dev; +{ + struct gem_pci_softc *gsc = device_get_softc(dev); + struct gem_softc *sc = &gsc->gsc_gem; + + gem_detach(sc); + + bus_teardown_intr(dev, gsc->gsc_ires, gsc->gsc_ih); + bus_release_resource(dev, SYS_RES_IRQ, gsc->gsc_irid, gsc->gsc_ires); + bus_release_resource(dev, SYS_RES_MEMORY, gsc->gsc_srid, gsc->gsc_sres); + return (0); +} + +static int +gem_pci_suspend(dev) + device_t dev; +{ + struct gem_pci_softc *gsc = device_get_softc(dev); + struct gem_softc *sc = &gsc->gsc_gem; + + gem_suspend(sc); + return (0); +} + +static int +gem_pci_resume(dev) + device_t dev; +{ + struct gem_pci_softc *gsc = device_get_softc(dev); + struct gem_softc *sc = &gsc->gsc_gem; + + gem_resume(sc); + return (0); +} ==== //depot/projects/ia64/sys/dev/gem/if_gemvar.h#6 (text+ko) ==== @@ -25,7 +25,7 @@ * * from: NetBSD: gemvar.h,v 1.8 2002/05/15 02:36:12 matt Exp * - * $FreeBSD: src/sys/dev/gem/if_gemvar.h,v 1.5 2003/01/06 22:09:01 tmm Exp $ + * $FreeBSD: src/sys/dev/gem/if_gemvar.h,v 1.6 2003/01/08 20:12:45 tmm Exp $ */ #ifndef _IF_GEMVAR_H @@ -219,7 +219,9 @@ extern devclass_t gem_devclass; int gem_attach(struct gem_softc *); -int gem_detach(struct gem_softc *); +void gem_detach(struct gem_softc *); +void gem_suspend(struct gem_softc *); +void gem_resume(struct gem_softc *); void gem_intr(void *); int gem_mediachange(struct ifnet *); ==== //depot/projects/ia64/sys/dev/hme/if_hme.c#9 (text+ko) ==== @@ -36,7 +36,7 @@ * * from: NetBSD: hme.c,v 1.20 2000/12/14 06:27:25 thorpej Exp * - * $FreeBSD: src/sys/dev/hme/if_hme.c,v 1.8 2003/01/06 22:12:57 tmm Exp $ + * $FreeBSD: src/sys/dev/hme/if_hme.c,v 1.9 2003/01/08 18:53:38 obrien Exp $ */ /* @@ -122,7 +122,7 @@ static int hme_nerr; DRIVER_MODULE(miibus, hme, miibus_driver, miibus_devclass, 0, 0); -MODULE_DEPEND(hem, miibus, 1, 1, 1); +MODULE_DEPEND(hme, miibus, 1, 1, 1); #define HME_SPC_READ_4(spc, sc, offs) \ bus_space_read_4((sc)->sc_ ## spc ## t, (sc)->sc_ ## spc ## h, \ ==== //depot/projects/ia64/sys/dev/zs/z8530reg.h#2 (text+ko) ==== @@ -43,7 +43,7 @@ * * @(#)zsreg.h 8.1 (Berkeley) 6/11/93 * - * $FreeBSD: src/sys/dev/zs/z8530reg.h,v 1.1 2003/01/01 19:49:29 jake Exp $ + * $FreeBSD: src/sys/dev/zs/z8530reg.h,v 1.2 2003/01/08 23:36:16 jake Exp $ */ /* @@ -90,16 +90,6 @@ */ #define ZS_NCHAN 2 -#define ZS_CHANLEN 4 - -#define ZS_CHAN_A 4 -#define ZS_CHAN_B 0 - -#define ZS_CSR 0 -#define ZS_DATA 2 - -#define ZS_CLOCK (9600 * 512) -#define ZS_CLOCK_DIV (16) #define ZSRR_IVEC 2 /* interrupt vector (channel 0) */ #define ZSRR_IPEND 3 /* interrupt pending (ch. 0 only) */ ==== //depot/projects/ia64/sys/dev/zs/zs.c#4 (text+ko) ==== @@ -67,7 +67,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/zs/zs.c,v 1.3 2003/01/08 04:30:30 jake Exp $ + * $FreeBSD: src/sys/dev/zs/zs.c,v 1.4 2003/01/08 23:36:16 jake Exp $ */ /* @@ -96,101 +96,32 @@ #include <ddb/ddb.h> -#include <ofw/openfirm.h> -#include <sparc64/sbus/sbusvar.h> - #include <dev/zs/z8530reg.h> +#include <dev/zs/z8530var.h> #define CDEV_MAJOR 182 #define ZS_READ(sc, r) \ - bus_space_read_1((sc)->sc_bt, (sc)->sc_bh, (r)) + bus_space_read_1((sc)->sc_bt, (r), 0) #define ZS_WRITE(sc, r, v) \ - bus_space_write_1((sc)->sc_bt, (sc)->sc_bh, (r), (v)) + bus_space_write_1((sc)->sc_bt, (r), 0, (v)) #define ZS_READ_REG(sc, r) ({ \ - ZS_WRITE((sc), ZS_CSR, (r)); \ - ZS_READ((sc), ZS_CSR); \ + ZS_WRITE((sc), (sc)->sc_csr, (r)); \ + ZS_READ((sc), (sc)->sc_csr); \ }) #define ZS_WRITE_REG(sc, r, v) ({ \ - ZS_WRITE((sc), ZS_CSR, (r)); \ - ZS_WRITE((sc), ZS_CSR, (v)); \ + ZS_WRITE((sc), (sc)->sc_csr, (r)); \ + ZS_WRITE((sc), (sc)->sc_csr, (v)); \ }) #define ZSTTY_LOCK(sz) mtx_lock_spin(&(sc)->sc_mtx) #define ZSTTY_UNLOCK(sz) mtx_unlock_spin(&(sc)->sc_mtx) -struct zstty_softc { - device_t sc_dev; - struct zs_softc *sc_parent; - bus_space_tag_t sc_bt; - bus_space_handle_t sc_bh; - dev_t sc_si; - struct tty *sc_tty; - int sc_channel; - int sc_icnt; - uint8_t *sc_iput; - uint8_t *sc_iget; - int sc_ocnt; - uint8_t *sc_oget; - int sc_brg_clk; - int sc_alt_break_state; - struct mtx sc_mtx; - uint8_t sc_console; - uint8_t sc_tx_busy; - uint8_t sc_tx_done; - uint8_t sc_preg_held; - uint8_t sc_creg[16]; - uint8_t sc_preg[16]; - uint8_t sc_ibuf[CBLOCK]; - uint8_t sc_obuf[CBLOCK]; -}; - -struct zs_softc { - device_t sc_dev; - bus_space_tag_t sc_bt; - bus_space_handle_t sc_bh; - struct zstty_softc *sc_child[ZS_NCHAN]; - void *sc_ih; - void *sc_softih; - struct resource *sc_irqres; - int sc_irqrid; - struct resource *sc_memres; - int sc_memrid; -}; - -static uint8_t zs_init_reg[16] = { - 0, /* 0: CMD (reset, etc.) */ - 0, /* 1: No interrupts yet. */ - 0, /* 2: IVECT */ - ZSWR3_RX_8 | ZSWR3_RX_ENABLE, - ZSWR4_CLK_X16 | ZSWR4_ONESB | ZSWR4_EVENP, - ZSWR5_TX_8 | ZSWR5_TX_ENABLE, - 0, /* 6: TXSYNC/SYNCLO */ - 0, /* 7: RXSYNC/SYNCHI */ - 0, /* 8: alias for data port */ - ZSWR9_MASTER_IE | ZSWR9_NO_VECTOR, - 0, /* 10: Misc. TX/RX control bits */ - ZSWR11_TXCLK_BAUD | ZSWR11_RXCLK_BAUD, - ((ZS_CLOCK/32)/9600)-2, - 0, - ZSWR14_BAUD_ENA | ZSWR14_BAUD_FROM_PCLK, - ZSWR15_BREAK_IE, -}; - -static int zs_probe(device_t dev); -static int zs_attach(device_t dev); -static int zs_detach(device_t dev); - -static void zs_intr(void *v); static void zs_softintr(void *v); static void zs_shutdown(void *v); -static int zstty_probe(device_t dev); -static int zstty_attach(device_t dev); -static int zstty_detach(device_t dev); - static int zstty_intr(struct zstty_softc *sc, uint8_t rr3); static void zstty_softintr(struct zstty_softc *sc) __unused; static int zstty_mdmctrl(struct zstty_softc *sc, int bits, int how); @@ -199,8 +130,6 @@ static void zstty_flush(struct zstty_softc *sc) __unused; static int zstty_speed(struct zstty_softc *sc, int rate); static void zstty_load_regs(struct zstty_softc *sc); -static int zstty_console(device_t dev, char *mode, int len); -static int zstty_keyboard(device_t dev); static cn_probe_t zs_cnprobe; static cn_init_t zs_cninit; @@ -239,92 +168,28 @@ /* kqfilter */ ttykqfilter, }; -static device_method_t zs_methods[] = { - DEVMETHOD(device_probe, zs_probe), - DEVMETHOD(device_attach, zs_attach), - DEVMETHOD(device_detach, zs_detach), - - DEVMETHOD(bus_print_child, bus_generic_print_child), - - { 0, 0 } -}; - -static device_method_t zstty_methods[] = { - DEVMETHOD(device_probe, zstty_probe), - DEVMETHOD(device_attach, zstty_attach), - DEVMETHOD(device_detach, zstty_detach), - - { 0, 0 } -}; - -static driver_t zs_driver = { - "zs", - zs_methods, - sizeof(struct zs_softc), -}; - -static driver_t zstty_driver = { - "zstty", - zstty_methods, - sizeof(struct zstty_softc), -}; - -static devclass_t zs_devclass; -static devclass_t zstty_devclass; - static struct zstty_softc *zstty_cons; -DRIVER_MODULE(zs, sbus, zs_driver, zs_devclass, 0, 0); -DRIVER_MODULE(zstty, zs, zstty_driver, zstty_devclass, 0, 0); - CONS_DRIVER(zs, zs_cnprobe, zs_cninit, zs_cnterm, zs_cngetc, zs_cncheckc, zs_cnputc, zs_cndbctl); -static int +int zs_probe(device_t dev) { - if (strcmp(sbus_get_name(dev), "zs") != 0 || - device_get_unit(dev) != 0) - return (ENXIO); device_set_desc(dev, "Zilog Z8530"); return (0); } -static int +int zs_attach(device_t dev) { struct device *child[ZS_NCHAN]; - struct resource *irqres; - struct resource *memres; struct zs_softc *sc; - int irqrid; - int memrid; int i; - irqrid = 0; - irqres = NULL; - memres = NULL; - memrid = 0; sc = device_get_softc(dev); - memres = bus_alloc_resource(dev, SYS_RES_MEMORY, &memrid, 0, ~0, 1, - RF_ACTIVE); - if (memres == NULL) - goto error; - irqres = bus_alloc_resource(dev, SYS_RES_IRQ, &irqrid, 0, ~0, 1, - RF_ACTIVE); - if (irqres == NULL) - goto error; - if (bus_setup_intr(dev, irqres, INTR_TYPE_TTY | INTR_FAST, zs_intr, - sc, &sc->sc_ih) != 0) - goto error; sc->sc_dev = dev; - sc->sc_irqres = irqres; - sc->sc_irqrid = irqrid; - sc->sc_memres = memres; - sc->sc_memrid = memrid; - sc->sc_bt = rman_get_bustag(memres); - sc->sc_bh = rman_get_bushandle(memres); for (i = 0; i < ZS_NCHAN; i++) child[i] = device_add_child(dev, "zstty", -1); @@ -335,8 +200,8 @@ swi_add(&tty_ithd, "tty:zs", zs_softintr, sc, SWI_TTY, INTR_TYPE_TTY, &sc->sc_softih); - ZS_WRITE_REG(sc->sc_child[0], 2, zs_init_reg[2]); - ZS_WRITE_REG(sc->sc_child[0], 9, zs_init_reg[9]); + ZS_WRITE_REG(sc->sc_child[0], 2, sc->sc_child[0]->sc_creg[2]); + ZS_WRITE_REG(sc->sc_child[0], 9, sc->sc_child[0]->sc_creg[9]); if (zstty_cons != NULL) { DELAY(50000); @@ -347,23 +212,9 @@ SHUTDOWN_PRI_DEFAULT); return (0); - -error: - if (irqres != NULL) - bus_release_resource(dev, SYS_RES_IRQ, irqrid, irqres); - if (memres != NULL) - bus_release_resource(dev, SYS_RES_MEMORY, memrid, memres); - return (ENXIO); } -static int -zs_detach(device_t dev) -{ - - return (bus_generic_detach(dev)); -} - -static void +void zs_intr(void *v) { struct zs_softc *sc = v; @@ -378,14 +229,10 @@ */ needsoft = 0; rr3 = ZS_READ_REG(sc->sc_child[0], 3); - if ((rr3 & (ZSRR3_IP_A_RX | ZSRR3_IP_A_TX | ZSRR3_IP_A_STAT)) != 0) { - ZS_WRITE(sc->sc_child[0], ZS_CSR, ZSWR0_CLR_INTR); + if ((rr3 & (ZSRR3_IP_A_RX | ZSRR3_IP_A_TX | ZSRR3_IP_A_STAT)) != 0) needsoft |= zstty_intr(sc->sc_child[0], rr3 >> 3); - } - if ((rr3 & (ZSRR3_IP_B_RX | ZSRR3_IP_B_TX | ZSRR3_IP_B_STAT)) != 0) { - ZS_WRITE(sc->sc_child[1], ZS_CSR, ZSWR0_CLR_INTR); + if ((rr3 & (ZSRR3_IP_B_RX | ZSRR3_IP_B_TX | ZSRR3_IP_B_STAT)) != 0) needsoft |= zstty_intr(sc->sc_child[1], rr3); - } if (needsoft) swi_sched(sc->sc_softih, 0); } @@ -404,25 +251,13 @@ { } -static int +int zstty_probe(device_t dev) { - - if (zstty_keyboard(dev)) { - if ((device_get_unit(dev) & 1) == 0) - device_set_desc(dev, "keyboard"); - else - device_set_desc(dev, "mouse"); - } else { - if ((device_get_unit(dev) & 1) == 0) - device_set_desc(dev, "ttya"); - else - device_set_desc(dev, "ttyb"); - } return (0); } -static int +int zstty_attach(device_t dev) { struct zstty_softc *sc; @@ -437,24 +272,9 @@ sc = device_get_softc(dev); mtx_init(&sc->sc_mtx, "zstty", NULL, MTX_SPIN); sc->sc_dev = dev; - sc->sc_parent = device_get_softc(device_get_parent(dev)); - sc->sc_bt = sc->sc_parent->sc_bt; - sc->sc_channel = device_get_unit(dev) & 1; - sc->sc_brg_clk = ZS_CLOCK / ZS_CLOCK_DIV; sc->sc_iput = sc->sc_iget = sc->sc_ibuf; sc->sc_oget = sc->sc_obuf; - switch (sc->sc_channel) { - case 0: - bus_space_subregion(sc->sc_bt, sc->sc_parent->sc_bh, - ZS_CHAN_A, ZS_CHANLEN, &sc->sc_bh); - break; - case 1: - bus_space_subregion(sc->sc_bt, sc->sc_parent->sc_bh, - ZS_CHAN_B, ZS_CHANLEN, &sc->sc_bh); - break; - } - tp = ttymalloc(NULL); sc->sc_si = make_dev(&zstty_cdevsw, device_get_unit(dev), UID_ROOT, GID_WHEEL, 0600, "%s", device_get_desc(dev)); @@ -473,11 +293,9 @@ tp->t_ospeed = TTYDEF_SPEED; tp->t_ispeed = TTYDEF_SPEED; - bcopy(zs_init_reg, sc->sc_creg, 16); - bcopy(zs_init_reg, sc->sc_preg, 16); - if (zstty_console(dev, mode, sizeof(mode))) { ttychars(tp); + /* format: 9600,8,n,1,- */ if (sscanf(mode, "%d,%d,%c,%d,%c", &baud, &clen, &parity, &stop, &c) == 5) { tp->t_ospeed = baud; @@ -515,13 +333,6 @@ return (0); } -static int -zstty_detach(device_t dev) -{ - - return (bus_generic_detach(dev)); -} - /* * Note that the rr3 value is shifted so the channel a status bits are in the * channel b bit positions, which makes the bit positions uniform for both @@ -538,6 +349,8 @@ ZSTTY_LOCK(sc); + ZS_WRITE(sc, sc->sc_csr, ZSWR0_CLR_INTR); + brk = 0; needsoft = 0; if ((rr3 & ZSRR3_IP_B_RX) != 0) { @@ -548,10 +361,10 @@ * char destroys the status of this char. */ rr1 = ZS_READ_REG(sc, 1); - c = ZS_READ(sc, ZS_DATA); + c = ZS_READ(sc, sc->sc_data); if ((rr1 & (ZSRR1_FE | ZSRR1_DO | ZSRR1_PE)) != 0) - ZS_WRITE(sc, ZS_CSR, ZSWR0_RESET_ERRORS); + ZS_WRITE(sc, sc->sc_csr, ZSWR0_RESET_ERRORS); #if defined(DDB) && defined(ALT_BREAK_TO_DEBUGGER) if (sc->sc_console != 0) brk = db_alt_break(c, &sc->sc_alt_break_state); @@ -560,12 +373,12 @@ *sc->sc_iput++ = rr1; if (sc->sc_iput == sc->sc_ibuf + sizeof(sc->sc_ibuf)) sc->sc_iput = sc->sc_ibuf; - } while ((ZS_READ(sc, ZS_CSR) & ZSRR0_RX_READY) != 0); + } while ((ZS_READ(sc, sc->sc_csr) & ZSRR0_RX_READY) != 0); } if ((rr3 & ZSRR3_IP_B_STAT) != 0) { - rr0 = ZS_READ(sc, ZS_CSR); - ZS_WRITE(sc, ZS_CSR, ZSWR0_RESET_STATUS); + rr0 = ZS_READ(sc, sc->sc_csr); + ZS_WRITE(sc, sc->sc_csr, ZSWR0_RESET_STATUS); #if defined(DDB) && defined(BREAK_TO_DEBUGGER) if (sc->sc_console != 0 && (rr0 & ZSRR0_BREAK) != 0) brk = 1; @@ -582,7 +395,7 @@ zstty_load_regs(sc); } if (sc->sc_ocnt > 0) { - ZS_WRITE(sc, ZS_DATA, *sc->sc_oget++); + ZS_WRITE(sc, sc->sc_data, *sc->sc_oget++); sc->sc_ocnt--; } else { /* @@ -815,7 +628,7 @@ sc->sc_creg[1] = sc->sc_preg[1]; ZS_WRITE_REG(sc, 1, sc->sc_creg[1]); } - ZS_WRITE(sc, ZS_DATA, c); + ZS_WRITE(sc, sc->sc_data, c); ttwwakeup(tp); } @@ -928,8 +741,8 @@ sc->sc_preg[3] = wr3; sc->sc_preg[4] = wr4; sc->sc_preg[5] = wr5; - sc->sc_preg[12] = ospeed; - sc->sc_preg[13] = ospeed >> 8; + + zstty_set_speed(sc, ospeed); if (cflag & CRTSCTS) sc->sc_preg[15] |= ZSWR15_CTS_IE; @@ -951,15 +764,15 @@ uint8_t c; for (;;) { - rr0 = ZS_READ(sc, ZS_CSR); + rr0 = ZS_READ(sc, sc->sc_csr); if ((rr0 & ZSRR0_RX_READY) == 0) break; >>> TRUNCATED FOR MAIL (1000 lines) <<< To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe p4-projects" in the body of the messagehome | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200301090034.h090Ya0g026680>
