Module Name:    src
Committed By:   martin
Date:           Sat Feb 22 12:39:05 UTC 2025

Modified Files:
        src/distrib/utils/embedded/conf [netbsd-10]: evbppc.conf
        src/sys/arch/evbppc/conf [netbsd-10]: WII
        src/sys/arch/evbppc/wii [netbsd-10]: pic_pi.c
        src/sys/arch/evbppc/wii/dev [netbsd-10]: bwai.c
        src/sys/arch/powerpc/oea [netbsd-10]: cpu_subr.c

Log Message:
Pull up following revision(s) (requested by jmcneill in ticket #1057):

        distrib/utils/embedded/conf/evbppc.conf: revision 1.4
        sys/arch/powerpc/oea/cpu_subr.c: revision 1.111
        sys/arch/evbppc/wii/pic_pi.c: revision 1.2
        sys/arch/evbppc/conf/WII: revision 1.9
        sys/arch/evbppc/wii/dev/bwai.c: revision 1.4

wii: Simplify Processor Interface pic code.

wii: Audio playback improvements.
Instead of resetting the byte counter for every block (which is racy),
increment the interrupt timing register by the exact byte count for
each block. Should do better at keeping things in sync.

powerpc: Identify Broadway CPU.
Use hex to report Broadway revision and ignore TAU as it does not exist
on this processor.

wii: Remove some options to save memory.

wii: Disable ntpd by default.
It takes up a lot of memory.


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.2 -r1.1.2.3 src/distrib/utils/embedded/conf/evbppc.conf
cvs rdiff -u -r1.4.2.6 -r1.4.2.7 src/sys/arch/evbppc/conf/WII
cvs rdiff -u -r1.1.2.2 -r1.1.2.3 src/sys/arch/evbppc/wii/pic_pi.c
cvs rdiff -u -r1.3.2.2 -r1.3.2.3 src/sys/arch/evbppc/wii/dev/bwai.c
cvs rdiff -u -r1.108.16.1 -r1.108.16.2 src/sys/arch/powerpc/oea/cpu_subr.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/utils/embedded/conf/evbppc.conf
diff -u src/distrib/utils/embedded/conf/evbppc.conf:1.1.2.2 src/distrib/utils/embedded/conf/evbppc.conf:1.1.2.3
--- src/distrib/utils/embedded/conf/evbppc.conf:1.1.2.2	Sat Feb  3 11:47:06 2024
+++ src/distrib/utils/embedded/conf/evbppc.conf	Sat Feb 22 12:39:04 2025
@@ -1,4 +1,4 @@
-# $NetBSD: evbppc.conf,v 1.1.2.2 2024/02/03 11:47:06 martin Exp $ */
+# $NetBSD: evbppc.conf,v 1.1.2.3 2025/02/22 12:39:04 martin Exp $ */
 # evbppc shared config
 #
 image=$HOME/${board}.img
@@ -150,8 +150,8 @@ hostname=${hostname:-${board}}
 savecore=NO
 sshd=YES
 dhcpcd=YES
-ntpd=YES
-ntpd_flags="-g"
+#ntpd=YES
+#ntpd_flags="-g"
 creds_msdos=YES
 creds_msdos_partition=/boot
 certctl_init=YES

Index: src/sys/arch/evbppc/conf/WII
diff -u src/sys/arch/evbppc/conf/WII:1.4.2.6 src/sys/arch/evbppc/conf/WII:1.4.2.7
--- src/sys/arch/evbppc/conf/WII:1.4.2.6	Sat Feb 22 11:47:16 2025
+++ src/sys/arch/evbppc/conf/WII	Sat Feb 22 12:39:05 2025
@@ -1,4 +1,4 @@
-#	$NetBSD: WII,v 1.4.2.6 2025/02/22 11:47:16 martin Exp $
+#	$NetBSD: WII,v 1.4.2.7 2025/02/22 12:39:05 martin Exp $
 #
 #	Nintendo Wii
 #
@@ -21,8 +21,8 @@ options 	SYSVMSG		# System V message que
 options 	SYSVSEM		# System V semaphores
 options 	SYSVSHM		# System V shared memory
 
-options 	USERCONF	# userconf(4) support
-#options PIPE_SOCKETPAIR	# smaller, but slower pipe(2)
+#options 	USERCONF	# userconf(4) support
+#options	PIPE_SOCKETPAIR	# smaller, but slower pipe(2)
 #options 	SYSCTL_INCLUDE_DESCR	# Include sysctl descriptions in kernel
 
 # Alternate buffer queue strategies for better responsiveness under high
@@ -34,7 +34,7 @@ options 	BUFQ_PRIOCSCAN
 options 	DIAGNOSTIC	# cheap kernel consistency checks
 #options 	DEBUG		# expensive debugging checks/support
 options 	DDB		# in-kernel debugger
-options 	DDB_HISTORY_SIZE=512	# enable history editing in DDB
+#options 	DDB_HISTORY_SIZE=100	# enable history editing in DDB
 #options 	TRAP_PANICWAIT
 makeoptions COPY_SYMTAB=1	# size for embedded symbol table
 
@@ -52,8 +52,8 @@ options 	DKWEDGE_METHOD_GPT	# Supports G
 
 # File systems
 file-system 	FFS		# UFS
-file-system 	EXT2FS		# second extended file system (linux)
-file-system 	LFS		# log-structured file system
+#file-system 	EXT2FS		# second extended file system (linux)
+#file-system 	LFS		# log-structured file system
 file-system 	MFS		# memory file system
 file-system 	NFS		# Network File System client
 file-system 	CD9660		# ISO 9660 + Rock Ridge file system
@@ -71,7 +71,7 @@ file-system	PTYFS		# /dev/pts/N support
 
 # File system options
 options 	FFS_EI		# FFS Endian Independent support
-#options 	FFS_NO_SNAPSHOT	# No FFS snapshot support
+options 	FFS_NO_SNAPSHOT	# No FFS snapshot support
 #options 	QUOTA		# legacy UFS quotas
 #options 	QUOTA2		# new, in-filesystem UFS quotas
 #options 	UFS_DIRHASH	# UFS Large Directory Hashing
@@ -87,13 +87,13 @@ options 	NFS_BOOT_DHCP,NFS_BOOT_BOOTPARA
 options 	NFS_BOOT_RWSIZE=1024
 
 # Networking options
-options 	GATEWAY		# packet forwarding
+#options 	GATEWAY		# packet forwarding
 options 	INET		# IP + ICMP + TCP + UDP
 options 	INET6		# IPV6
 options 	IPSEC		# IP security
 #options 	IPSEC_DEBUG	# debug for IP security
-options 	MROUTING	# IP multicast routing
-options 	PIM		# Protocol Independent Multicast
+#options 	MROUTING	# IP multicast routing
+#options 	PIM		# Protocol Independent Multicast
 #options 	NETATALK	# AppleTalk networking protocols
 #options 	PPP_BSDCOMP	# BSD-Compress compression support for PPP
 #options 	PPP_DEFLATE	# Deflate compression support for PPP
@@ -102,9 +102,9 @@ options 	PIM		# Protocol Independent Mul
 
 # These options enable verbose messages for several subsystems.
 # Warning, these may compile large string tables into the kernel!
-options 	MIIVERBOSE	# verbose PHY autoconfig messages
+#options 	MIIVERBOSE	# verbose PHY autoconfig messages
 #options 	SCSIVERBOSE	# human readable SCSI error messages
-options 	USBVERBOSE	# verbose USB device autoconfig messages
+#options 	USBVERBOSE	# verbose USB device autoconfig messages
 
 # Kernel root file system and dump configuration.
 config		netbsd	root on ? type ?
@@ -192,7 +192,7 @@ pseudo-device	vnd			# disk-like interfac
 #pseudo-device	md			# memory disk device
 pseudo-device	loop			# network loopback
 pseudo-device	bpfilter		# packet filter
-pseudo-device 	carp			# Common Address Redundancy Protocol
+#pseudo-device 	carp			# Common Address Redundancy Protocol
 pseudo-device	npf			# NPF packet filter
 pseudo-device	ppp			# Point-to-Point Protocol
 pseudo-device	sl			# Serial Line IP
@@ -212,5 +212,3 @@ pseudo-device	ksyms
 pseudo-device	wsmux			# mouse & keyboard multiplexor
 pseudo-device	wsfont
 options         FONT_BOLD8x16
-
-include "dev/veriexec.config"

Index: src/sys/arch/evbppc/wii/pic_pi.c
diff -u src/sys/arch/evbppc/wii/pic_pi.c:1.1.2.2 src/sys/arch/evbppc/wii/pic_pi.c:1.1.2.3
--- src/sys/arch/evbppc/wii/pic_pi.c:1.1.2.2	Sat Feb  3 11:47:07 2024
+++ src/sys/arch/evbppc/wii/pic_pi.c	Sat Feb 22 12:39:04 2025
@@ -1,4 +1,4 @@
-/* $NetBSD: pic_pi.c,v 1.1.2.2 2024/02/03 11:47:07 martin Exp $ */
+/* $NetBSD: pic_pi.c,v 1.1.2.3 2025/02/22 12:39:04 martin Exp $ */
 
 /*-
  * Copyright (c) 2024 Jared McNeill <jmcne...@invisible.ca>
@@ -33,7 +33,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: pic_pi.c,v 1.1.2.2 2024/02/03 11:47:07 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pic_pi.c,v 1.1.2.3 2025/02/22 12:39:04 martin Exp $");
 
 #include <sys/param.h>
 #include <sys/intr.h>
@@ -45,9 +45,6 @@ __KERNEL_RCSID(0, "$NetBSD: pic_pi.c,v 1
 #include <arch/powerpc/pic/picvar.h>
 #include <machine/wii.h>
 
-static uint32_t pic_irqmask;
-static uint32_t pic_actmask;
-
 void pi_init_intr(void);
 
 #define WR4(reg, val)	out32(reg, val)
@@ -56,32 +53,27 @@ void pi_init_intr(void);
 static void
 pi_enable_irq(struct pic_ops *pic, int irq, int type)
 {
-	pic_irqmask |= __BIT(irq);
-	WR4(PI_INTMR, pic_irqmask & ~pic_actmask);
+	WR4(PI_INTMR, RD4(PI_INTMR) | __BIT(irq));
 }
 
 static void
 pi_disable_irq(struct pic_ops *pic, int irq)
 {
-	pic_irqmask &= ~__BIT(irq);
-	WR4(PI_INTMR, pic_irqmask & ~pic_actmask);
+	WR4(PI_INTMR, RD4(PI_INTMR) & ~__BIT(irq));
 }
 
 static int
 pi_get_irq(struct pic_ops *pic, int mode)
 {
-	uint32_t raw, pend;
+	uint32_t pend;
 	int irq;
 
-	raw = RD4(PI_INTSR);
-	pend = raw & pic_irqmask;
+	pend = RD4(PI_INTSR) & RD4(PI_INTMR);
 	if (pend == 0) {
 		return 255;
 	}
 	irq = ffs32(pend) - 1;
-
-	pic_actmask |= __BIT(irq);
-	WR4(PI_INTMR, pic_irqmask & ~pic_actmask);
+	pend &= ~__BIT(irq);
 
 	return irq;
 }
@@ -89,8 +81,6 @@ pi_get_irq(struct pic_ops *pic, int mode
 static void
 pi_ack_irq(struct pic_ops *pic, int irq)
 {
-	pic_actmask &= ~__BIT(irq);
-	WR4(PI_INTMR, pic_irqmask & ~pic_actmask);
 	WR4(PI_INTSR, __BIT(irq));
 }
 
@@ -109,9 +99,6 @@ static struct pic_ops pic = {
 void
 pi_init_intr(void)
 {
-	pic_irqmask = 0;
-	pic_actmask = 0;
-
 	/* Mask and clear all interrupts. */
 	WR4(PI_INTMR, 0);
 	WR4(PI_INTSR, ~0U);

Index: src/sys/arch/evbppc/wii/dev/bwai.c
diff -u src/sys/arch/evbppc/wii/dev/bwai.c:1.3.2.2 src/sys/arch/evbppc/wii/dev/bwai.c:1.3.2.3
--- src/sys/arch/evbppc/wii/dev/bwai.c:1.3.2.2	Sat Feb  3 11:47:05 2024
+++ src/sys/arch/evbppc/wii/dev/bwai.c	Sat Feb 22 12:39:05 2025
@@ -1,4 +1,4 @@
-/* $NetBSD: bwai.c,v 1.3.2.2 2024/02/03 11:47:05 martin Exp $ */
+/* $NetBSD: bwai.c,v 1.3.2.3 2025/02/22 12:39:05 martin Exp $ */
 
 /*-
  * Copyright (c) 2024 Jared McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bwai.c,v 1.3.2.2 2024/02/03 11:47:05 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bwai.c,v 1.3.2.3 2025/02/22 12:39:05 martin Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -65,6 +65,8 @@ struct bwai_softc {
 
 	void			(*sc_intr)(void *);
 	void			*sc_intrarg;
+	uint32_t		sc_intrnext;
+	uint32_t		sc_intrstep;
 
 	kmutex_t		*sc_intr_lock;
 };
@@ -92,7 +94,9 @@ bwai_intr(void *priv)
 
 	val = RD4(sc, AI_CONTROL);
 	if ((val & AI_CONTROL_AIINT) != 0) {
-		WR4(sc, AI_CONTROL, val | AI_CONTROL_SCRESET);
+		sc->sc_intrnext += sc->sc_intrstep;
+		WR4(sc, AI_AIIT, sc->sc_intrnext);
+		WR4(sc, AI_CONTROL, val);
 
 		mutex_enter(sc->sc_intr_lock);
 		if (sc->sc_intr) {
@@ -217,7 +221,9 @@ bwai_trigger_output(void *priv, void *st
 		WR4(sc, AI_CONTROL, 0);
 	}
 
-	WR4(sc, AI_AIIT, blksize / 4);
+	sc->sc_intrstep = blksize / 4;
+	sc->sc_intrnext = sc->sc_intrstep;
+	WR4(sc, AI_AIIT, sc->sc_intrnext);
 
 	val = AI_CONTROL_SCRESET |
 	      AI_CONTROL_AIINT |

Index: src/sys/arch/powerpc/oea/cpu_subr.c
diff -u src/sys/arch/powerpc/oea/cpu_subr.c:1.108.16.1 src/sys/arch/powerpc/oea/cpu_subr.c:1.108.16.2
--- src/sys/arch/powerpc/oea/cpu_subr.c:1.108.16.1	Sat Feb  3 11:47:06 2024
+++ src/sys/arch/powerpc/oea/cpu_subr.c	Sat Feb 22 12:39:04 2025
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu_subr.c,v 1.108.16.1 2024/02/03 11:47:06 martin Exp $	*/
+/*	$NetBSD: cpu_subr.c,v 1.108.16.2 2025/02/22 12:39:04 martin Exp $	*/
 
 /*-
  * Copyright (c) 2001 Matt Thomas.
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cpu_subr.c,v 1.108.16.1 2024/02/03 11:47:06 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpu_subr.c,v 1.108.16.2 2025/02/22 12:39:04 martin Exp $");
 
 #include "sysmon_envsys.h"
 
@@ -932,6 +932,11 @@ cpu_identify(char *str, size_t len)
 	if (rev == MPC750 && pvr == 15) {
 		revfmt = REVFMT_HEX;
 	}
+ 	if (vers == MPC750 && (pvr & 0xf000) == 0x7000 &&
+			      (pvr & 0x0f00) >= 0x0100) {
+		/* IBM Broadway */
+		revfmt = REVFMT_HEX;
+	}
 
 	if (cp->name[0] != '\0') {
 		n = snprintf(str, len, "%s (Revision ", cp->name);
@@ -1294,6 +1299,16 @@ cpu_tau_setup(struct cpu_info *ci)
 {
 	struct sysmon_envsys *sme;
 	int error, therm_delay;
+	u_int pvr, vers;
+
+	pvr = mfpvr();
+	vers = pvr >> 16;
+
+ 	if (vers == MPC750 && (pvr & 0xf000) == 0x7000 &&
+			      (pvr & 0x0f00) >= 0x0100) {
+		/* Broadway has dummy TAU registers, just ignore it. */
+		return;
+	}
 
 	mtspr(SPR_THRM1, SPR_THRM_VALID);
 	mtspr(SPR_THRM2, 0);

Reply via email to