Skip site navigation (1)Skip section navigation (2)
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 message



home | help

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