Module Name: src
Committed By: thorpej
Date: Tue Apr 27 14:48:29 UTC 2021
Modified Files:
src/sys/arch/amiga/amiga: autoconf.c device.h
src/sys/arch/amiga/dev: grf.c grf_cc.c grf_cl.c grf_cv.c grf_cv3d.c
grf_et.c grf_rh.c grf_rt.c grf_ul.c zbus.c
src/sys/arch/amigappc/amigappc: autoconf.c
src/sys/arch/atari/atari: autoconf.c device.h
src/sys/arch/atari/dev: grf.c ite_cc.c ite_et.c
src/sys/kern: subr_autoconf.c
src/sys/sys: device.h
Log Message:
The Amiga and Atari ports abuse some autoconfiguration internals as part
of their early console bring-up, so we need to expose some of the new
internals to them and adapt the call sites.
To generate a diff of this commit:
cvs rdiff -u -r1.118 -r1.119 src/sys/arch/amiga/amiga/autoconf.c
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/amiga/amiga/device.h
cvs rdiff -u -r1.65 -r1.66 src/sys/arch/amiga/dev/grf.c
cvs rdiff -u -r1.41 -r1.42 src/sys/arch/amiga/dev/grf_cc.c
cvs rdiff -u -r1.50 -r1.51 src/sys/arch/amiga/dev/grf_cl.c
cvs rdiff -u -r1.59 -r1.60 src/sys/arch/amiga/dev/grf_cv.c
cvs rdiff -u -r1.34 -r1.35 src/sys/arch/amiga/dev/grf_cv3d.c
cvs rdiff -u -r1.36 -r1.37 src/sys/arch/amiga/dev/grf_et.c
cvs rdiff -u -r1.57 -r1.58 src/sys/arch/amiga/dev/grf_rh.c
cvs rdiff -u -r1.58 -r1.59 src/sys/arch/amiga/dev/grf_rt.c
cvs rdiff -u -r1.51 -r1.52 src/sys/arch/amiga/dev/grf_ul.c
cvs rdiff -u -r1.75 -r1.76 src/sys/arch/amiga/dev/zbus.c
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/amigappc/amigappc/autoconf.c
cvs rdiff -u -r1.69 -r1.70 src/sys/arch/atari/atari/autoconf.c
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/atari/atari/device.h
cvs rdiff -u -r1.51 -r1.52 src/sys/arch/atari/dev/grf.c
cvs rdiff -u -r1.41 -r1.42 src/sys/arch/atari/dev/ite_cc.c
cvs rdiff -u -r1.32 -r1.33 src/sys/arch/atari/dev/ite_et.c
cvs rdiff -u -r1.278 -r1.279 src/sys/kern/subr_autoconf.c
cvs rdiff -u -r1.168 -r1.169 src/sys/sys/device.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/amiga/amiga/autoconf.c
diff -u src/sys/arch/amiga/amiga/autoconf.c:1.118 src/sys/arch/amiga/amiga/autoconf.c:1.119
--- src/sys/arch/amiga/amiga/autoconf.c:1.118 Sat Apr 24 23:36:24 2021
+++ src/sys/arch/amiga/amiga/autoconf.c Tue Apr 27 14:48:28 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: autoconf.c,v 1.118 2021/04/24 23:36:24 thorpej Exp $ */
+/* $NetBSD: autoconf.c,v 1.119 2021/04/27 14:48:28 thorpej Exp $ */
/*
* Copyright (c) 1994 Christian E. Hopps
@@ -30,8 +30,10 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#define __SUBR_AUTOCONF_PRIVATE /* XXX amiga_config_found() */
+
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: autoconf.c,v 1.118 2021/04/24 23:36:24 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: autoconf.c,v 1.119 2021/04/27 14:48:28 thorpej Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -162,14 +164,21 @@ matchname(const char *fp, const char *sp
* by checking for NULL.
*/
int
-amiga_config_found(cfdata_t pcfp, device_t parent, void *aux, cfprint_t pfn)
+amiga_config_found(cfdata_t pcfp, device_t parent, void *aux, cfprint_t pfn,
+ cfarg_t tag, ...)
{
struct device temp;
cfdata_t cf;
const struct cfattach *ca;
+ int rv = 0;
+ va_list ap;
+
+ va_start(ap, tag);
- if (amiga_realconfig)
- return(config_found(parent, aux, pfn, CFARG_EOL) != NULL);
+ if (amiga_realconfig) {
+ rv = config_vfound(parent, aux, pfn, tag, ap) != NULL;
+ goto out;
+ }
if (parent == NULL) {
memset(&temp, 0, sizeof temp);
@@ -180,16 +189,17 @@ amiga_config_found(cfdata_t pcfp, device
parent->dv_cfdriver = config_cfdriver_lookup(pcfp->cf_name);
parent->dv_unit = pcfp->cf_unit;
- if ((cf = config_search(parent, aux, CFARG_EOL)) != NULL) {
+ if ((cf = config_vsearch(parent, aux, tag, ap)) != NULL) {
ca = config_cfattach_lookup(cf->cf_name, cf->cf_atname);
if (ca != NULL) {
(*ca->ca_attach)(parent, NULL, aux);
- parent->dv_cfdata = NULL;
- return(1);
+ rv = 1;
}
}
parent->dv_cfdata = NULL;
- return(0);
+ out:
+ va_end(ap);
+ return rv;
}
/*
@@ -215,7 +225,7 @@ config_console(void)
/*
* delay clock calibration.
*/
- amiga_config_found(cf, NULL, __UNCONST("clock"), NULL);
+ amiga_config_found(cf, NULL, __UNCONST("clock"), NULL, CFARG_EOL);
/*
* internal grf.
@@ -223,13 +233,14 @@ config_console(void)
#ifdef DRACO
if (!(is_draco()))
#endif
- amiga_config_found(cf, NULL, __UNCONST("grfcc"), NULL);
+ amiga_config_found(cf, NULL, __UNCONST("grfcc"), NULL,
+ CFARG_EOL);
/*
* zbus knows when its not for real and will
* only configure the appropriate hardware
*/
- amiga_config_found(cf, NULL, __UNCONST("zbus"), NULL);
+ amiga_config_found(cf, NULL, __UNCONST("zbus"), NULL, CFARG_EOL);
}
/*
Index: src/sys/arch/amiga/amiga/device.h
diff -u src/sys/arch/amiga/amiga/device.h:1.14 src/sys/arch/amiga/amiga/device.h:1.15
--- src/sys/arch/amiga/amiga/device.h:1.14 Sat Oct 27 17:17:26 2012
+++ src/sys/arch/amiga/amiga/device.h Tue Apr 27 14:48:28 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: device.h,v 1.14 2012/10/27 17:17:26 chs Exp $ */
+/* $NetBSD: device.h,v 1.15 2021/04/27 14:48:28 thorpej Exp $ */
/*
* Copyright (c) 1994 Christian E. Hopps
@@ -38,7 +38,7 @@
* passed in some cases and the devices will deal with it)
*/
void config_console(void);
-int amiga_config_found(cfdata_t, device_t, void *, cfprint_t);
+int amiga_config_found(cfdata_t, device_t, void *, cfprint_t, cfarg_t, ...);
int simple_devprint(void *, const char *);
int matchname(const char *, const char *);
/*
Index: src/sys/arch/amiga/dev/grf.c
diff -u src/sys/arch/amiga/dev/grf.c:1.65 src/sys/arch/amiga/dev/grf.c:1.66
--- src/sys/arch/amiga/dev/grf.c:1.65 Sat Apr 24 23:36:24 2021
+++ src/sys/arch/amiga/dev/grf.c Tue Apr 27 14:48:28 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: grf.c,v 1.65 2021/04/24 23:36:24 thorpej Exp $ */
+/* $NetBSD: grf.c,v 1.66 2021/04/27 14:48:28 thorpej Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: grf.c,v 1.65 2021/04/24 23:36:24 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: grf.c,v 1.66 2021/04/27 14:48:28 thorpej Exp $");
/*
* Graphics display driver for the Amiga
@@ -213,7 +213,9 @@ grfattach(device_t parent, device_t self
wa.scrdata = gp->g_scrlist;
wa.accessops = gp->g_accessops;
wa.accesscookie = &gp->g_vd;
- config_found(self, &wa, wsemuldisplaydevprint, CFARG_EOL);
+ config_found(self, &wa, wsemuldisplaydevprint,
+ CFARG_IATTR, "wsemuldisplaydev",
+ CFARG_EOL);
#endif /* NWSDISPLAY > 0 */
}
@@ -221,7 +223,9 @@ grfattach(device_t parent, device_t self
/*
* try and attach an ite
*/
- amiga_config_found(cfdata, self, gp, grfprint);
+ amiga_config_found(cfdata, self, gp, grfprint,
+ CFARG_IATTR, "grf",
+ CFARG_EOL);
#endif
}
Index: src/sys/arch/amiga/dev/grf_cc.c
diff -u src/sys/arch/amiga/dev/grf_cc.c:1.41 src/sys/arch/amiga/dev/grf_cc.c:1.42
--- src/sys/arch/amiga/dev/grf_cc.c:1.41 Sat Oct 27 17:17:28 2012
+++ src/sys/arch/amiga/dev/grf_cc.c Tue Apr 27 14:48:28 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: grf_cc.c,v 1.41 2012/10/27 17:17:28 chs Exp $ */
+/* $NetBSD: grf_cc.c,v 1.42 2021/04/27 14:48:28 thorpej Exp $ */
/*
* Copyright (c) 1994 Christian E. Hopps
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: grf_cc.c,v 1.41 2012/10/27 17:17:28 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: grf_cc.c,v 1.42 2021/04/27 14:48:28 thorpej Exp $");
#include "grfcc.h"
#include "ite.h"
@@ -151,7 +151,7 @@ grfccattach(device_t parent, device_t se
/*
* attach grf
*/
- amiga_config_found(cfdata, gp->g_device, gp, grfccprint);
+ amiga_config_found(cfdata, gp->g_device, gp, grfccprint, CFARG_EOL);
}
int
Index: src/sys/arch/amiga/dev/grf_cl.c
diff -u src/sys/arch/amiga/dev/grf_cl.c:1.50 src/sys/arch/amiga/dev/grf_cl.c:1.51
--- src/sys/arch/amiga/dev/grf_cl.c:1.50 Mon Nov 16 21:25:34 2015
+++ src/sys/arch/amiga/dev/grf_cl.c Tue Apr 27 14:48:28 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: grf_cl.c,v 1.50 2015/11/16 21:25:34 phx Exp $ */
+/* $NetBSD: grf_cl.c,v 1.51 2021/04/27 14:48:28 thorpej Exp $ */
/*
* Copyright (c) 1997 Klaus Burkert
@@ -36,7 +36,7 @@
#include "opt_amigacons.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: grf_cl.c,v 1.50 2015/11/16 21:25:34 phx Exp $");
+__KERNEL_RCSID(0, "$NetBSD: grf_cl.c,v 1.51 2021/04/27 14:48:28 thorpej Exp $");
#include "grfcl.h"
#include "ite.h"
@@ -455,7 +455,8 @@ grfclattach(device_t parent, device_t se
/*
* attach grf (once)
*/
- if (amiga_config_found(cfdata, gp->g_device, gp, grfclprint)) {
+ if (amiga_config_found(cfdata, gp->g_device, gp, grfclprint,
+ CFARG_EOL)) {
attachflag = 1;
printf("grfcl: %dMB ", cl_fbsize / 0x100000);
switch (cltype) {
Index: src/sys/arch/amiga/dev/grf_cv.c
diff -u src/sys/arch/amiga/dev/grf_cv.c:1.59 src/sys/arch/amiga/dev/grf_cv.c:1.60
--- src/sys/arch/amiga/dev/grf_cv.c:1.59 Mon Nov 16 21:24:06 2015
+++ src/sys/arch/amiga/dev/grf_cv.c Tue Apr 27 14:48:28 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: grf_cv.c,v 1.59 2015/11/16 21:24:06 phx Exp $ */
+/* $NetBSD: grf_cv.c,v 1.60 2021/04/27 14:48:28 thorpej Exp $ */
/*
* Copyright (c) 1995 Michael Teske
@@ -33,7 +33,7 @@
#include "opt_amigacons.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: grf_cv.c,v 1.59 2015/11/16 21:24:06 phx Exp $");
+__KERNEL_RCSID(0, "$NetBSD: grf_cv.c,v 1.60 2021/04/27 14:48:28 thorpej Exp $");
#include "grfcv.h"
#include "ite.h"
@@ -554,7 +554,8 @@ grfcvattach(device_t parent, device_t se
/*
* attach grf
*/
- if (amiga_config_found(cfdata, gp->g_device, gp, grfcvprint)) {
+ if (amiga_config_found(cfdata, gp->g_device, gp, grfcvprint,
+ CFARG_EOL)) {
if (self != NULL)
printf("grfcv: CyberVision64 with %dMB being used\n",
cv_fbsize/0x100000);
Index: src/sys/arch/amiga/dev/grf_cv3d.c
diff -u src/sys/arch/amiga/dev/grf_cv3d.c:1.34 src/sys/arch/amiga/dev/grf_cv3d.c:1.35
--- src/sys/arch/amiga/dev/grf_cv3d.c:1.34 Fri Jun 17 07:41:56 2016
+++ src/sys/arch/amiga/dev/grf_cv3d.c Tue Apr 27 14:48:28 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: grf_cv3d.c,v 1.34 2016/06/17 07:41:56 phx Exp $ */
+/* $NetBSD: grf_cv3d.c,v 1.35 2021/04/27 14:48:28 thorpej Exp $ */
/*
* Copyright (c) 1995 Michael Teske
@@ -33,7 +33,7 @@
#include "opt_amigacons.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: grf_cv3d.c,v 1.34 2016/06/17 07:41:56 phx Exp $");
+__KERNEL_RCSID(0, "$NetBSD: grf_cv3d.c,v 1.35 2021/04/27 14:48:28 thorpej Exp $");
#include "grfcv3d.h"
#include "ite.h"
@@ -504,7 +504,8 @@ grfcv3dattach(device_t parent, device_t
/*
* attach grf
*/
- if (amiga_config_found(cfdata, gp->g_device, gp, grfcv3dprint)) {
+ if (amiga_config_found(cfdata, gp->g_device, gp, grfcv3dprint,
+ CFARG_EOL)) {
if (self != NULL)
printf("%s: CyberVision64/3D with %dMB being used\n",
device_xname(self), cv3d_fbsize / 0x100000);
Index: src/sys/arch/amiga/dev/grf_et.c
diff -u src/sys/arch/amiga/dev/grf_et.c:1.36 src/sys/arch/amiga/dev/grf_et.c:1.37
--- src/sys/arch/amiga/dev/grf_et.c:1.36 Mon Mar 5 04:23:00 2018
+++ src/sys/arch/amiga/dev/grf_et.c Tue Apr 27 14:48:28 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: grf_et.c,v 1.36 2018/03/05 04:23:00 rin Exp $ */
+/* $NetBSD: grf_et.c,v 1.37 2021/04/27 14:48:28 thorpej Exp $ */
/*
* Copyright (c) 1997 Klaus Burkert
@@ -37,7 +37,7 @@
#include "opt_amigacons.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: grf_et.c,v 1.36 2018/03/05 04:23:00 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: grf_et.c,v 1.37 2021/04/27 14:48:28 thorpej Exp $");
#include "grfet.h"
#include "ite.h"
@@ -387,7 +387,8 @@ grfetattach(device_t parent, device_t se
/*
* attach grf (once)
*/
- if (amiga_config_found(cfdata, gp->g_device, gp, grfetprint)) {
+ if (amiga_config_found(cfdata, gp->g_device, gp, grfetprint,
+ CFARG_EOL)) {
attachflag = 1;
printf("grfet: %dMB ", et_fbsize / 0x100000);
switch (ettype) {
Index: src/sys/arch/amiga/dev/grf_rh.c
diff -u src/sys/arch/amiga/dev/grf_rh.c:1.57 src/sys/arch/amiga/dev/grf_rh.c:1.58
--- src/sys/arch/amiga/dev/grf_rh.c:1.57 Wed Jan 22 00:25:16 2014
+++ src/sys/arch/amiga/dev/grf_rh.c Tue Apr 27 14:48:28 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: grf_rh.c,v 1.57 2014/01/22 00:25:16 christos Exp $ */
+/* $NetBSD: grf_rh.c,v 1.58 2021/04/27 14:48:28 thorpej Exp $ */
/*
* Copyright (c) 1994 Markus Wild
@@ -34,7 +34,7 @@
#include "opt_retina.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: grf_rh.c,v 1.57 2014/01/22 00:25:16 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: grf_rh.c,v 1.58 2021/04/27 14:48:28 thorpej Exp $");
#include "grfrh.h"
#include "ite.h"
@@ -1617,7 +1617,7 @@ grfrhattach(device_t parent, device_t se
/*
* attach grf
*/
- amiga_config_found(cfdata, gp->g_device, gp, grfrhprint);
+ amiga_config_found(cfdata, gp->g_device, gp, grfrhprint, CFARG_EOL);
}
int
Index: src/sys/arch/amiga/dev/grf_rt.c
diff -u src/sys/arch/amiga/dev/grf_rt.c:1.58 src/sys/arch/amiga/dev/grf_rt.c:1.59
--- src/sys/arch/amiga/dev/grf_rt.c:1.58 Sat Oct 18 08:33:24 2014
+++ src/sys/arch/amiga/dev/grf_rt.c Tue Apr 27 14:48:28 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: grf_rt.c,v 1.58 2014/10/18 08:33:24 snj Exp $ */
+/* $NetBSD: grf_rt.c,v 1.59 2021/04/27 14:48:28 thorpej Exp $ */
/*
* Copyright (c) 1993 Markus Wild
@@ -33,7 +33,7 @@
#include "opt_amigacons.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: grf_rt.c,v 1.58 2014/10/18 08:33:24 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: grf_rt.c,v 1.59 2021/04/27 14:48:28 thorpej Exp $");
#include "grfrt.h"
#include "ite.h"
@@ -881,7 +881,7 @@ grfrtattach(device_t parent, device_t se
/*
* attach grf
*/
- amiga_config_found(cfdata, gp->g_device, gp, grfrtprint);
+ amiga_config_found(cfdata, gp->g_device, gp, grfrtprint, CFARG_EOL);
}
int
Index: src/sys/arch/amiga/dev/grf_ul.c
diff -u src/sys/arch/amiga/dev/grf_ul.c:1.51 src/sys/arch/amiga/dev/grf_ul.c:1.52
--- src/sys/arch/amiga/dev/grf_ul.c:1.51 Thu Nov 3 22:08:31 2016
+++ src/sys/arch/amiga/dev/grf_ul.c Tue Apr 27 14:48:28 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: grf_ul.c,v 1.51 2016/11/03 22:08:31 kamil Exp $ */
+/* $NetBSD: grf_ul.c,v 1.52 2021/04/27 14:48:28 thorpej Exp $ */
#define UL_DEBUG
/*-
@@ -33,7 +33,7 @@
#include "opt_amigacons.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: grf_ul.c,v 1.51 2016/11/03 22:08:31 kamil Exp $");
+__KERNEL_RCSID(0, "$NetBSD: grf_ul.c,v 1.52 2021/04/27 14:48:28 thorpej Exp $");
#include "grful.h"
#include "ite.h"
@@ -554,7 +554,7 @@ grfulattach(device_t parent, device_t se
/*
* attach grf
*/
- amiga_config_found(cfdata, gp->g_device, gp, grfulprint);
+ amiga_config_found(cfdata, gp->g_device, gp, grfulprint, CFARG_EOL);
}
int
Index: src/sys/arch/amiga/dev/zbus.c
diff -u src/sys/arch/amiga/dev/zbus.c:1.75 src/sys/arch/amiga/dev/zbus.c:1.76
--- src/sys/arch/amiga/dev/zbus.c:1.75 Wed Oct 4 09:44:09 2017
+++ src/sys/arch/amiga/dev/zbus.c Tue Apr 27 14:48:28 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: zbus.c,v 1.75 2017/10/04 09:44:09 rkujawa Exp $ */
+/* $NetBSD: zbus.c,v 1.76 2021/04/27 14:48:28 thorpej Exp $ */
/*
* Copyright (c) 1994 Christian E. Hopps
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: zbus.c,v 1.75 2017/10/04 09:44:09 rkujawa Exp $");
+__KERNEL_RCSID(0, "$NetBSD: zbus.c,v 1.76 2021/04/27 14:48:28 thorpej Exp $");
#include <sys/param.h>
#include <sys/device.h>
@@ -370,7 +370,8 @@ zbusattach(device_t parent, device_t sel
if (amiga_realconfig == 0)
pcp->vaddr = za.va;
}
- amiga_config_found(early_cfdata, self, &za, zbusprint);
+ amiga_config_found(early_cfdata, self, &za, zbusprint,
+ CFARG_EOL);
}
}
Index: src/sys/arch/amigappc/amigappc/autoconf.c
diff -u src/sys/arch/amigappc/amigappc/autoconf.c:1.7 src/sys/arch/amigappc/amigappc/autoconf.c:1.8
--- src/sys/arch/amigappc/amigappc/autoconf.c:1.7 Sat Apr 24 23:36:25 2021
+++ src/sys/arch/amigappc/amigappc/autoconf.c Tue Apr 27 14:48:28 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: autoconf.c,v 1.7 2021/04/24 23:36:25 thorpej Exp $ */
+/* $NetBSD: autoconf.c,v 1.8 2021/04/27 14:48:28 thorpej Exp $ */
/*
* Copyright (c) 1994 Christian E. Hopps
@@ -30,8 +30,10 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#define __SUBR_AUTOCONF_PRIVATE /* XXX amiga_config_found() */
+
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: autoconf.c,v 1.7 2021/04/24 23:36:25 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: autoconf.c,v 1.8 2021/04/27 14:48:28 thorpej Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -122,14 +124,21 @@ matchname(const char *fp, const char *sp
* by checking for NULL.
*/
int
-amiga_config_found(cfdata_t pcfp, device_t parent, void *aux, cfprint_t pfn)
+amiga_config_found(cfdata_t pcfp, device_t parent, void *aux, cfprint_t pfn,
+ cfarg_t tag, ...)
{
struct device temp;
cfdata_t cf;
const struct cfattach *ca;
+ int rv = 0;
+ va_list ap;
+
+ va_start(ap, tag);
- if (amiga_realconfig)
- return config_found(parent, aux, pfn, CFARG_EOL) != NULL;
+ if (amiga_realconfig) {
+ rv = config_vfound(parent, aux, pfn, tag, ap) != NULL;
+ goto out;
+ }
if (parent == NULL) {
memset(&temp, 0, sizeof temp);
@@ -140,16 +149,17 @@ amiga_config_found(cfdata_t pcfp, device
parent->dv_cfdriver = config_cfdriver_lookup(pcfp->cf_name);
parent->dv_unit = pcfp->cf_unit;
- if ((cf = config_search(parent, aux, CFARG_EOL)) != NULL) {
+ if ((cf = config_vsearch(parent, aux, tag, ap)) != NULL) {
ca = config_cfattach_lookup(cf->cf_name, cf->cf_atname);
if (ca != NULL) {
(*ca->ca_attach)(parent, NULL, aux);
- parent->dv_cfdata = NULL;
- return 1;
+ rv = 1;
}
}
parent->dv_cfdata = NULL;
- return 0;
+ out:
+ va_end(ap);
+ return rv;
}
/*
@@ -174,13 +184,13 @@ config_console(void)
/*
* internal grf.
*/
- amiga_config_found(cf, NULL, __UNCONST("grfcc"), NULL);
+ amiga_config_found(cf, NULL, __UNCONST("grfcc"), NULL, CFARG_EOL);
/*
* zbus knows when its not for real and will
* only configure the appropriate hardware
*/
- amiga_config_found(cf, NULL, __UNCONST("zbus"), NULL);
+ amiga_config_found(cf, NULL, __UNCONST("zbus"), NULL, CFARG_EOL);
}
/*
Index: src/sys/arch/atari/atari/autoconf.c
diff -u src/sys/arch/atari/atari/autoconf.c:1.69 src/sys/arch/atari/atari/autoconf.c:1.70
--- src/sys/arch/atari/atari/autoconf.c:1.69 Sat Apr 24 23:36:29 2021
+++ src/sys/arch/atari/atari/autoconf.c Tue Apr 27 14:48:29 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: autoconf.c,v 1.69 2021/04/24 23:36:29 thorpej Exp $ */
+/* $NetBSD: autoconf.c,v 1.70 2021/04/27 14:48:29 thorpej Exp $ */
/*
* Copyright (c) 1995 Leo Weppelman
@@ -30,8 +30,10 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#define __SUBR_AUTOCONF_PRIVATE /* XXX atari_config_found() */
+
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: autoconf.c,v 1.69 2021/04/24 23:36:29 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: autoconf.c,v 1.70 2021/04/27 14:48:29 thorpej Exp $");
#include "opt_md.h"
@@ -138,14 +140,21 @@ simple_devprint(void *aux, const char *p
* by checking for NULL.
*/
int
-atari_config_found(cfdata_t pcfp, device_t parent, void *aux, cfprint_t pfn)
+atari_config_found(cfdata_t pcfp, device_t parent, void *aux, cfprint_t pfn,
+ cfarg_t tag, ...)
{
struct device temp;
cfdata_t cf;
const struct cfattach *ca;
+ int rv = 0;
+ va_list ap;
+
+ va_start(ap, tag);
- if (atari_realconfig)
- return config_found(parent, aux, pfn, CFARG_EOL) != NULL;
+ if (atari_realconfig) {
+ rv = config_vfound(parent, aux, pfn, tag, ap) != NULL;
+ goto out;
+ }
memset(&temp, 0, sizeof(temp));
if (parent == NULL)
@@ -155,16 +164,18 @@ atari_config_found(cfdata_t pcfp, device
parent->dv_cfdriver = config_cfdriver_lookup(pcfp->cf_name);
parent->dv_unit = pcfp->cf_unit;
- if ((cf = config_search(parent, aux, CFARG_EOL)) != NULL) {
+ if ((cf = config_vsearch(parent, aux, tag, ap)) != NULL) {
ca = config_cfattach_lookup(cf->cf_name, cf->cf_atname);
if (ca != NULL) {
(*ca->ca_attach)(parent, NULL, aux);
- parent->dv_cfdata = NULL;
- return 1;
+ rv = 1;
+ goto out;
}
}
parent->dv_cfdata = NULL;
- return 0;
+ out:
+ va_end(ap);
+ return rv;
}
/*
@@ -192,9 +203,9 @@ config_console(void)
* some setup for the 'grf-side'. This make it possible to use
* a PCI card for both wscons and grfabs.
*/
- atari_config_found(cf, NULL, __UNCONST("pcib") , NULL);
- atari_config_found(cf, NULL, __UNCONST("isab") , NULL);
- atari_config_found(cf, NULL, __UNCONST("grfbus"), NULL);
+ atari_config_found(cf, NULL, __UNCONST("pcib") , NULL, CFARG_EOL);
+ atari_config_found(cf, NULL, __UNCONST("isab") , NULL, CFARG_EOL);
+ atari_config_found(cf, NULL, __UNCONST("grfbus"), NULL, CFARG_EOL);
}
/*
Index: src/sys/arch/atari/atari/device.h
diff -u src/sys/arch/atari/atari/device.h:1.6 src/sys/arch/atari/atari/device.h:1.7
--- src/sys/arch/atari/atari/device.h:1.6 Sat Oct 27 17:17:42 2012
+++ src/sys/arch/atari/atari/device.h Tue Apr 27 14:48:29 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: device.h,v 1.6 2012/10/27 17:17:42 chs Exp $ */
+/* $NetBSD: device.h,v 1.7 2021/04/27 14:48:29 thorpej Exp $ */
/*
* Copyright (c) 1995 Leo Weppelman
@@ -39,7 +39,7 @@
* *and know it* (i.e. everything is really tight certain params won't be
* passed in some cases and the devices will deal with it)
*/
-int atari_config_found(cfdata_t, device_t, void *, cfprint_t);
+int atari_config_found(cfdata_t, device_t, void *, cfprint_t, cfarg_t, ...);
int simple_devprint(void *, const char *);
int matchname(char *, char *);
/*
Index: src/sys/arch/atari/dev/grf.c
diff -u src/sys/arch/atari/dev/grf.c:1.51 src/sys/arch/atari/dev/grf.c:1.52
--- src/sys/arch/atari/dev/grf.c:1.51 Sat Apr 24 23:36:29 2021
+++ src/sys/arch/atari/dev/grf.c Tue Apr 27 14:48:29 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: grf.c,v 1.51 2021/04/24 23:36:29 thorpej Exp $ */
+/* $NetBSD: grf.c,v 1.52 2021/04/27 14:48:29 thorpej Exp $ */
/*
* Copyright (c) 1995 Leo Weppelman
@@ -46,7 +46,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: grf.c,v 1.51 2021/04/24 23:36:29 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: grf.c,v 1.52 2021/04/27 14:48:29 thorpej Exp $");
#include <sys/param.h>
#include <sys/proc.h>
@@ -147,9 +147,10 @@ grfbusattach(device_t parent, device_t s
grf_auxp.busprint = grfbusprint;
grf_auxp.from_bus_match = 1;
- if (self == NULL) /* Console init */
- atari_config_found(cfdata_gbus, NULL, &grf_auxp, grfbusprint);
- else {
+ if (self == NULL) { /* Console init */
+ atari_config_found(cfdata_gbus, NULL, &grf_auxp, grfbusprint,
+ CFARG_EOL);
+ } else {
printf("\n");
config_found(self, &grf_auxp, grfbusprint, CFARG_EOL);
}
Index: src/sys/arch/atari/dev/ite_cc.c
diff -u src/sys/arch/atari/dev/ite_cc.c:1.41 src/sys/arch/atari/dev/ite_cc.c:1.42
--- src/sys/arch/atari/dev/ite_cc.c:1.41 Sat Apr 24 23:36:29 2021
+++ src/sys/arch/atari/dev/ite_cc.c Tue Apr 27 14:48:29 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: ite_cc.c,v 1.41 2021/04/24 23:36:29 thorpej Exp $ */
+/* $NetBSD: ite_cc.c,v 1.42 2021/04/27 14:48:29 thorpej Exp $ */
/*
* Copyright (c) 1996 Leo Weppelman
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ite_cc.c,v 1.41 2021/04/24 23:36:29 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ite_cc.c,v 1.42 2021/04/27 14:48:29 thorpej Exp $");
#include <sys/param.h>
#include <sys/conf.h>
@@ -230,7 +230,8 @@ grfccattach(device_t parent, device_t se
grf_viewsync(&congrf);
/* Attach console ite */
- atari_config_found(cfdata_grf, &itedev, &congrf, grfccprint);
+ atari_config_found(cfdata_grf, &itedev, &congrf, grfccprint,
+ CFARG_EOL);
return;
}
Index: src/sys/arch/atari/dev/ite_et.c
diff -u src/sys/arch/atari/dev/ite_et.c:1.32 src/sys/arch/atari/dev/ite_et.c:1.33
--- src/sys/arch/atari/dev/ite_et.c:1.32 Sat Apr 24 23:36:29 2021
+++ src/sys/arch/atari/dev/ite_et.c Tue Apr 27 14:48:29 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: ite_et.c,v 1.32 2021/04/24 23:36:29 thorpej Exp $ */
+/* $NetBSD: ite_et.c,v 1.33 2021/04/27 14:48:29 thorpej Exp $ */
/*
* Copyright (c) 1996 Leo Weppelman.
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ite_et.c,v 1.32 2021/04/24 23:36:29 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ite_et.c,v 1.33 2021/04/27 14:48:29 thorpej Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -204,7 +204,8 @@ grfetattach(device_t parent, device_t se
grf_viewsync(&congrf);
/* Attach console ite */
- atari_config_found(cfdata_grf, &itedev, &congrf, grfetprint);
+ atari_config_found(cfdata_grf, &itedev, &congrf, grfetprint,
+ CFARG_EOL);
return;
}
Index: src/sys/kern/subr_autoconf.c
diff -u src/sys/kern/subr_autoconf.c:1.278 src/sys/kern/subr_autoconf.c:1.279
--- src/sys/kern/subr_autoconf.c:1.278 Sat Apr 24 23:37:00 2021
+++ src/sys/kern/subr_autoconf.c Tue Apr 27 14:48:28 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: subr_autoconf.c,v 1.278 2021/04/24 23:37:00 thorpej Exp $ */
+/* $NetBSD: subr_autoconf.c,v 1.279 2021/04/27 14:48:28 thorpej Exp $ */
/*
* Copyright (c) 1996, 2000 Christopher G. Demetriou
@@ -76,8 +76,10 @@
* @(#)subr_autoconf.c 8.3 (Berkeley) 5/17/94
*/
+#define __SUBR_AUTOCONF_PRIVATE /* see <sys/device.h> */
+
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_autoconf.c,v 1.278 2021/04/24 23:37:00 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_autoconf.c,v 1.279 2021/04/27 14:48:28 thorpej Exp $");
#ifdef _KERNEL_OPT
#include "opt_ddb.h"
@@ -168,8 +170,6 @@ struct alldevs_foray {
static char *number(char *, int);
static void mapply(struct matchinfo *, cfdata_t);
-static device_t config_vattach(device_t, cfdata_t, void *, cfprint_t, cfarg_t,
- va_list);
static void config_devdelete(device_t);
static void config_devunlink(device_t, struct devicelist *);
static void config_makeroom(int, struct cfdriver *);
@@ -1113,7 +1113,7 @@ config_get_cfargs(cfarg_t tag,
* an arbitrary function to all potential children (its return value
* can be ignored).
*/
-static cfdata_t
+cfdata_t
config_vsearch(device_t parent, void *aux, cfarg_t tag, va_list ap)
{
cfsubmatch_t fn;
@@ -1224,7 +1224,7 @@ static const char * const msgs[3] = { ""
* functions) and attach it, and return its device_t. If the device was
* not configured, call the given `print' function and return NULL.
*/
-static device_t
+device_t
config_vfound(device_t parent, void *aux, cfprint_t print, cfarg_t tag,
va_list ap)
{
@@ -1689,7 +1689,7 @@ config_add_attrib_dict(device_t dev)
/*
* Attach a found device.
*/
-static device_t
+device_t
config_vattach(device_t parent, cfdata_t cf, void *aux, cfprint_t print,
cfarg_t tag, va_list ap)
{
Index: src/sys/sys/device.h
diff -u src/sys/sys/device.h:1.168 src/sys/sys/device.h:1.169
--- src/sys/sys/device.h:1.168 Sat Apr 24 23:37:01 2021
+++ src/sys/sys/device.h Tue Apr 27 14:48:28 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: device.h,v 1.168 2021/04/24 23:37:01 thorpej Exp $ */
+/* $NetBSD: device.h,v 1.169 2021/04/27 14:48:28 thorpej Exp $ */
/*
* Copyright (c) 2021 The NetBSD Foundation, Inc.
@@ -590,6 +590,17 @@ device_t config_attach(device_t, cfdata_
int config_match(device_t, cfdata_t, void *);
int config_probe(device_t, cfdata_t, void *);
+#if defined(__SUBR_AUTOCONF_PRIVATE)
+/*
+ * XXX Some ports abuse the internals of autoconfiguration, so we need
+ * XXX provide these symbols to them for the time being.
+ */
+cfdata_t config_vsearch(device_t, void *, cfarg_t, va_list);
+device_t config_vfound(device_t, void *, cfprint_t, cfarg_t, va_list);
+device_t config_vattach(device_t, cfdata_t, void *, cfprint_t, cfarg_t,
+ va_list);
+#endif /* __SUBR_AUTOCONF_PRIVATE */
+
bool ifattr_match(const char *, const char *);
device_t config_attach_pseudo(cfdata_t);