#! /bin/sh
-# deblob-check version 2009-03-18
+# deblob-check version 2009-03-19
# Inspired in gNewSense's find-firmware script.
# Written by Alexandre Oliva <lxoliva@fsfla.org>
set_sed_cmd () {
set_sedmain "" "" "
i\\
-$file
+$file\\
+/*(DEBLOB-\\
+ERROR)*/
q 1;"
}
;;
set_sed_cmd () {
set_sedmain "
i\\
-$file
+$file\\
+/*(DEBLOB-\\
+ERROR)*/
q 1;" "" "
i\\
-$file
+$file\\
+/*(DEBLOB-\\
+ERROR)*/
q 1;"
}
;;
set_sed_cmd () {
set_sedmain "
i\\
-$file
+$file\\
+/*(DEBLOB-\\
+ERROR)*/
q 1;"
}
;;
accept '[/][*][*][\n] [*] request_firmware_nowait: asynchronous version[^{]*[\n]{[\n]\([^}]\|[^\n}]}*\)*[\n]}[\n]' drivers/base/firmware_class.c
accept 'EXPORT_SYMBOL(request_firmware\(_nowait\)\?);' drivers/base/firmware_class.c
accept 'int request_firmware\(_nowait\)\?([^;]*);' include/linux/firmware.h
- accept 'static inline int request_firmware\(_nowait\)\?([^{]*)[\n]{[\n][\t]return -EINVAL;[\n]}[\n]' include/linux/firmware.h
- accept 'static inline int \(maybe_\)\?reject_firmware\(_nowait\)\?([^{;]*)[\n]{[\n]\([^}]\|[^\n}]}*\)*[\n]}[\n]' include/linux/firmware.h
+ accept 'static inline int request_firmware\(_nowait\)\?([^{]*)[\n]{[\n][\t]return -EINVAL;[\n]}' include/linux/firmware.h
+ accept 'static inline int[\n]\(maybe_\)\?reject_firmware\(_nowait\)\?([^{;]*)[\n]{[\n]\([^}]\|[^\n}]}*\)*[\n]}' include/linux/firmware.h
accept 'static inline int request_ihex_firmware\?([^{]*)[\n]{[\n]\([^}]\|[^\n}]}*\)*[\n]}[\n]' include/linux/ihex.h
ocomment '[/][*] Optional firmware\([^\n]*[\n] [*]\)*[^\n]* MODULE_FIRMWARE()'
blob ' sprintf([^;]*fore200[^;]*FW_EXT[^;]*);' drivers/atm/fore200e.c
blobname '\(pc\|sb\)a200e\(_ecd\)\?\.bin[12]?' drivers/atm/fore200e.c
- blobna 'The supplied firmware images.*fore.*Rebuild and reinstall[^.]*\.' Documentation/networking/fore200e.txt
+ blobna 'The supplied firmware images.*fore.*Rebuild and re-install[^.]*\.' Documentation/networking/fore200e.txt
blobname 'intelliport2\.bin' drivers/char/ip2/ip2main.c
blob ' r128_cce_load_microcode([^;]*);' drivers/gpu/drm/r128/r128_cce.c
blob 'static const u32 R[S0-9]*0_cp_microcode\[\]\[2\] = {[^{};]*};\([\n][\n]*static const u32 R[S0-9]*0_cp_microcode\[\]\[2\] = {[^{};]*};\)*' drivers/gpu/drm/radeon/radeon_microcode.h
- blob 'static void radeon_cp_load_microcode([^{]*)[\n]{[\n]\([^}]\|[^\n}]}*\)*[\n]}[\n]' drivers/gpu/drm/radeon/radeon_cp.c
- blob ' radeon_cp_load_microcode([^;]*);' drivers/gpu/drm/radeon/radeon_cp.c
+ blob '\([/][*] Load the microcode\([^/]\|[^*][/]*\)*[*][/][\n]\)\?static void radeon_cp_load_microcode([^{]*)[\n]{[\n]\([^}]\|[^\n}]}*\)*[\n]}[\n]' drivers/gpu/drm/radeon/radeon_cp.c
+ blobna 'radeon_cp_load_microcode([^;]*);' drivers/gpu/drm/radeon/radeon_cp.c
blob 'sub \(sp887[0x]\|tda1004\(5\|6\(lifeview\)\?\)\|av7110\|dec\(2\(00\|54\)0t\|3000s\)\|opera1\|vp7041\|dibusb\|nxt200[24]\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\) *{\([^}]*\|[^\n]}*\)[\n]}\([\n][\n]*sub \(sp887[0x]\|tda1004\(5\|6\(lifeview\)\?\)\|av7110\|dec\(2\(00\|54\)0t\|3000s\)\|opera1\|vp7041\|dibusb\|nxt200[24]\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\) *{\([^}]*\|[^\n]}*\)[\n]}\)*' Documentation/dvb/get_dvb_firmware
blobna 'Please use[^\n]*firmware[^\n]*sp887x[^\n]*\([\n][^\n]\+\)\+' Documentation/dvb/avermedia.txt
blobna 'static u16 \(sr\|twinax\)_edc\[\] = {[^;]*};' drivers/net/cxgb3/ael1002.c
blobna 'for ([^\n]*ARRAY_SIZE(\(sr\|twinax\)_edc)[^\n]*)[\n][^;]*mdio_write[^;]*;' drivers/net/cxgb3/ael1002.c
+ blobname 't3fw\(_protocol_sram\)\?-\(%d\|[0-9]*\)\.\(%d\|[0-9]*\)\.\(%d\|[0-9]*\)\.bin' drivers/net/cxgb3/cxgb3_main.c
blob '\([/][*][*]*[*][/][\n]*\)*\([/][*]\([^/]\|[^*/][/]*\)*Micro code\([^/]\|[^*/][/]*\)*8086:\([^/]\|[^*/][/]*\)*[*][/]\([\n]*[/][*]\([^/]\|[^*/][/]*\)*[*][/]\)*\|#define *D10\(1M\(_B\)\?\|1S\|2_E\)_\(CPUSAVER_\(TIMER\|BUNDLE\|MIN_SIZE\)_DWORD\|RCVBUNDLE_UCODE\)[ ]\(\\[\n]\|[^\n]\)*\)\([\n]*[/][*]\([^/]\|[^*/][/]*\|[*][/][\n]*[/][*]\)*Micro code\([^/]\|[^*/][/]*\)*8086:\([^/]\|[^*/][/]*\)*[*][/]\([\n]*[/][*]\([^/]\|[^*/][/]*\)*[*][/]\)*\|[\n][\n]*#define *D10\(1M\(_B\)\?\|1S\|2_E\)_\(CPUSAVER_\(TIMER\|BUNDLE\|MIN_SIZE\)_DWORD\|RCVBUNDLE_UCODE\)[ ]\(\\[\n]\|[^\n]\)*\)*' drivers/net/e100.c
blobna '\([/][*]\([^/]\|[*][/]*\)*[*][/][\n]* \)\(ucode\[opts->\(timer\|bundle\|min_size\)_dword\] .= [^;]*;[\n][\n]* \)*[^}]*UCODE_SIZE[^}]*cb_ucode[^}]*return;[\n] }' drivers/net/e100.c
accept 'int xc_request_firmware(struct xc *[*] *x);' arch/arm/mach-netx/include/mach/xc.h
accept 'int xc_request_firmware(struct xc *[*] *x)[\n]{' arch/arm/mach-netx/xc.c
+ accept ' dev_err(x->dev, "request_firmware failed\\n");' arch/arm/mach-netx/xc.c
accept 'EXPORT_SYMBOL(xc_request_firmware);' arch/arm/mach-netx/xc.c
accept ' if (xc_request_firmware(priv->xc)) {' drivers/net/netx-eth.c
blobname 'isi\(6\(08\|\(08\|16\)em\)\|46\(08\|16\)\)\.bin' drivers/char/isicom.c
- blobname 'c\(218t\|p204\|320t\)unx\.code' drivers/char/moxa.c
+ blobname 'c\(218t\|p204\|320t\)unx\.cod' drivers/char/moxa.c
accept ' printk(KERN_ERR "MOXA: request_firmware failed' drivers/char/moxa.c
# This driver enables the user to update the non-Free BIOS, but it
blobname 'lbtf_usb\.bin' drivers/net/wireless/libertas_tf/if_usb.c
blobname 'isl38\(86\|87usb_bare\|90usb\)' 'drivers/net/wireless/p54/p54\(pci\.c\|usb\.[ch]\)'
+ blob '[/][*] for isl3886 register definitions\([^/]\|[^*][/]*\)*[*][/]' drivers/net/wireless/p54/p54usb.h
blobna 'If you enable this\([^\n]\|[\n][ ]*[^ \n]\)*isl3890\([^\n]\|[\n][ ]*[^ \n]\)*' drivers/net/wireless/Kconfig
blobname 'isl38\(77\|86\|90\)' drivers/net/wireless/prism54/islpci_dev.c
blobname 'fsl_qe_ucode_uart_\(%u\|0-9]*\)_\(%u\|[0-9]*\)\(%u\|[0-9]*\)\.bin' drivers/serial/ucc_uart.c
- blobname 'atmel_at76c50\(3-\(i386[13]\|rfmd\(-acc\)\?\|5\(a\(mx\)\?\)\?-rfmd\(2958\)\?\)\)\.bin' drivers/staging/at76_usb/at76_usb.c
+ blobname 'atmel_at76c50\(3-\(i386[13]\|rfmd\(-acc\)\?\)\|5\(a\(mx\)\?\)\?-rfmd\(2958\)\?\)\.bin' 'drivers/\(staging\|net/wireless\)/at76_usb/at76_usb\.c'
blobname 'go7007\(fw\|tv\)\.bin' 'drivers/staging/go7007/\(go7007-\(driver\|usb\)\|saa7134-go7007\)\.c'
blobna 'You need to install[\n]*riptide\.hex[\n]\.[\n]' Documentation/sound/alsa/ALSA-Configuration.txt
blobname 'riptide\.hex' sound/pci/riptide/riptide.c
+ defsnc 'static union firmware_version firmware_versions\[\] =' sound/pci/riptide/riptide.c
blobname '\(multi\|digi\)face_firmware\(_rev11\)\?\.bin' sound/pci/rme9652/hdsp.c
defsnc 'static u8 serit_sp1511lhb_inittab\[\] =' drivers/media/dvb/frontends/si21xx.c
defsnc 'static u8 stv0288_inittab\[\] =' drivers/media/dvb/frontends/stv0288.c
+ blobname 'haup-ir-blaster\.bin' drivers/input/lirc/lirc_zilog.c
+
# Suspicious, deblob for now, until contributor responds.
# defsnc ' static u16 \(sr\|twinax\)_edc\[\] =' drivers/net/cxgb3/ael1002.cn
# Non-Free license in entire file.
;;
*/linux-2.6*-lirc.patch)
initnc 'const unsigned char map_table\[\] ='
+ blobname 'haup-ir-blaster\.bin' drivers/input/lirc/lirc_zilog.c
+ ;;
+ */linux-2.6*-at76.patch)
+ blobname 'atmel_at76c50\(3-\(i386[13]\|rfmd\(-acc\)\?\)\|5\(a\(mx\)\?\)\?-rfmd\(2958\)\?\)\.bin' drivers/net/wireless/at76_usb/at76_usb.c
;;
*/linux-2.6-modsign-mpilib.patch)
initnc 'const unsigned char __clz_tab\[\] ='
fi
sedmain="
+/^$/N;
/^[\n]\?;[/][*]\\(end .*\\)\\?[*][/];$/{
$4;
d;
}
/^;[/][*]begin /!{
: internal_error
+ $v:internal_error
i\\
Internal error at
p;
+ i\\
+/*(DEBLOB-\\
+ERROR)*/
q 2;
}
$v:reading file in
H;
g;
$4
-s/^\(;[/][*]begin [^\n]*[\n]\)*//;
-s/\\($bol;[/][*]\\(end [^\n]*\\)\\?[*][/];\\)*$//;
+$v:read all
+s/^\\(;[/][*]begin [^\n]*[\\n]\\)*//;
+s/\\($bol[\n]\?;[/][*]\\(end [^\\n]*\\)\\?[*][/];\\)*$//;
$v:???!blobfast
/$blobfast/!b clean;
$check_false_positives
: restart;
/[/][*](DEBLOB-$/ {
N;
+ /[/][*](DEBLOB-[\n]ERROR)[*][/]/{q 1;}
s,[/][*](DEBLOB-[\n]BED)[*][/],,
b restart;
-}'
- cmd='sed "$sedunbreak"'
+}
+p
+'
+ cmd='sed -n "$sedunbreak"'
set "$@" "$cmd"
# test $# = 1 || set "$@" "cat"