deblob-2.6.31-libre1 scripts/v2.6.31-libre1
authorJason Self <j@jxself.org>
Tue, 5 Feb 2019 02:19:44 +0000 (18:19 -0800)
committerJason Self <j@jxself.org>
Tue, 5 Feb 2019 02:19:44 +0000 (18:19 -0800)
deblob-2.6.31
deblob-check

index 520e345d1f15686ce2f0b5f04d0028cc6277f864..2b51f4891741797af3c2729bc8face35e891ed14 100755 (executable)
@@ -2,6 +2,7 @@
 
 #    Copyright (C) 2008, 2009 Alexandre Oliva <lxoliva@fsfla.org>
 #    Copyright (C) 2008 Jeff Moe
+#    Copyright (C) 2009 Rubén Rodríguez <ruben@gnu.org>
 #
 #    This program is free software; you can redistribute it and/or modify
 #    it under the terms of the GNU General Public License as published by
 
 # 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.31 extra=
-
-fatal () {
-  echo "$@"
-  exit 1
-}
+kver=2.6.31 extra=1
 
 case $1 in
---force) die () { echo ERROR: "$@": ignored >&2; }; forced=:; shift;;
-*) die () { fatal "$@"; }; forced=false;;
+--force)
+  echo "WARNING: Using the force, ignored errors will be" >&2
+  die () {
+    echo ERROR: "$@" >&2
+    errors=:
+  }
+  forced=: errors=false
+  shift
+  ;;
+*)
+  die () {
+    echo ERROR: "$@" >&2
+    echo Use --force to ignore
+    exit 1
+  }
+  forced=false errors=false
+  ;;
 esac
 
 check=`echo "$0" | sed 's,[^/]*$,,;s,^$,.,;s,/*$,,'`/deblob-check
@@ -68,129 +79,129 @@ else
   have_check=:
 fi
 
+filetest () {
+  [ -f $1 ]
+}
+
 announce () {
-       echo
-       echo "$@"
+  echo
+  echo "$@"
 }
 
 clean_file () {
-       #$1 = filename
-       if test ! -f $1; then
-               die $1 does not exist, something is wrong
-       fi
-       rm $1
-       echo $1: removed
+  #$1 = filename
+  filetest $1 || return
+  rm $1
+  echo $1: removed
 }
 
 check_changed () {
-       if test ! -f $1; then
-               die $1 does not exist, something is wrong
-       elif cmp $1.deblob $1 > /dev/null; then
-               die $1 did not change, something is wrong
-       fi
-       mv $1.deblob $1
+  #$1 = filename
+  if cmp $1.deblob $1 > /dev/null; then
+    rm $1.deblob
+    die $1 did not change, something is wrong && return 1
+  fi
+  mv $1.deblob $1
 }
 
 clean_blob () {
-       #$1 = filename
-       if $have_check; then
-           if test ! -f $1; then
-               die $1 does not exist, something is wrong
-           fi
-           name=$1
-           set fnord "$@" -d
-           shift 2
-           $check "$@" -i linux-$kver $name > $name.deblob
-           echo $name: removed blobs
-           check_changed $name
-       else
-           clean_file $1
-       fi
+  #$1 = filename
+  filetest $1 || return
+  if $have_check; then
+    name=$1
+    set fnord "$@" -d
+    shift 2
+    $check "$@" -i linux-$kver $name > $name.deblob
+    check_changed $name && echo $name: removed blobs
+  else
+    clean_file $1
+  fi
 }
 
 dummy_blob () {
-       #$1 = filename
-       if test -f $1; then
-           die $1 exists, something is wrong
-       elif test ! -f firmware/Makefile; then
-           die firmware/Makefile does not exist, something is wrong
-       fi
-
-       clean_sed "s,`echo $1 | sed s,^firmware/,,`,\$(DEBLOBBED),g" \
-         firmware/Makefile "dropped $1"
+  #$1 = filename
+  if test -f $1; then
+    die $1 exists, something is wrong && return
+  elif test ! -f firmware/Makefile; then
+    die firmware/Makefile does not exist, something is wrong && return
+  fi
+
+  clean_sed "s,`echo $1 | sed s,^firmware/,,`,\$(DEBLOBBED),g" \
+    firmware/Makefile "dropped $1"
 }
 
 clean_fw () {
-       #$1 = firmware text input, $2 = firmware output
-       if test ! -f $1; then
-               die $1 does not exist, something is wrong
-       elif test -f $2; then
-               die $2 exists, something is wrong
-       fi
-       clean_blob $1 -s 4
-       dummy_blob $2
+  #$1 = firmware text input, $2 = firmware output
+  filetest $1 || return
+  if test -f $2; then
+    die $2 exists, something is wrong && return
+  fi
+  clean_blob $1 -s 4
+  dummy_blob $2
 }
 
 drop_fw_file () {
-       #$1 = firmware text input, $2 = firmware output
-       if test ! -f $1; then
-               die $1 does not exist, something is wrong
-       elif test -f $2; then
-               die $2 exists, something is wrong
-       fi
-       clean_file $1
-       dummy_blob $2
+  #$1 = firmware text input, $2 = firmware output
+  filetest $1 || return
+  if test -f $2; then
+    die $2 exists, something is wrong && return
+  fi
+  clean_file $1
+  dummy_blob $2
 }
 
 clean_kconfig () {
-        #$1 = filename $2 = things to remove
-       case $1 in
-       -f)
-               shift
-               ;;
-       *)
-               if $have_check; then
-                       return
-               fi
-               ;;
-       esac
-       sed "/^config \\($2\\)\$/{p;i\
+  #$1 = filename $2 = things to remove
+  case $1 in
+  -f)
+    shift
+    ;;
+  *)
+    if $have_check; then
+      return
+    fi
+    ;;
+  esac
+  filetest $1 || return
+  sed "/^config \\($2\\)\$/{p;i\
        depends on NONFREE
 d;}" $1 > $1.deblob
-       echo $1: marked config $2 as depending on NONFREE
-       check_changed $1
+  check_changed $1 && echo $1: marked config $2 as depending on NONFREE
 }
 
 clean_mk () {
-       #$1 = config $2 = Makefile name
-       # We don't clean up Makefiles any more --lxoliva
-       # sed -i "/\\($1\\)/d" $2
-       # echo $2: removed $1 support
-       # check_changed $2
-       if sed -n "/\\($1\\)/p" $2 | grep . > /dev/null; then
-           :
-       else
-           die $2 does not contain matches for $1
-       fi
+  #$1 = config $2 = Makefile name
+  # We don't clean up Makefiles any more --lxoliva
+  # sed -i "/\\($1\\)/d" $2
+  # echo $2: removed $1 support
+  # check_changed $2
+  filetest $2 || return
+  if sed -n "/\\($1\\)/p" $2 | grep . > /dev/null; then
+    :
+  else
+    die $2 does not contain matches for $1
+  fi
 }
 
 clean_sed () {
-       #$1 = sed-script $2 = file $3 = comment
-       sed -e "$1" "$2" > "$2".deblob
-       echo $2: ${3-applied sed script $1}
-       check_changed "$2"
+  #$1 = sed-script $2 = file $3 = comment
+  filetest $2 || return
+  sed -e "$1" "$2" > "$2".deblob
+  check_changed $2 && echo $2: ${3-applied sed script $1} 
 }
 
 reject_firmware () {
-       #$1 = file
-       clean_sed '
+  #$1 = file
+  filetest $1 || return
+  clean_sed '
 s,request\(_ihex\)\?_firmware\(_nowait\)\?,reject_firmware\2,g
 ' "$1" 'disabled non-Free firmware-loading machinery'
 }
 
 maybe_reject_firmware () {
-       #$1 = file
-       clean_sed '
+  #$1 = file
+  filetest $1 || return
+  clean_sed '
 s,request_firmware\(_nowait\)\?,maybe_reject_firmware\1,g
 ' "$1" 'retain Free firmware-loading machinery, disabling non-Free one'
 }
@@ -203,8 +214,8 @@ undefine_macro () {
   macro=$1 repl=$2 msg=$3; shift 3
   for f in "$@"; do
     clean_sed "
-  s,^#define $macro .*\$,/*(DEBLOBBED)*/,;
-  s,$macro,$repl,g;
+s,^#define $macro .*\$,/*(DEBLOBBED)*/,;
+s,$macro,$repl,g;
 " "$f" "$msg"
   done
 }
@@ -255,18 +266,18 @@ for f in \
     sound/pci/cs46xx/imgs/cwcdma.asp \
 ; do
   if test ! $f; then
-    die $f is not present, something is amiss
+    die $f is not present, something is amiss && return
   fi
 done
 
 # Identify the tarball.
-clean_sed "
-s,^EXTRAVERSION.*,&-libre$extra,
+grep -q 'EXTRAVERSION.*-libre' Makefile ||
+clean_sed "s,^EXTRAVERSION.*,&-libre$extra,
 " Makefile 'added -libre to EXTRAVERSION'
 
 # Add reject_firmware and maybe_reject_firmware
-clean_sed '
-$i\
+grep -q _LINUX_LIBRE_FIRMWARE_H include/linux/firmware.h ||
+clean_sed '$i\
 #ifndef _LINUX_LIBRE_FIRMWARE_H\
 #define _LINUX_LIBRE_FIRMWARE_H\
 \
@@ -448,58 +459,58 @@ clean_mk CONFIG_DRM_MGA drivers/gpu/drm/Makefile
 
 announce DRM_R128 - "ATI Rage 128"
 clean_sed '
-/^static int r128_do_init_cce([^;]*$/,/^}$/{
-  /^   r128_cce_load_microcode(dev_priv);$/{
-    i\
-       DRM_ERROR("Missing Free microcode!\\n");\
-       dev->dev_private = (void *)dev_priv;\
-       r128_do_cleanup_cce(dev);\
-       return -EINVAL;
-  }
-}' drivers/gpu/drm/r128/r128_cce.c 'report missing Free microcode'
+/^static void r128_cce_load_microcode(drm_r128_private_t \* dev_priv)/i\
+#define r128_cce_load_microcode(dev_priv) \\\
+  do { \\\
+    DRM_ERROR("Missing Free microcode!\\n"); \\\
+    dev->dev_private = (void *)dev_priv; \\\
+    r128_do_cleanup_cce(dev); \\\
+    return -EINVAL; \\\
+  } while (0)
+' drivers/gpu/drm/r128/r128_cce.c 'report missing Free microcode'
 clean_blob drivers/gpu/drm/r128/r128_cce.c
 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_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 on resume'
+/^static void radeon_cp_load_microcode(drm_radeon_private_t \* dev_priv)/i\
+#define radeon_cp_load_microcode(dev_priv) \\\
+  do { \\\
+    DRM_ERROR("Missing Free microcode!\\n"); \\\
+    radeon_do_cleanup_cp(dev); \\\
+    return -EINVAL; \\\
+  } while (0)
+' drivers/gpu/drm/radeon/radeon_cp.c 'report missing Free microcode'
 clean_blob drivers/gpu/drm/radeon/radeon_cp.c
 clean_blob drivers/gpu/drm/radeon/radeon_microcode.h
 clean_sed '
-/^int r600_do_init_cp([^;]*$/,/^}$/{
-  /^           r[67]00_cp_load_microcode(dev_priv);$/{
-    i\
-               do {\
-                       DRM_ERROR("Missing Free microcode!\\n");\
-                       r600_do_cleanup_cp(dev);\
-                       return -EINVAL;\
-               } while (0);
-  }
-}' drivers/gpu/drm/radeon/r600_cp.c 'report missing Free microcode on init'
+/^static void r100_cp_load_microcode(struct radeon_device \*rdev)/i\
+#define r100_cp_load_microcode(rdev) \\\
+  do { \\\
+    DRM_ERROR("Missing Free microcode!\\n"); \\\
+    return -EINVAL; \\\
+  } while (0)
+' drivers/gpu/drm/radeon/r100.c 'report missing Free microcode'
+clean_blob drivers/gpu/drm/radeon/r100.c
 clean_sed '
-/^int r600_do_resume_cp([^;]*$/,/^}$/{
-  /^           r[67]00_cp_load_microcode(dev_priv);$/{
-    i\
-               DRM_ERROR("Missing Free microcode!\\n");\
-               return -EINVAL;
-  }
-}' drivers/gpu/drm/radeon/r600_cp.c 'report missing Free microcode on resume'
+/^static void r600_cp_load_microcode(drm_radeon_private_t \*dev_priv)/i\
+#define r600_cp_load_microcode(dev_priv) \\\
+  do { \\\
+    DRM_ERROR("Missing Free microcode!\\n"); \\\
+    r600_do_cleanup_cp(dev); \\\
+    return -EINVAL; \\\
+  } while (0)
+' drivers/gpu/drm/radeon/r600_cp.c 'report missing Free r600 microcode'
+clean_sed '
+/^static void r700_cp_load_microcode(drm_radeon_private_t \*dev_priv)/i\
+#define r700_cp_load_microcode(dev_priv) \\\
+  do { \\\
+    DRM_ERROR("Missing Free microcode!\\n"); \\\
+    r600_do_cleanup_cp(dev); \\\
+    return -EINVAL; \\\
+  } while (0)
+' drivers/gpu/drm/radeon/r600_cp.c 'report missing Free r700 microcode'
 clean_blob drivers/gpu/drm/radeon/r600_cp.c
 clean_blob drivers/gpu/drm/radeon/r600_microcode.h
 clean_kconfig -f drivers/gpu/drm/Kconfig 'DRM_RADEON'
@@ -1985,4 +1996,8 @@ clean_sed s,usb8388,whatever,g drivers/base/Kconfig 'removed blob name'
 clean_blob firmware/README.AddingFirmware
 clean_blob firmware/WHENCE
 
+if $errors; then
+  echo errors above were ignored because of --force >&2
+fi
+
 exit 0
index f817c05c52cab1ddbd75d3b18353e54710022ba5..c8b6fcc6fb303bf9a6ba4d478f687f6c2c02abeb 100755 (executable)
@@ -1,6 +1,6 @@
 #! /bin/sh
 
-# deblob-check version 2009-09-12
+# deblob-check version 2009-09-21
 # Inspired in gNewSense's find-firmware script.
 # Written by Alexandre Oliva <lxoliva@fsfla.org>
 
@@ -962,18 +962,16 @@ set_except () {
     blobname 'intelliport2\.bin' drivers/char/ip2/ip2main.c
 
     blob 'static[ ]unsigned[ ]char[ ]warp_g[24]00_t2\?gzs\?a\?f\?\[\][ ]=[ ][{][^{};]*[}][;]\([\n][\n]*static[ ]unsigned[ ]char[ ]warp_g[24]00_t2\?gzs\?a\?f\?\[\][ ]=[ ][{][^{};]*[}][;]\)*' drivers/gpu/drm/mga/mga_ucode.h
-    blob '#define[ ]\(MGA_WARP_CODE_ALIGN\|WARP_UCODE_\(SIZE\|INSTALL\)\)\([^\n]*\\[   ]*[\n]\)*[^\n]*' drivers/gpu/drm/mga/mga_warp.c
-    blob 'static[ ]const[ ]unsigned[ ]int[ ]mga_warp_g[24]00_microcode_size[ ]=[^;]*[;]' drivers/gpu/drm/mga/mga_warp.c
-    blob 'static[ ]int[ ]mga_warp_install_g[24]00_microcode[(][^{]*[)][\n][{][\n]\([^}]\|[^\n}][}]*\)*[\n][}][\n]' drivers/gpu/drm/mga/mga_warp.c
+    blob '\(#define[ ]WARP_UCODE_\(SIZE\|INSTALL\)[(][ ]*which\([^\n]*\\[      ]*[\n]\)*[^\n]*\|static[ ]const[ ]unsigned[ ]int[ ]mga_warp_g[24]00_microcode_size[ ]=[^;]*[;]\|static[ ]int[ ]mga_warp_install_g[24]00_microcode[(][^{]*[)][\n][{][\n]\([^}]\|[^\n}][}]*\)*[\n][}]\)\([\n][\n]*\(#define[ ]WARP_UCODE_\(SIZE\|INSTALL\)[(][ ]*which\([^\n]*\\[         ]*[\n]\)*[^\n]*\|static[ ]const[ ]unsigned[ ]int[ ]mga_warp_g[24]00_microcode_size[ ]=[^;]*[;]\|static[ ]int[ ]mga_warp_install_g[24]00_microcode[(][^{]*[)][\n][{][\n]\([^}]\|[^\n}][}]*\)*[\n][}]\)\)*' drivers/gpu/drm/mga/mga_warp.c
     blobna '\(case[ ]MGA_CARD_TYPE_G[^:]*:[    \n]*\)\+return[ ][^;]*mga_warp[^;]*microcode[^;]*[;]\([         \n]*\(case[ ]MGA_CARD_TYPE_G[^:]*:[     \n]*\)\+return[ ][^;]*mga_warp[^;]*microcode[^;]*[;][   ]*\)*' drivers/gpu/drm/mga/mga_warp.c
 
-    blob 'static[ ]u32[ ]r128_cce_microcode\[\][ ]=[ ][{][^{};]*[}][;]' drivers/gpu/drm/r128/r128_cce.c
-    blob 'static[ ]void[ ]r128_cce_load_microcode[(][^{]*[)][\n][{][\n]\([^}]\|[^\n}][}]*\)*[\n][}][\n]' drivers/gpu/drm/r128/r128_cce.c
-    blob '[    ]r128_cce_load_microcode[(][^;]*[)][;]' drivers/gpu/drm/r128/r128_cce.c
+    blob 'static[ ]u32[ ]r128_cce_microcode\[\][ ]=[ ][{][^;]*[}][;]' drivers/gpu/drm/r128/r128_cce.c
+    blob 'static[ ]void[ ]r128_cce_load_microcode[(][^{]*[)][\n][{][\n]\([^}]\|[^\n}][}]*\)*[\n][}]' drivers/gpu/drm/r128/r128_cce.c
+    # blobna 'R128_WRITE[(]R128_PM4_MICROCODE_DATA[HL],[\n      ]*r128_cce_microcode\[i[ ][*][ ]2\([ ][+][ ]1\)\?\][)]\([;][\n         ]*R128_WRITE[(]R128_PM4_MICROCODE_DATA[HL],[\n   ]*r128_cce_microcode\[i[ ][*][ ]2\([ ][+][ ]1\)\?\][)]\)*' drivers/gpu/drm/r128/r128_cce.c
 
-    blob 'static[ ]const[ ]u32[ ]R[SV0-9]*[05]_\(cp_microcode\[\]\[[23]\]\|pfp_microcode\[\]\)[ ]=[ ][{][^{};]*[}][;]\([\n][\n]*static[ ]const[ ]u32[ ]R[SV0-9]*[05]_\(cp_microcode\[\]\[[23]\]\|pfp_microcode\[\]\)[ ]=[ ][{][^{};]*[}][;]\)*' 'drivers/gpu/drm/radeon/\(radeon\|r600\)_microcode\.h'
-    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 'static[ ]const[ ]u32[ ]R[SV0-9]*[05]_\(c\|pf\)p_microcode\[\]\(\[[23]\]\)\?[ ]=[ ][{][^;]*[}][;]\([\n][\n]*static[ ]const[ ]u32[ ]R[SV0-9]*[05]_\(c\|pf\)p_microcode\[\]\(\[[23]\]\)\?[ ]=[ ][{][^;]*[}][;]\)*' 'drivers/gpu/drm/radeon/\(radeon\|r600\)_microcode\.h'
+    blob 'static[ ]void[ ]r\(adeon\|[167]00\)_cp_load_microcode[(][^{]*[)][\n][{][\n]\([^}]\|[^\n}][}]*\)*cp_microcode\([^}]\|[^\n}][}]*\)*[\n][}]' 'drivers/gpu/drm/radeon/r\(\(adeon\|600\)_cp\|100\)\.c'
+    # blobna 'RADEON_WRITE[(]R\(ADEON\|600\)_CP_\(ME_RAM\|PFP_UCODE\)_DATA[HL]\?,[\n    ]*R[SV0-9]*[05]_\(c\|pf\)p_microcode\[i\]\(\[[012]\]\)\?[)]\([;][\n    ]*RADEON_WRITE[(]R\(ADEON\|600\)_CP_\(ME_RAM\|PFP_UCODE\)_DATA[HL]\?,[\n         ]*R[SV0-9]*[05]_\(c\|pf\)p_microcode\[i\]\(\[[012]\]\)\?[)]\)*' 'drivers/gpu/drm/radeon/\(radeon\|r600\)_cp\.c'
 
     blob 'sub[ ]\(sp887[0x]\|tda1004\(5\|6\(lifeview\)\?\)\|av7110\|dec\(2\(00\|54\)0t\|3000s\)\|opera1\|vp7041\|dibusb\|nxt200[24]cx\(23\(1xx\|855\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\)[ ]*[{]\([^}]*\|[^\n][}]*\)[\n][}]\([\n][\n]*sub[ ]\(sp887[0x]\|tda1004\(5\|6\(lifeview\)\?\)\|av7110\|dec\(2\(00\|54\)0t\|3000s\)\|opera1\|vp7041\|dibusb\|nxt200[24]cx\(23\(1xx\|855\)\|18\)\|pvrusb2\|or51\(211\|132_\(qam\|vsb\)\)\|bluebird\|mpc718\)[ ]*[{]\([^}]*\|[^\n][}]*\)[\n][}]\)*' Documentation/dvb/get_dvb_firmware
     blobna 'Please[ ]use[^\n]*firmware[^\n]*sp887x[^\n]*\([\n][^\n]\+\)\+' Documentation/dvb/avermedia.txt
@@ -1944,8 +1942,6 @@ set_except () {
     defsnc 'const[ ]char[ ]_[zs]b_findmap\[\][ ]=' arch/s390/kernel/bitmap.c
     initnc '[  ][{][ ]CnINT2MSKR0,[ ]CnINT2MSKCR0[ ],[ ]32,' arch/sh/kernel/cpu/sh4a/setup-sh7786.c
     blobname 'solos-\(FPGA\|Firmware\)\.bin' drivers/atm/solos-pci.c
-    blob '\([/][*][ ]load[ ]r[67]00[ ]microcode\([^/]\|[^*/][/]*\)*[*][/][\n]\)\?static[ ]void[ ]r[67]00_cp_load_microcode[(][^{]*[)][\n][{][\n]\([^}]\|[^\n}][}]*\)*[\n][}][\n]' drivers/gpu/drm/radeon/r600_cp.c
-    blobna 'r[67]00_cp_load_microcode[(][^;]*[)][;]' drivers/gpu/drm/radeon/r600_cp.c
     defsnc 'static[ ]u16[ ]__initdata[ ]i2c_clk_div\[50\]\[2\][ ]=' drivers/i2c/busses/i2c-imx.c
     defsnc 'static[ ]const[ ]struct[ ]mpc_i2c_divider[ ]mpc_i2c_dividers_\(52xx\|8xxx\)\[\][ ]=' drivers/i2c/busses/i2c-mpc.c
     accept '[  ]const[ ]char[ ]\*fw_name[ ]=[ ]["]av7110[/]bootcode\.bin["][;]' drivers/media/dvb/ttpci/av7110_hw.c
@@ -1983,7 +1979,7 @@ set_except () {
     blobname '3826\.arm' 'drivers/\(net/wireless/p54/p54spi\|staging/stlc45xx/stlc45xx\)\.c'
     defsnc 'static[ ]unsigned[ ]char[ ]p54spi_eeprom\[\][ ]=' drivers/net/wireless/p54/p54spi_eeprom.h
     blobname '\(comedi[/]\)\?jr3pci\.idm' drivers/staging/comedi/drivers/jr3_pci.c
-    blobname 'usbdux\(fast\)\?_firmware\.hex' 'drivers/staging/comedi/drivers/usbdux\(fast\)\?\.c'
+    blobname 'usbdux\(fast\)\?_firmware\.bin' 'drivers/staging/comedi/drivers/usbdux\(fast\)\?\.c'
     blobname 'RT30xxEEPROM\.bin' drivers/staging/rt3070/common/eeprom.c
     blob '#include[    ]*["]\.\.[/]firmware.h["]' drivers/staging/rt3070/common/rtmp_init.c
     defsnc 'static[ ]const[ ]u8[ ]default_cal_\(channels\|rssi\)\[\][ ]=' drivers/staging/stlc45xx/stlc45xx.c
@@ -2050,6 +2046,14 @@ set_except () {
     defsnc 'static[ ]const[ ]u16[ ]wm8960_reg\[WM8960_CACHEREGNUM\][ ]=' sound/soc/codecs/wm8960.c
     # end of new in 2.6.31
     accept '[  ]*ramdisk[ ]=[ ]["][/]boot[/][^ ]*initrd[^ ]*\.img["]' Documentation/ia64/xen.txt
+
+    # in drm-*.patch, post-2.6.31
+    blobname 'matrox[/]g[24]00_warp\.fw' drivers/gpu/drm/mga/mga_warp.c
+    blobname 'r128[/]r128_cce\.bin' drivers/gpu/drm/r128/r128_cce.c
+    blobname 'radeon[/]R\([123]0\|[45]2\|S6[09]\)0_cp\.bin' drivers/gpu/drm/radeon/r100.c
+    blobname 'radeon[/]\(R\(60\|V6[1237]\|S7[1378]\)[05]\|%s\)_\(pfp\|me\)\.bin' drivers/gpu/drm/radeon/r600.c
+    defsnc 'const[ ]u32[ ]r[67]xx_default_state\[\] =' drivers/gpu/drm/radeon/r600_blit_shaders.c
+    defsnc 'struct nv17_tv_norm_params nv17_tv_norms\[NUM_TV_NORMS] =' drivers/gpu/drm/nouveau/nv17_tv_modes.c
     ;;
 
   */patch*2.6.30*)
@@ -2206,10 +2210,6 @@ set_except () {
     defsnc '#if[ ]0[\n][       ][{]0x30,[ ]0x0154,[ ]0x0008[}],' drivers/media/video/gspca/sunplus.c
     ;;
 
-  */drm-modesetting-radeon.patch)
-    defsnc 'static[ ]int[ ]atom_dst_to_src\[8\]\[4\][ ]=' drivers/gpu/drm/radeon/atom.c
-    ;;
-
   */linux*alsa*.patch)
     defsnc 'static[ ]u8[ ]tas3004_treble_table\[\][ ]=' sound/aoa/codecs/tas-basstreble.h
     defsnc 'static[ ]const[ ]unsigned[ ]char[ ]wm_vol\[256\][ ]=' sound/pci/ice1712/phase.c
@@ -2297,6 +2297,14 @@ set_except () {
     initnc 'const[ ]u\(8\|16\|32\)[ ]b43_ntab_\(\(adjustpower\|estimatepowerlt\|gainctl\|iqlt\|loftlt\|noisevar1\|tdi[24]0a\)[01]\|channelest\|frame\(lookup\|struct\)\|mcs\|pilot\|tdtrn\|tmap\)\[\][ ]='
     ;;
   */*drm*.patch)
+    defsnc 'const[ ]u32[ ]r[67]xx_default_state\[\] =' drivers/gpu/drm/radeon/r600_blit_shaders.c
+    defsnc 'struct nv17_tv_norm_params nv17_tv_norms\[NUM_TV_NORMS] =' drivers/gpu/drm/nouveau/nv17_tv_modes.c
+    defsnc 'static[ ]int[ ]atom_dst_to_src\[8\]\[4\][ ]=' drivers/gpu/drm/radeon/atom.c
+    blobname 'matrox[/]g[24]00_warp\.fw' drivers/gpu/drm/mga/mga_warp.c
+    blobname 'r128[/]r128_cce\.bin' drivers/gpu/drm/r128/r128_cce.c
+    blobname 'radeon[/]R\([123]0\|[45]2\|S6[09]\)0_cp\.bin' drivers/gpu/drm/radeon/r100.c
+    blobname 'radeon[/]\(R\(60\|V6[1237]\|S7[1378]\)[05]\|%s\)_\(pfp\|me\)\.bin' drivers/gpu/drm/radeon/r600.c
+
     # linux-2.6-drm-i915-modeset.patch, nouveau-drm*.patch,
     # drm-fedora9-rollup.patch
     initnc 'static[ ]const[ ]u32[ ]filter_table\[\][ ]=' drivers/char/drm/intel_tv.c
@@ -2308,7 +2316,7 @@ set_except () {
     # these are bits of code, obtained through mmio interactions.
     # This means these blobs are not source code, AND original authors
     # of the blobs have power to stop others from modifying them.
-    # Non-Free software, for sure.
+    # Non-Free Software, for sure.
 
     # initnc 'static[ ]uint32_t[ ]nv\(4[013467ace]\|49_4b\|8[46]\)_ctx_\(voodoo\|prog\)\[\][ ]=' 'drivers/char/drm/nv40_graph.c|.*'
     ;;