# For each kver release, start extra with an empty string, then count
# from 1 if changes are needed that require rebuilding the tarball.
-kver=2.6.28 extra=++
+kver=2.6.28 extra=3
fatal () {
echo "$@"
*) die () { fatal "$@"; }; forced=false;;
esac
-check=`echo $0 | sed 's,/[^/]*$,,'`/deblob-check
+check=`echo "$0" | sed 's,[^/]*$,,;s,^$,.,;s,/*$,,'`/deblob-check
if [ ! -f $check ] ; then
if $forced; then
die deblob-check script missing, will remove entire files
dummy_blob () {
#$1 = filename
if test -f $1; then
- fatal $1 exists, something is wrong
+ die $1 exists, something is wrong
elif test ! -f firmware/Makefile; then
- fatal firmware/Makefile does not exist, something is wrong
+ die firmware/Makefile does not exist, something is wrong
fi
clean_sed "s,`echo $1 | sed s,^firmware/,,`,\$(DEBLOBBED),g" \
clean_fw () {
#$1 = firmware text input, $2 = firmware output
if test ! -f $1; then
- fatal $1 does not exist, something is wrong
+ die $1 does not exist, something is wrong
elif test -f $2; then
- fatal $2 exists, something is wrong
+ die $2 exists, something is wrong
fi
clean_blob $1 -s 4
dummy_blob $2
drop_fw_file () {
#$1 = firmware text input, $2 = firmware output
if test ! -f $1; then
- fatal $1 does not exist, something is wrong
+ die $1 does not exist, something is wrong
elif test -f $2; then
- fatal $2 exists, something is wrong
+ die $2 exists, something is wrong
fi
clean_file $1
dummy_blob $2
' "$1" 'disabled non-Free firmware-loading machinery'
}
+undefine_macro () {
+ #$1 - macro name
+ #$2 - substitution
+ #$3 - message
+ #rest - file names
+ macro=$1 repl=$2 msg=$3; shift 3
+ for f in "$@"; do
+ clean_sed "
+ s,^#define $macro .*\$,/*(DEBLOBBED)*/,;
+ s,$macro,$repl,g;
+" "$f" "$msg"
+ done
+}
+
undefault_firmware () {
#$1 - pattern such that $1_DEFAULT_FIRMWARE is #defined to non-Free firmware
#$@ other than $1 - file names
macro="$1"_DEFAULT_FIRMWARE; shift
- for f in "$@"; do
- clean_sed "
- s,^#define $macro \"[^\"]*\",/*(DEBLOBBED)*/,;
- s,$macro,\"/*(DEBLOBBED)*/\",g" \
- "$f" "disabled non-Free firmware"
- done
+ undefine_macro "$macro" "\"/*(DEBLOBBED)*/\"" \
+ "disabled non-Free firmware" "$@"
}
# First, check that files that contain firmwares and their
#ifndef _LINUX_LIBRE_FIRMWARE_H\
#define _LINUX_LIBRE_FIRMWARE_H\
\
+#include <linux/device.h>\
+\
#define NONFREE_FIRMWARE "/*(DEBLOBBED)*/"\
\
static inline int\
clean_sed '
s,\([" ]\)request_firmware(,\1reject_firmware(,
' arch/arm/mach-netx/xc.c 'disabled non-Free firmware-loading machinery'
+clean_blob arch/arm/mach-netx/xc.c
+clean_kconfig arch/arm/Kconfig 'ARCH_NETX'
+clean_mk CONFIG_ARCH_NETX arch/arm/Makefile
#######
reject_firmware drivers/atm/fore200e.c
clean_blob drivers/atm/fore200e.c
clean_blob Documentation/networking/fore200e.txt
+clean_blob drivers/atm/.gitignore
+clean_blob Documentation/dontdiff
clean_kconfig drivers/atm/Kconfig 'ATM_FORE200E'
clean_mk CONFIG_ATM_FORE200E drivers/atm/Makefile
announce DRM_MGA - "Matrox g200/g400"
clean_blob drivers/gpu/drm/mga/mga_ucode.h
clean_blob drivers/gpu/drm/mga/mga_warp.c
-clean_kconfig drivers/gpu/drm/Kconfig 'DRM_MGA'
+clean_kconfig -f drivers/gpu/drm/Kconfig 'DRM_MGA'
clean_mk CONFIG_DRM_MGA drivers/gpu/drm/Makefile
announce DRM_R128 - "ATI Rage 128"
}
}' drivers/gpu/drm/r128/r128_cce.c 'report missing Free microcode'
clean_blob drivers/gpu/drm/r128/r128_cce.c
-clean_kconfig drivers/gpu/drm/Kconfig 'DRM_R128'
+clean_kconfig -f drivers/gpu/drm/Kconfig 'DRM_R128'
clean_mk CONFIG_DRM_R128 drivers/gpu/drm/Makefile
announce DRM_RADEON - "ATI Radeon"
clean_sed '
-/^static int radeon_do_init_cce([^;]*$/,/^}$/{
+/^static int radeon_do_init_cp([^;]*$/,/^}$/{
/^ radeon_cp_load_microcode(dev_priv);$/{
i\
DRM_ERROR("Missing Free microcode!\\n");\
radeon_do_cleanup_cp(dev);\
return -EINVAL;
}
-}
+}' drivers/gpu/drm/radeon/radeon_cp.c 'report missing Free microcode on init'
+clean_sed '
/^static int radeon_do_resume_cp([^;]*$/,/^}$/{
/^ radeon_cp_load_microcode(dev_priv);$/{
i\
DRM_ERROR("Missing Free microcode!\\n");\
return -EINVAL;
}
-}' drivers/gpu/drm/radeon/radeon_cp.c 'report missing Free microcode'
+}' drivers/gpu/drm/radeon/radeon_cp.c 'report missing Free microcode on resume'
clean_blob drivers/gpu/drm/radeon/radeon_cp.c
clean_blob drivers/gpu/drm/radeon/radeon_microcode.h
-clean_kconfig drivers/gpu/drm/Kconfig 'DRM_RADEON'
+clean_kconfig -f drivers/gpu/drm/Kconfig 'DRM_RADEON'
clean_mk CONFIG_DRM_RADEON drivers/gpu/drm/Makefile
clean_mk CONFIG_MEDIA_TUNER_XC2028 drivers/media/common/tuners/Makefile
announce MEDIA_TUNER_XC5000 - "Xceive XC5000 silicon tuner"
+undefine_macro 'XC5000_DEFAULT_FIRMWARE_SIZE' 0 \
+ 'removed non-Free firmware size' drivers/media/common/tuners/xc5000.c
undefault_firmware 'XC5000' drivers/media/common/tuners/xc5000.c
reject_firmware drivers/media/common/tuners/xc5000.c
clean_kconfig drivers/media/common/tuners/Kconfig 'MEDIA_TUNER_XC5000'
clean_mk CONFIG_DVB_USB_GP8PSK drivers/media/dvb/dvb-usb/Makefile
announce DVB_USB_M920X - "Uli m920x DVB-T USB2.0 support"
+reject_firmware drivers/media/dvb/dvb-usb/m920x.c
clean_blob drivers/media/dvb/dvb-usb/m920x.c
clean_kconfig drivers/media/dvb/dvb-usb/Kconfig 'DVB_USB_M920X'
clean_mk CONFIG_DVB_USB_M920X drivers/media/dvb/dvb-usb/Makefile
# dvb/frontends
announce DVB_AF9013 - "Afatech AF9013 demodulator"
-undefault_firmware 'AF9013' drivers/media/dvb/frontends/af9013.c
+undefault_firmware 'AF9013' \
+ drivers/media/dvb/frontends/af9013.c \
+ drivers/media/dvb/frontends/af9013_priv.h
reject_firmware drivers/media/dvb/frontends/af9013.c
-clean_blob drivers/media/dvb/frontends/af9013_priv.h
clean_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_AF9013'
clean_mk CONFIG_DVB_AF9013 drivers/media/dvb/frontends/Makefile
clean_mk CONFIG_DVB_OR51132 drivers/media/dvb/frontends/Makefile
announce DVB_OR51211 - "Oren OR51211 based"
+undefault_firmware 'OR51211' drivers/media/dvb/frontends/or51211.c
reject_firmware drivers/media/dvb/frontends/or51211.c
reject_firmware drivers/media/dvb/frontends/or51211.h
clean_blob drivers/media/dvb/frontends/or51211.c
clean_mk CONFIG_DVB_SP887X drivers/media/dvb/frontends/Makefile
announce DVB_TDA10048 - "Philips TDA10048HN based"
+undefine_macro 'TDA10048_DEFAULT_FIRMWARE_SIZE' 0 \
+ 'removed non-Free firmware size' drivers/media/dvb/frontends/tda10048.c
undefault_firmware 'TDA10048' drivers/media/dvb/frontends/tda10048.c
reject_firmware drivers/media/dvb/frontends/tda10048.c
clean_kconfig drivers/media/dvb/frontends/Kconfig 'DVB_TDA10048'
reject_firmware drivers/media/dvb/siano/smsusb.c
clean_blob drivers/media/dvb/siano/smscoreapi.c
clean_blob drivers/media/dvb/siano/smsusb.c
+clean_blob drivers/media/dvb/siano/sms-cards.c
clean_kconfig drivers/media/dvb/siano/Kconfig 'DVB_SIANO_SMS1XXX'
clean_mk CONFIG_DVB_SIANO_SMS1XXX drivers/media/dvb/siano/Makefile
reject_firmware drivers/media/video/cx18/cx18-av-firmware.c
reject_firmware drivers/media/video/cx18/cx18-firmware.c
clean_blob drivers/media/video/cx18/cx18-av-firmware.c
+clean_blob drivers/media/video/cx18/cx18-firmware.c
clean_kconfig drivers/media/video/cx18/Kconfig 'VIDEO_CX18'
clean_mk CONFIG_VIDEO_CX18 drivers/media/video/cx18/Makefile
/^#include "bnx2x_init\.h"/,/^$/{
/^$/i\
#define bnx2x_init_block(bp, start, end) \\\
- return printk(KERN_ERR PFX "%s: Missing Free firmware\\n", bp->dev->name),\
- -EINVAL;
+ return (printk(KERN_ERR PFX "%s: Missing Free firmware\\n", bp->dev->name),\\\
+ -EINVAL)
}' drivers/net/bnx2x_main.c 'report missing Free firmware'
clean_kconfig drivers/net/Kconfig 'BNX2X'
clean_mk CONFIG_BNX2X drivers/net/Makefile
clean_sed '
/^static int ael2005_setup_\(sr\|twinax\)_edc([^;]*$/,/^}$/{
/for.*ARRAY_SIZE(\(sr\|twinax\)_edc)/i\
-}\
CH_ERR(phy->adapter, "Missing Free firwmare\\n");\
err = -EINVAL;
}' drivers/net/cxgb3/ael1002.c 'report missing Free firmware'
/^ for ([^;]*ucode_opts[^{]*) {$/,/^ }$/ {
/^ }$/ i\
}\
- DPRINTK(DRV, ERR, "Missing Free firmware\\n");\
- /* ??? We should error out somehow. */\
+ DPRINTK(DRV, ERR, "Missing Free firmware, proceeding without\\n");\
goto noloaducode;
}
}
clean_file drivers/net/tokenring/3c359_microcode.h
clean_sed '
/^\(static int \)\?xl_hw_reset([^;]*$/,/^}/{
- /printk.*Uploading Microcode/i\
+ /start = .*mc_size/i\
printk(KERN_ERR "%s: Missing Free firmware\\n", dev->name);\
return -EINVAL;
}' drivers/net/tokenring/3c359.c 'report missing Free firmware'
clean_mk CONFIG_BT_HCIBT3C drivers/bluetooth/Makefile
+########
+# ISDN #
+########
+
+announce ISDN_DIVAS - "Support Eicon DIVA Server cards"
+clean_blob drivers/isdn/hardware/eicon/cardtype.h
+clean_blob drivers/isdn/hardware/eicon/dsp_defs.h
+clean_kconfig drivers/isdn/hardware/eicon/Kconfig 'ISDN_DIVAS'
+clean_mk CONFIG_ISDN_DIVAS drivers/isdn/hardware/eicon/Makefile
+
##########
# Serial #
##########
reject_firmware drivers/scsi/qla2xxx/qla_gbl.h
reject_firmware drivers/scsi/qla2xxx/qla_init.c
reject_firmware drivers/scsi/qla2xxx/qla_os.c
+clean_sed '
+/^config SCSI_QLA_FC$/,/^config /{
+ /^ By default, firmware/i\
+ /*(DEBLOBBED)*/
+ /^ By default, firmware/,/ftp:[/][/].*firmware[/]/d
+}' drivers/scsi/qla2xxx/Kconfig 'removed firmware notes'
clean_blob drivers/scsi/qla2xxx/qla_os.c
clean_kconfig drivers/scsi/qla2xxx/Kconfig 'SCSI_QLA_FC'
clean_mk CONFIG_SCSI_QLA_FC drivers/scsi/qla2xxx/Makefile
clean_mk CONFIG_SOUND_SB sound/oss/Makefile
announce SOUND_PSS - "PSS (AD1848, ADSP-2115, ESC614) support"
+clean_sed 's,^\( [*] .*synth"\)\.$,\1/*.,' sound/oss/pss.c 'avoid nested comments'
clean_blob sound/oss/pss.c
clean_kconfig sound/oss/Kconfig 'SOUND_PSS'
clean_sed '
clean_blob Documentation/sound/oss/PSS-updates
clean_file Documentation/dvb/get_dvb_firmware
clean_file Documentation/video4linux/extract_xc3028.pl
-clean_blob drivers/base/Kconfig
+clean_sed s,usb8388,whatever,g drivers/base/Kconfig 'removed blob name'
clean_blob firmware/WHENCE
exit 0