aboutsummaryrefslogtreecommitdiff
path: root/stand
diff options
context:
space:
mode:
authorEmmanuel Vadot <manu@FreeBSD.org>2021-11-14 14:32:00 +0000
committerEmmanuel Vadot <manu@FreeBSD.org>2021-11-14 14:41:30 +0000
commit4c0c353d0e48d06f82cae16aba02e5923794ba98 (patch)
treed45ef09d2a26034c509056a270d530e63efcbb8a /stand
parentd4874307fd5dc825e8a80adf7a531ed4bc43f235 (diff)
downloadsrc-4c0c353d0e48d06f82cae16aba02e5923794ba98.tar.gz
src-4c0c353d0e48d06f82cae16aba02e5923794ba98.zip
loader: Add more bus name to pnpautoload
Add ofwbus, iicbus and spibus to pnpautoload so modules under those buses will be loaded. On my rockpro64 now : OK pnpautoload -v Autoloading modules for simplebus Using DTB provided by EFI at 0x8100000. Autoloading modules for ofwbus /boot/kernel/rk_spi.ko text=0x14b2 text=0xd4c data=0x4d0+0x8 syms=[0x8+0xa98+0x8+0x807] /boot/kernel/dwwdt.ko text=0x12e2 text=0x78c data=0x4c8+0x10 syms=[0x8+0x990+0x8+0x6e1] Autoloading modules for iicbus Autoloading modules for spibus /boot/kernel/mx25l.ko text=0x1613 text=0x114c data=0x6e8+0x8 syms=[0x8+0xa08+0x8+0x665] loading required module 'fdt_slicer' /boot/kernel/fdt_slicer.ko text=0x95e text=0x340 data=0x290 syms=[0x8+0x6c0+0x8+0x4a0]
Diffstat (limited to 'stand')
-rw-r--r--stand/common/module.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/stand/common/module.c b/stand/common/module.c
index e6567c735f36..f28771396af0 100644
--- a/stand/common/module.c
+++ b/stand/common/module.c
@@ -446,7 +446,7 @@ command_pnpload(int argc, char *argv[])
#if defined(LOADER_FDT_SUPPORT)
static void
-pnpautoload_simplebus(void) {
+pnpautoload_fdt_bus(const char *busname) {
const char *pnpstring;
const char *compatstr;
char *pnpinfo = NULL;
@@ -464,7 +464,7 @@ pnpautoload_simplebus(void) {
pnplen += strlen(compatstr) + 1;
asprintf(&pnpinfo, "compat=%s", compatstr);
- module = mod_searchmodule_pnpinfo("simplebus", pnpinfo);
+ module = mod_searchmodule_pnpinfo(busname, pnpinfo);
if (module) {
error = mod_loadkld(module, 0, NULL);
if (error)
@@ -480,12 +480,15 @@ pnpautoload_simplebus(void) {
struct pnp_bus {
const char *name;
- void (*load)(void);
+ void (*load)(const char *busname);
};
struct pnp_bus pnp_buses[] = {
#if defined(LOADER_FDT_SUPPORT)
- {"simplebus", pnpautoload_simplebus},
+ {"simplebus", pnpautoload_fdt_bus},
+ {"ofwbus", pnpautoload_fdt_bus},
+ {"iicbus", pnpautoload_fdt_bus},
+ {"spibus", pnpautoload_fdt_bus},
#endif
};
@@ -528,8 +531,8 @@ command_pnpautoload(int argc, char *argv[])
continue;
}
if (verbose)
- printf("Autoloading modules for simplebus\n");
- pnp_buses[i].load();
+ printf("Autoloading modules for %s\n", pnp_buses[i].name);
+ pnp_buses[i].load(pnp_buses[i].name);
match = 1;
}
if (match == 0)