diff options
author | Max Laier <mlaier@FreeBSD.org> | 2006-01-29 02:52:42 +0000 |
---|---|---|
committer | Max Laier <mlaier@FreeBSD.org> | 2006-01-29 02:52:42 +0000 |
commit | 6aec1278dc6fd4790208608ee99bdc84dcf0b3da (patch) | |
tree | 079b229b1f501b3c6590ffcfca8239fa263fc270 /sys/conf | |
parent | 69e99c5d4c348234b9a40ff14d4586e44e74eb63 (diff) |
firmware(9) is a subsystem to load binary data into the kernel via a
specially crafted module. There are several handrolled sollutions to this
problem in the tree already which will be replaced with this. They include
iwi(4), ipw(4), ispfw(4) and digi(4).
No objection from: arch
MFC after: 2 weeks
X-MFC after: some drivers have been converted
Notes
Notes:
svn path=/head/; revision=154974
Diffstat (limited to 'sys/conf')
-rw-r--r-- | sys/conf/NOTES | 1 | ||||
-rw-r--r-- | sys/conf/files | 1 | ||||
-rw-r--r-- | sys/conf/kmod.mk | 28 |
3 files changed, 30 insertions, 0 deletions
diff --git a/sys/conf/NOTES b/sys/conf/NOTES index 65284c33a883..e6b139bd6c20 100644 --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -1187,6 +1187,7 @@ device nmdm #back-to-back tty devices device md #Memory/malloc disk device snp #Snoop device - to look at pty/vty/etc.. device ccd #Concatenated disk driver +device firmware #firmware(9) support # Kernel side iconv library options LIBICONV diff --git a/sys/conf/files b/sys/conf/files index b8832bfac782..243f110b4b19 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -1298,6 +1298,7 @@ kern/subr_clock.c optional genclock kern/subr_devstat.c standard kern/subr_disk.c standard kern/subr_eventhandler.c standard +kern/subr_firmware.c optional firmware kern/subr_hints.c standard kern/subr_kdb.c standard kern/subr_kobj.c standard diff --git a/sys/conf/kmod.mk b/sys/conf/kmod.mk index 90b79d841b74..5f90d0bcdbfc 100644 --- a/sys/conf/kmod.mk +++ b/sys/conf/kmod.mk @@ -36,6 +36,8 @@ # # SRCS List of source files. # +# FIRMWS List of firmware images in format filename:shortname:version +# # DESTDIR The tree where the module gets installed. [not set] # # +++ targets +++ @@ -119,6 +121,32 @@ CFLAGS+= -fno-omit-frame-pointer CFLAGS+= -mlongcall -fno-omit-frame-pointer .endif +.if defined(FIRMWS) +.if !exists(@) +${KMOD:S/$/.c/}: @ +.else +${KMOD:S/$/.c/}: @/tools/fw_stub.awk +.endif + ${AWK} -f @/tools/fw_stub.awk ${FIRMWS} -m${KMOD} -c${KMOD:S/$/.c/g} + +SRCS+= ${KMOD:S/$/.c/} +CLEANFILES+= ${KMOD:S/$/.c/} + +.for _firmw in ${FIRMWS} +${_firmw:C/\:.*$/.fwo/}: ${_firmw:C/\:.*$//} + @${ECHO} ${_firmw:C/\:.*$//} ${.ALLSRC:M*${_firmw:C/\:.*$//}} +.if !exists(${.CURDIR}/${_firmw:C/\:.*$//}) + ln -s ${.ALLSRC:M*${_firmw:C/\:.*$//}} ${_firmw:C/\:.*$//} + ${LD} -b binary ${LDFLAGS} -r -d -o ${.TARGET} ${_firmw:C/\:.*$//} + rm -f ${_firmw:C/\:.*$//} +.else + ${LD} -b binary ${LDFLAGS} -r -d -o ${.TARGET} ${_firmw:C/\:.*$//} +.endif + +OBJS+= ${_firmw:C/\:.*$/.fwo/} +.endfor +.endif + OBJS+= ${SRCS:N*.h:R:S/$/.o/g} .if !defined(PROG) |