Skip to content

Instantly share code, notes, and snippets.

@lparkes
Last active October 10, 2023 18:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lparkes/bea894126a860562fecebd3c645b51cb to your computer and use it in GitHub Desktop.
Save lparkes/bea894126a860562fecebd3c645b51cb to your computer and use it in GitHub Desktop.
A patch to modularise the owtemp driver
diff -r f342fcb013e6 distrib/sets/lists/modules/mi
--- a/distrib/sets/lists/modules/mi Fri Nov 18 16:01:00 2022 +0000
+++ b/distrib/sets/lists/modules/mi Mon Nov 21 09:05:12 2022 +1300
@@ -361,6 +361,8 @@
./@MODULEDIR@/opencrypto/opencrypto.kmod modules-base-kernel kmod
./@MODULEDIR@/overlay modules-base-kernel kmod
./@MODULEDIR@/overlay/overlay.kmod modules-base-kernel kmod
+./@MODULEDIR@/owtemp modules-base-kernel kmod
+./@MODULEDIR@/owtemp/owtemp.kmod modules-base-kernel kmod
./@MODULEDIR@/pad modules-base-kernel kmod
./@MODULEDIR@/pad/pad.kmod modules-base-kernel kmod
./@MODULEDIR@/pciverbose modules-base-kernel kmod
diff -r f342fcb013e6 sys/dev/onewire/owtemp.c
--- a/sys/dev/onewire/owtemp.c Fri Nov 18 16:01:00 2022 +0000
+++ b/sys/dev/onewire/owtemp.c Mon Nov 21 09:05:12 2022 +1300
@@ -58,6 +58,7 @@
#include <sys/device.h>
#include <sys/kernel.h>
#include <sys/proc.h>
+#include <sys/module.h>
#include <dev/sysmon/sysmonvar.h>
@@ -316,3 +317,37 @@
/* convert to uK */
return (temp + 273150000);
}
+
+MODULE(MODULE_CLASS_DRIVER, owtemp, "onewire");
+
+#ifdef _MODULE
+#include "ioconf.c"
+#endif
+
+static int
+owtemp_modcmd(modcmd_t cmd, void *opaque)
+{
+ int error;
+
+ error = 0;
+ switch (cmd) {
+ case MODULE_CMD_INIT:
+#ifdef _MODULE
+ error = config_init_component(cfdriver_ioconf_owtemp,
+ cfattach_ioconf_owtemp, cfdata_ioconf_owtemp);
+ if (error)
+ aprint_error("%s: unable to init component\n",
+ owtemp_cd.cd_name);
+#endif
+ break;
+ case MODULE_CMD_FINI:
+#ifdef _MODULE
+ config_fini_component(cfdriver_ioconf_owtemp,
+ cfattach_ioconf_owtemp, cfdata_ioconf_owtemp);
+#endif
+ break;
+ default:
+ error = ENOTTY;
+ }
+ return error;
+}
diff -r f342fcb013e6 sys/modules/Makefile
--- a/sys/modules/Makefile Fri Nov 18 16:01:00 2022 +0000
+++ b/sys/modules/Makefile Mon Nov 21 09:05:12 2022 +1300
@@ -136,6 +136,7 @@
SUBDIR+= onewire
SUBDIR+= opencrypto
SUBDIR+= overlay
+SUBDIR+= owtemp
SUBDIR+= pad
SUBDIR+= pciverbose
SUBDIR+= pf
diff -r f342fcb013e6 sys/modules/owtemp/Makefile
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/modules/owtemp/Makefile Mon Nov 21 09:05:12 2022 +1300
@@ -0,0 +1,13 @@
+# $NetBSD$
+
+.include "../Makefile.inc"
+
+.PATH: ${S}/dev/onewire
+
+KMOD= owtemp
+IOCONF= owtemp.ioconf
+SRCS= owtemp.c
+
+CPPFLAGS+= -I${S}/onewire
+
+.include <bsd.kmodule.mk>
diff -r f342fcb013e6 sys/modules/owtemp/owtemp.ioconf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/modules/owtemp/owtemp.ioconf Mon Nov 21 09:05:12 2022 +1300
@@ -0,0 +1,8 @@
+# $NetBSD$
+
+ioconf owtemp
+
+include "conf/files"
+
+pseudo-root onewire*
+owtemp* at onewire?
+1300
@@ -58,6 +58,7 @@
#include <sys/device.h>
#include <sys/kernel.h>
#include <sys/proc.h>
+#include <sys/module.h>
#include <dev/sysmon/sysmonvar.h>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment