From c7e9e00a366427d29d7b3e049b58a7169641f7dc Mon Sep 17 00:00:00 2001 From: khorben Date: Wed, 7 Sep 2022 00:29:23 +0000 Subject: emuxki(4): allow building as a module Tested on NetBSD/amd64 with a Sound Blaster Live! Value (CT4870) Note that this required setting outputs.master to the maximum value allowed (255) to get sound out, and then cranking the volume pretty high. Additional sound cards sponsored by the NetBSD Foundation; thanks! --- sys/dev/pci/emuxki.c | 42 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) (limited to 'sys/dev') diff --git a/sys/dev/pci/emuxki.c b/sys/dev/pci/emuxki.c index b1718d7a3ce..ccff2bf4064 100644 --- a/sys/dev/pci/emuxki.c +++ b/sys/dev/pci/emuxki.c @@ -1,4 +1,4 @@ -/* $NetBSD: emuxki.c,v 1.72 2022/08/29 09:04:27 khorben Exp $ */ +/* $NetBSD: emuxki.c,v 1.73 2022/09/07 00:29:23 khorben Exp $ */ /*- * Copyright (c) 2001, 2007 The NetBSD Foundation, Inc. @@ -38,10 +38,11 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: emuxki.c,v 1.72 2022/08/29 09:04:27 khorben Exp $"); +__KERNEL_RCSID(0, "$NetBSD: emuxki.c,v 1.73 2022/09/07 00:29:23 khorben Exp $"); #include #include +#include #include #include #include @@ -164,10 +165,10 @@ struct emuxki_softc { void (*pintr)(void *); void *pintrarg; audio_params_t play; - int pframesize; - int pblksize; - int plength; - int poffset; + uint32_t pframesize; + uint32_t pblksize; + uint32_t plength; + uint32_t poffset; struct dmamem *rmem; /* rec internal memory */ void (*rintr)(void *); @@ -1431,3 +1432,32 @@ emuxki_ac97_flags(void *hdl) return AC97_HOST_SWAPPED_CHANNELS; } + +MODULE(MODULE_CLASS_DRIVER, emuxki, "pci,audio"); + +#ifdef _MODULE +#include "ioconf.c" +#endif + +static int +emuxki_modcmd(modcmd_t cmd, void *opaque) +{ + int error = 0; + + switch (cmd) { + case MODULE_CMD_INIT: +#ifdef _MODULE + error = config_init_component(cfdriver_ioconf_emuxki, + cfattach_ioconf_emuxki, cfdata_ioconf_emuxki); +#endif + return error; + case MODULE_CMD_FINI: +#ifdef _MODULE + error = config_fini_component(cfdriver_ioconf_emuxki, + cfattach_ioconf_emuxki, cfdata_ioconf_emuxki); +#endif + return error; + default: + return ENOTTY; + } +} -- cgit